diff --git a/scripts/includes/GLPIAPI.py b/scripts/includes/GLPIAPI.py index 2b3b984..bf3e6d3 100644 --- a/scripts/includes/GLPIAPI.py +++ b/scripts/includes/GLPIAPI.py @@ -33,17 +33,21 @@ class GLPIAPI: "App-Token": self.AppToken } - def GetDevice(self, device): + def GetDevice(self, device, trashbin=False): + if(trashbin): + checkDeleted = 1 + else: + checkDeleted = 0 if(device.Imei != ''): # Recherche des appareils en fonction du numéro de série ou de l'imei # l'imei pouvant être dans le champ numéro de série ou les champs imei custom - search_parameter = f'is_deleted=0&criteria[0][field]=5&withindexes=true&criteria[0][searchtype]=contains&criteria[0][value]=^{device.SerialNumber}$'\ + search_parameter = f'is_deleted={checkDeleted}&criteria[0][field]=5&withindexes=true&criteria[0][searchtype]=contains&criteria[0][value]=^{device.SerialNumber}$'\ f'&criteria[1][link]=OR&criteria[1][field]=5&criteria[1][searchtype]=contains&criteria[1][value]=^{device.Imei}$'\ f'&criteria[2][link]=OR&criteria[2][field]=76667&criteria[2][searchtype]=contains&criteria[2][value]=^{device.Imei}$'\ f'&criteria[3][link]=OR&criteria[3][field]=76670&criteria[3][searchtype]=contains&criteria[3][value]=^{device.Imei}$' else: # Recherche des appareils en fonction du numéro de série seulement - search_parameter = f'is_deleted=0&criteria[0][field]=5&withindexes=true&criteria[0][searchtype]=contains&criteria[0][value]=^{device.SerialNumber}$' + search_parameter = f'is_deleted={checkDeleted}&criteria[0][field]=5&withindexes=true&criteria[0][searchtype]=contains&criteria[0][value]=^{device.SerialNumber}$' searchUri = f"{self.Server}/apirest.php/search/computer?{search_parameter}" search = requests.get(searchUri, headers=self.Headers) diff --git a/scripts/syncGLPI.py b/scripts/syncGLPI.py index 1d2a2b0..3b2898f 100644 --- a/scripts/syncGLPI.py +++ b/scripts/syncGLPI.py @@ -204,7 +204,13 @@ for device in devices: loggerDouble.error(f"{count} devices matching airwatch device {device.FriendlyName} (Airwatch id={device.Id}) in GLPI (GLPI ids = {', '.join(deviceID)}), skipping this device...") continue if(count == 0): - loggerMissing.error(f"Device {device.FriendlyName} (id={device.Id}) not found in GLPI, is it in the trash bin ? Skipping device...") + deviceIDTrash, dataTrash, countTrash = glpiapi.GetDevice(device, trashbin=True) + if(countTrash > 1): + loggerDouble.error(f"{countTrash} devices matching airwatch device {device.FriendlyName} (Airwatch id={device.Id}) in GLPI trashbin (GLPI ids = {', '.join(deviceIDTrash)}), skipping this device...") + elif(countTrash == 1): + logger.warning(f"Device {device.FriendlyName} (Airwatch id={device.Id}) in GLPI trashbin (GLPI id={deviceIDTrash}), skipping...") + else: + loggerMissing.error(f"Device {device.FriendlyName} (Airwatch id={device.Id}) not found in GLPI.") continue inventory = glpiapi.CreateInventoryForAirwatchDevice(device, data["1"], apps)