Détails du package

smp-cleanup-doublon-on-waptserver

retour Revenir à la liste des packages

smp-cleanup-doublon-on-waptserver

Fichier control :

package           : smp-cleanup-doublon-on-waptserver
version           : 4
architecture      : all
section           : base
priority          : optional
name              : 
categories        : 
maintainer        : Simon Fonteneau
description       : NOT FOR INSTALL ! A script that cleans duplicate machines in the wapt database when you modify the unique key. Example: when use_fqdn_as_uuid or random uuid is chosen. Be careful, the script does not recreate the packages of the machine.
depends           : 
conflicts         : 
maturity          : SCRIPT
locale            : 
target_os         : 
min_os_version    : 
max_os_version    : 
min_wapt_version  : 
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : PAS POUR UNE INSTALLATION ! Un script qui nettoie les machines en double dans la base de données wapt lorsque vous modifiez la clé unique. Exemple: lorsque use_fqdn_as_uuid ou lorsque uuid aléatoire est choisi. Attention, le script ne recrée pas les paquets machine.
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : 
keywords          : 
licence           : 
homepage          : 
package_uuid      : 2fc3bef9-9e28-4ee2-aafc-92c8dbb855d6
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
signer            : wapt.lesfourmisduweb.org
signer_fingerprint: 1e54425be03a2a3ea1a264b40d984c31f17a6a489a3b722acb993cbf6561e903
signature         : V5Mlz25slM4/0qQoMMNAWVbadlyg3yYtI2F8MG118jmlWZEjFruOHADDFQwzRl/+CZUHjIe2zveiIGIDwLVEAXFo0A+Mj6OIXU+/lvPJ3WP5q7FxzLLjKH1oSCmAkraDYoJ82mcfBi49LNG7F5Af1B5G40wIYKQBPqEXIuCoHlTHLZxkMRij2BVWQOP+4MKbx9cQc9cUknNE0/DNOP5qBWNHS94amUpEooCGo+ICai1YAl151ButsFx2pV645XH9bE5Ypk5LCKq5io1zc0DuJmIg+z+/KOBpRyzI57PPB040yio2sPhv57JFuB5pdYOkRu2aGgHtjAsR99ZSGV94Uw==
signature_date    : 2020-07-04T11:04:27.294000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_os_version,max_os_version,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,signer,signer_fingerprint,signature_date,signed_attributes



Fichier setup.py :

# -*- coding: utf-8 -*-
from setuphelpers import *
import waptguihelper
import json
import requests

uninstallkey = []

dryrun = False

print('')

urlserver = inifile_readstring(makepath(install_location('WAPT_is1'),'wapt-get.ini'),'global','wapt_server')
credentials_url = waptguihelper.login_password_dialog('Credentials for wapt server',urlserver,'admin','')
data = json.loads(wgets(r'https://%s:%s@%s/api/v1/hosts?columns=uuid,wmi/Win32_ComputerSystemProduct/UUID,host_info&limit=10000' % (credentials_url['user'],credentials_url['password'],urlserver.replace('https://',''))))

def install():
    pass

def delete_all_doublon():

    dict_uniq_last_seen={}
    dict_uniq_uuid={}

    for pc in data['result']:
        uniq = pc['wmi/Win32_ComputerSystemProduct/UUID'] + pc['host_info']['computer_fqdn'].lower()

        lastseen = pc['last_seen_on']
        uuid = pc['uuid']

        if uniq in dict_uniq_uuid :
            if dict_uniq_last_seen[uniq] > lastseen:
                delete_host(uuid)
                continue
            else:
                delete_host(dict_uniq_uuid[uuid])

        dict_uniq_last_seen[uniq] = lastseen
        dict_uniq_uuid[uniq] = uuid


def delete_host(uuid):
    print('Delete : %s' % uuid)
    if not dryrun :
        res =requests.post(r'https://%s:%s@%s/api/v3/hosts_delete' % (credentials_url['user'],credentials_url['password'],urlserver.replace('https://','')),json={'uuids': [uuid],'delete_inventory':True},verify=False)


if __name__ == '__main__':
    delete_all_doublon()