diff --git a/CHANGELOG.md b/CHANGELOG.md index 1196230..401613a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Список изменений в версии 11.0.4 +# Список изменений в версии 11.0.5 ## Добавлено @@ -8,4 +8,4 @@ ### Модуль decort_vm | Идентификатор
задачи | Описание | | --- | --- | -| BANS-1333 | Модуль завершал работу ошибкой при передаче параметров `disks` и `boot` для существующей ВМ. | +| BANS-1386 | Модуль завершал работу ошибкой при передаче параметров `disks.objects.pci_slot_num_hex` и `disks.objects.bus_num_hex` в формате hex. | diff --git a/module_utils/decort_utils.py b/module_utils/decort_utils.py index 8f196d1..9ef4b22 100644 --- a/module_utils/decort_utils.py +++ b/module_utils/decort_utils.py @@ -43,7 +43,7 @@ class DecortController(object): _api: sdk_types.API | None = None _usermanager_whoami_result: None | dict = None - ANSIBLE_MODULES_VERSION = '11.0.4' + ANSIBLE_MODULES_VERSION = '11.0.5' COMPATIBLE_SDK_MINOR_VERSION = '1.4' VM_RESIZE_NOT = 0 @@ -584,6 +584,12 @@ class DecortController(object): return int(datetime(**datetime_args).timestamp()) + @staticmethod + def _parse_hex(value: int | str) -> int: + if isinstance(value, int): + return value + return int(str(value).strip(), 16) + @staticmethod def sec_to_dt_str(sec: float, str_format: str = '%Y-%m-%d_%H-%M-%S') -> str: """ @@ -1150,12 +1156,16 @@ class DecortController(object): if ( ( aparam_disk['pci_slot_num_hex'] is not None - and str(comp_disk['pci_slot']) - != aparam_disk['pci_slot_num_hex'] + and int(comp_disk['pci_slot']) + != self._parse_hex( + aparam_disk['pci_slot_num_hex'] + ) ) or ( aparam_disk['bus_num_hex'] is not None - and str(comp_disk['bus_number']) - != aparam_disk['bus_num_hex'] + and int(comp_disk['bus_number']) + != self._parse_hex( + aparam_disk['bus_num_hex'] + ) ) ): disks_to_detach.append(aparam_disk) @@ -1176,11 +1186,11 @@ class DecortController(object): for disk in disks_to_attach: pci_slot_num = disk['pci_slot_num_hex'] if pci_slot_num is not None: - pci_slot_num = hex(int(pci_slot_num)) + pci_slot_num = hex(self._parse_hex(pci_slot_num)) bus_num = disk['bus_num_hex'] if bus_num is not None: - bus_num = hex(int(bus_num)) + bus_num = hex(self._parse_hex(bus_num)) api_params = { 'computeId': comp_dict['id'],