From 45355b3dd376e56407c58fc252da81e781cd1c95 Mon Sep 17 00:00:00 2001 From: sskarimov Date: Wed, 18 Dec 2024 14:08:14 +0300 Subject: [PATCH] 6.1.1 --- CHANGELOG.md | 82 ++---------------------------------- README.md | 2 +- library/decort_kvmvm.py | 32 +++++++------- module_utils/decort_utils.py | 12 ++++-- 4 files changed, 28 insertions(+), 100 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed50b7a..3825586 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,88 +1,12 @@ -# Список изменений в версии 6.1.0 +# Список изменений в версии 6.1.1 ## Добавлено -### Модуль decort_kvmvm -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-602 | Добавлена возможность изменения параметра `chipset` у существующей виртуальной машины. | -| BANS-620 | Добавлены параметры `cpu_pin`, `hp_backed`, `numa_affinity` для создания и изменения виртуальной машины. | -| BANS-622 | Добавлена возможность изменения параметра `description` у существующей виртуальной машины. | -| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.| -| BANS-625 | Добавлен параметр `custom_fields` для создания и изменения виртуальной машины.| - -### Модуль decort_k8s -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-598 | Добавлен параметр `master_chipset` для указания чипсета для master-узлов при создании кластера и параметр `workers.chipset` для указания чипсета для worker-узлов.
Для параметров `workers.annotations`, `workers.chipset`, `workers.ci_user_data`, `workers.cpu`, `workers.labels`, `workers.num`, `workers.ram`, `workers.taints` установлены значения по умолчанию при создании.| - -### Модуль decort_disk -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.| - -### Модуль decort_lb -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.| - -### Модуль decort_vins -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.| - -### Модуль decort_rg -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Добавлен параметр `description` в связи с переименованием из `annotation`.| - ## Удалено -### Модуль decort_group -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-656 | Удалён неиспользуемый ключ `config` в возвращаемом словаре. | -| BANS-201 | Удалены неиспользуемые параметры `annotation` и `description`.| - -### Модуль decort_disk -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.| - -### Модуль decort_kvmvm -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.| - -### Модуль decort_lb -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.| - -### Модуль decort_rg -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.| - -### Модуль decort_vins -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален параметр `annotation` в связи с переименованием в `description`.| - -### Модуль decort_bservice -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удалены неиспользуемые параметры `annotation` и `description`.| - -### Модуль decort_k8s -| Идентификатор
задачи | Описание | -| --- | --- | -| BANS-201 | Удален неиспользуемый параметр `annotation`.| - ## Исправлено - ### Модуль decort_kvmvm | Идентификатор
задачи | Описание | | --- | --- | -| BANS-9 | Исправлена ошибка, из-за которой модуль не устанавливал параметр `description` при создании виртуальной машины. | -| BANS-13 | Исправлена ошибка, из-за которой модуль не возвращал ошибку при попытке уменьшить размер загрузочного диска. | +| BANS-676 | При удалении ВМ, модуль завершал свою работу ошибкой запроса к API. | +| BANS-677 | Параметр `custom_fields` не устанавливался при создании ВМ без образа. | diff --git a/README.md b/README.md index 8699122..ea148fd 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ | Версия платформы | Версия модулей Ansible | |:----------------:|:--------------------------:| -| 4.1.0 | 6.0.x, 6.1.x | +| 4.1.0 | 6.0.x, 6.1.x | | 4.0.0 | 5.6.x, 5.5.x, 5.4.x, 5.3.x | | 3.8.8, 3.8.9 | 5.2.6 | | 3.8.7 | 5.2.5 | diff --git a/library/decort_kvmvm.py b/library/decort_kvmvm.py index 72c32e4..0887233 100644 --- a/library/decort_kvmvm.py +++ b/library/decort_kvmvm.py @@ -268,13 +268,6 @@ class decort_kvmvm(DecortController): if numa_affinity is None: numa_affinity = 'none' - if self.aparams['custom_fields'] is None: - custom_fields_disable = True - custom_fields_fields = None - else: - custom_fields_disable = self.aparams['custom_fields']['disable'] - custom_fields_fields = self.aparams['custom_fields']['fields'] - # if we get through here, all parameters required to create new Compute instance should be at hand # NOTE: KVM VM is created in HALTED state and must be explicitly started @@ -291,8 +284,7 @@ class decort_kvmvm(DecortController): chipset=self.amodule.params['chipset'], cpu_pin=cpu_pin, hp_backed=hp_backed, - numa_affinity=numa_affinity, - custom_fields=custom_fields_fields) + numa_affinity=numa_affinity) self.comp_should_exist = True # Originally we would have had to re-read comp_info after VM was provisioned @@ -340,7 +332,19 @@ class decort_kvmvm(DecortController): # NOTE: see NOTE above regarding libvirt "feature" and new VMs created in HALTED state if self.amodule.params['state'] not in ('halted', 'poweredoff'): self.compute_powerstate(self.comp_info, 'started') - + + if self.aparams['custom_fields'] is None: + custom_fields_disable = True + custom_fields_fields = None + else: + custom_fields_disable = self.aparams['custom_fields']['disable'] + custom_fields_fields = self.aparams['custom_fields']['fields'] + if not custom_fields_disable: + self.compute_set_custom_fields( + compute_id=self.comp_info['id'], + custom_fields=custom_fields_fields, + ) + # read in Compute facts once more after all initial setup is complete _, self.comp_info, _ = self.compute_find(comp_id=self.comp_id) @@ -409,9 +413,7 @@ class decort_kvmvm(DecortController): aparam_custom_fields = self.amodule.params['custom_fields'] if aparam_custom_fields is not None: - compute_custom_fields = self.compute_get_custom_fields( - compute_id=self.comp_info['id'], - ) + compute_custom_fields = self.comp_info['custom_fields'] if aparam_custom_fields['disable']: if compute_custom_fields is not None: self.compute_disable_custom_fields( @@ -543,9 +545,7 @@ class decort_kvmvm(DecortController): ret_dict['hp_backed'] = self.comp_info['hpBacked'] ret_dict['numa_affinity'] = self.comp_info['numaAffinity'] - ret_dict['custom_fields'] = self.compute_get_custom_fields( - compute_id=self.comp_info['id'], - ) + ret_dict['custom_fields'] = self.comp_info['custom_fields'] return ret_dict diff --git a/module_utils/decort_utils.py b/module_utils/decort_utils.py index 9d30f1d..b0e8b23 100644 --- a/module_utils/decort_utils.py +++ b/module_utils/decort_utils.py @@ -1207,6 +1207,13 @@ class DecortController(object): ret_comp_dict['interfaces'].sort(key=lambda k: k['pciSlot']) ret_rg_id = ret_comp_dict['rgId'] + + custom_fields = None + if ret_comp_dict['status'] not in ('DESTROYED', 'DELETED'): + custom_fields = self.compute_get_custom_fields( + compute_id=ret_comp_id, + ) + ret_comp_dict['custom_fields'] = custom_fields else: self.result['warning'] = ("compute_get_by_id(): failed to get Compute by ID {}. HTTP code {}, " "response {}.").format(comp_id, api_resp.status_code, api_resp.reason) @@ -1378,8 +1385,7 @@ class DecortController(object): start_on_create=True, cpu_pin: bool = False, hp_backed: bool = False, - numa_affinity: Literal['none', 'loose', 'strict'] = 'none', - custom_fields: Optional[dict] = None): + numa_affinity: Literal['none', 'loose', 'strict'] = 'none'): """Manage KVM VM provisioning. To remove existing KVM VM compute instance use compute_remove method, to resize use compute_resize, to manage power state use compute_powerstate method. @@ -1430,8 +1436,6 @@ class DecortController(object): api_params['hpBacked'] = hp_backed api_params['numaAffinity'] = numa_affinity - if custom_fields is not None: - api_params['customFields'] = json.dumps(custom_fields) if userdata: api_params['userdata'] = json.dumps(userdata) # we need to pass a string object as "userdata"