Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9713b5cf2f | |||
| 0d85368852 | |||
| ae986fa9e6 | |||
| 3eb7fb2791 | |||
| 81e765fdb1 |
163
CHANGELOG.md
163
CHANGELOG.md
@@ -1,170 +1,11 @@
|
||||
# Список изменений в версии 11.0.0
|
||||
# Список изменений в версии 11.0.5
|
||||
|
||||
## Добавлено
|
||||
### Глобально
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-909 | В системные требования добавлена библиотека Python `dynamix_sdk`. |
|
||||
| BANS-918 | Добавлен общий для всех модулей параметр `ignore_api_compatibility`. |
|
||||
| BANS-913 | Добавлен общий для всех модулей параметр `ignore_sdk_version_check`. |
|
||||
| BANS-954 | Добавлен модуль `decort_vm` в связи с переименованием из `decort_kvmvm`. |
|
||||
| BANS-953 | Добавлен модуль `decort_image` в связи с переименованием из `decort_osimage`. |
|
||||
| BANS-997 | Добавлен модуль `decort_security_group_list`, позволяющий получить список доступных групп безопасности. |
|
||||
| BANS-884 | Добавлен модуль `decort_disk_list`, позволяющий получить список доступных дисков. |
|
||||
| BANS-936 | Добавлен модуль `decort_rg_list`, позволяющий получить список доступных ресурсных групп. |
|
||||
| BANS-949 | Добавлен модуль `decort_vins_list`, позволяющий получить список доступных внутренних сетей. |
|
||||
| BANS-940 | Добавлен модуль `decort_vm_list`, позволяющий получить список доступных виртуальных машин. |
|
||||
| BANS-959 | Добавлен модуль `decort_flip_group_list`, позволяющий получить список доступных групп с плавающим IP-адресом. |
|
||||
| BANS-952 | Добавлен модуль `decort_image_list`, позволяющий получить список доступных образов. |
|
||||
| BANS-983 | Добавлен модуль `decort_account_list`, позволяющий получить список доступных аккаунтов. |
|
||||
| BANS-985 | Добавлен модуль `decort_audit_list`, позволяющий получить список аудитов. |
|
||||
| BANS-988 | Добавлен модуль `decort_trunk_list`, позволяющий получить список доступных транковых портов. |
|
||||
| BANS-987 | Добавлен модуль `decort_zone_list`, позволяющий получить список доступных зон. |
|
||||
| BANS-989 | Добавлен модуль `decort_storage_policy_list`, позволяющий получить список политик хранения. |
|
||||
| BANS-945 | Добавлен модуль `decort_user` в связи с переименованием из `decort_user_info`. |
|
||||
|
||||
### Модуль decort_vm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-926 | Для параметра `chipset` добавлено значение по умолчанию `Q35` при создании ВМ. |
|
||||
| BANS-933 | Добавлено возвращаемое значение `pinned_to_node` в связи с переименованием из `pinned_to_stack`. |
|
||||
| BANS-934 | Добавлено возвращаемое значение `read_only`. |
|
||||
| BANS-994 | Добавлена возможность задать параметр `mtu` при создании сетевого интерфейса для TRUNK-сети и изменить `mtu` у существующего интерфейса, подключённого к TRUNK-сети. |
|
||||
| BANS-991 | Добавлена возможность указать параметр `ip_addr` при присоединении и изменении `DPDK` сети. |
|
||||
| BANS-1017 | Добавлено возвращаемое значение `disks.cache`. |
|
||||
| BANS-1034 | Добавлена возможность указать параметр `ip_addr` при присоединении и изменении `VFNIC` сети. |
|
||||
| BANS-992 | Добавлен параметр `networks.net_prefix`. |
|
||||
|
||||
### Модуль decort_group
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-927 | Для параметра `chipset` добавлено значение по умолчанию `Q35` при создании группы. |
|
||||
|
||||
### Модуль decort_k8s
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-928 | Для параметра `chipset` добавлено значение по умолчанию `Q35` при создании кластера. |
|
||||
|
||||
### Модуль decort_account
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-966 | Добавлен параметр `get_resource_consumption` и возвращаемое значение `resource_consumption`. |
|
||||
|
||||
### Модуль decort_trunk
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-993 | Добавлено возвращаемое значение `mtu`. |
|
||||
| BANS-976 | Добавлены возвращаемые значения `created_datetime`, `deleted_datetime`, `updated_datetime`. |
|
||||
|
||||
### Модуль decort_zone
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-970 | Добавлены возвращаемые значения `created_datetime`, `updated_datetime` и возвращаемые значения `account_ids`, `bservice_ids`, `vm_ids`, `extnet_ids`, `k8s_ids`, `lb_ids`, `vins_ids` в связи с переименованием из `accountIds`, `bserviceIds`, `computeIds`, `extnetIds`, `k8sIds`, `lbIds`, `vinsIds`. |
|
||||
| BANS-1024 | Добавлено возвращаемое значение `node_auto_start`. |
|
||||
|
||||
### Модуль decort_vm_snapshot
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-978 | Добавлено возвращаемое значение `datetime`. |
|
||||
|
||||
### Модуль decort_storage_policy
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-977 | Добавлены возвращаемые значения `sep_name`, `sep_tech_status`. |
|
||||
|
||||
### Модуль decort_disk
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1019 | Добавлено возвращаемое значение `cache_mode`. |
|
||||
| BANS-1050 | Добавлено возвращаемое значение `blkdiscard`. |
|
||||
|
||||
## Удалено
|
||||
### Глобально
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-954 | Удалён модуль `decort_kvmvm` в связи с переименованием в `decort_vm`. |
|
||||
| BANS-969 | Модуль `decort_account_info` расформирован, его функционал перенесён в модули: `decort_disk_list`, `decort_rg_list`, `decort_vins_list`, `decort_vm_list`, `decort_flip_group_list`, `decort_image_list`, `decort_account`. |
|
||||
| BANS-953 | Удалён модуль `decort_osimage` в связи с переименованием в `decort_image`. |
|
||||
| BANS-945 | Удалён модуль `decort_user_info` в связи с переименованием в `decort_user`. |
|
||||
|
||||
### Модуль decort_account
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-924 | Удалён параметр `quotas.ext_traffic`. |
|
||||
| BANS-998 |Для параметра `state` удалено значение по умолчанию. |
|
||||
|
||||
### Модуль decort_rg
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-925 | Удалён параметр `quotas.net_transfer`. |
|
||||
|
||||
### Модуль decort_vm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-926 | Для параметра `chipset` удалено значение по умолчанию `i440fx` при создании ВМ. |
|
||||
| BANS-933 | Удалено возвращаемое значение `pinned_to_stack` в связи с переименованием в `pinned_to_node`. |
|
||||
| BANS-961 | Параметр `storage_policy_id` удалён из обязательных при пересоздании загрузочного диска. |
|
||||
|
||||
### Модуль decort_group
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-927 | Для параметра `chipset` удалено значение по умолчанию `i440fx` при создании группы. |
|
||||
| BANS-1027 | Удалён параметр `driver`. |
|
||||
|
||||
### Модуль decort_k8s
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-928 | Для параметра `chipset` удалено значение по умолчанию `i440fx` при создании кластера. |
|
||||
|
||||
### Модуль decort_user
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-983 | Удалён параметр `accounts` и возвращаемое значение `accounts` в связи с переносом этой функциональности в модуль `decort_account_list`. |
|
||||
| BANS-985 | Удалён параметр `audits` и возвращаемое значение `audits` в связи с переносом этой функциональности в модуль `decort_audit_list`. |
|
||||
| BANS-988 | Удалён параметр `trunks` и возвращаемое значение `trunks` в связи с переносом этой функциональности в модуль `decort_trunk_list`. |
|
||||
| BANS-987 | Удалён параметр `zones` и возвращаемое значение `zones` в связи с переносом этой функциональности в модуль `decort_zone_list`. |
|
||||
| BANS-989 | Удалён параметр `storage_policies` и возвращаемое значение `storage_policies` в связи с переносом этой функциональности в модуль `decort_storage_policy_list`. |
|
||||
| BANS-997 | Удалён параметр `security_groups` и возвращаемое значение `security_groups` в связи с переносом этой функциональности в модуль `decort_security_group_list`. |
|
||||
|
||||
### Модуль decort_zone
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-970 | Удалены возвращаемые значения `accountIds`, `bserviceIds`, `computeIds`, `extnetIds`, `k8sIds`, `lbIds`, `vinsIds` в связи с переименованием в `account_ids`, `bservice_ids`, `vm_ids`, `extnet_ids`, `k8s_ids`, `lb_ids`, `vins_ids`. |
|
||||
|
||||
### Модуль decort_disk
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1004 | Удалён параметр `reason` |
|
||||
|
||||
### Модуль decort_security_group
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1000 | Удалено возвращаемое значение `rules.remote_ip_prefix` в связи с переименованием в `rules.remote_net_cidr`. |
|
||||
| BANS-1013 | Удален параметр `rules.objects.remote_ip_prefix` в связи с переименованием в `rules.objects.remote_net_cidr`. |
|
||||
|
||||
### Модуль decort_vm_snapshot
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1012 | Удалено возвращаемое значение `disks` в связи с переименованием в `disk_ids`. |
|
||||
|
||||
## Исправлено
|
||||
### Модуль decort_vm
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-996 | Параметры `mac`, `security_groups`, `enable_secgroups`, `enabled` сетевого интерфейса DPDK-сети могли меняться при изменении `mtu`. |
|
||||
| BANS-1052 | Параметры `numa_affinity`, `cpu_pin`, `hp_backed` не применялись при создании ВМ без образа. |
|
||||
|
||||
### Модуль decort_bservice
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-389 | После создания базовой службы, модуль не возвращал информацию о созданном объекте. |
|
||||
|
||||
### Модуль decort_vm_snapshot
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1022 | После создания снимка не возвращалась информация о снимке. |
|
||||
|
||||
### Модуль decort_k8s
|
||||
| Идентификатор<br>задачи | Описание |
|
||||
| --- | --- |
|
||||
| BANS-1033 | Модуль без необходимости выполнял запрос к API `/cloudapi/k8s/update`, передавая в него параметры, не вызывающие изменения. |
|
||||
| BANS-1386 | Модуль завершал работу ошибкой при передаче параметров `disks.objects.pci_slot_num_hex` и `disks.objects.bus_num_hex` в формате hex. |
|
||||
|
||||
@@ -215,6 +215,9 @@ class decort_k8s(DecortController):
|
||||
self.k8s_workers_modify(
|
||||
arg_k8swg=self.k8s_info,
|
||||
arg_modwg=target_wgs,
|
||||
master_node_storage_policy_id=(
|
||||
self.aparams['storage_policy_id']
|
||||
),
|
||||
)
|
||||
self.k8s_info = self.k8s_get_by_id(k8s_id=self.k8s_id)
|
||||
return
|
||||
@@ -257,7 +260,10 @@ class decort_k8s(DecortController):
|
||||
self.k8s_info = self.k8s_get_by_id(k8s_id=self.k8s_id)
|
||||
#check groups and modify if needed
|
||||
if self.aparams['workers'] is not None:
|
||||
self.k8s_workers_modify(self.k8s_info, self.amodule.params['workers'])
|
||||
self.k8s_workers_modify(
|
||||
arg_k8swg=self.k8s_info,
|
||||
arg_modwg=self.amodule.params['workers'],
|
||||
)
|
||||
|
||||
aparam_zone_id = self.aparams['zone_id']
|
||||
if aparam_zone_id is not None and aparam_zone_id != self.k8s_info['zoneId']:
|
||||
|
||||
@@ -1637,12 +1637,17 @@ class decort_vm(DecortController):
|
||||
f'disk {aparam_boot_disk_id} is not attached to '
|
||||
f'Compute ID {self.comp_id}.'
|
||||
)
|
||||
else:
|
||||
elif aparam_boot_disk_id is not None:
|
||||
aparam_disk_ids = []
|
||||
if aparam_disks['objects']:
|
||||
aparam_disk_ids = [
|
||||
disk['id'] for disk in aparam_disks['objects']
|
||||
]
|
||||
match aparam_disks['mode']:
|
||||
case 'update':
|
||||
if (
|
||||
aparam_boot_disk_id not in comp_disk_ids
|
||||
and aparam_boot_disk_id not in aparam_disks['ids']
|
||||
and aparam_boot_disk_id not in aparam_disk_ids
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
@@ -1651,7 +1656,7 @@ class decort_vm(DecortController):
|
||||
f'to Compute ID {self.comp_id}.'
|
||||
)
|
||||
case 'match':
|
||||
if aparam_boot_disk_id not in aparam_disks['ids']:
|
||||
if aparam_boot_disk_id not in aparam_disk_ids:
|
||||
check_errors = True
|
||||
self.message(
|
||||
f'Check for parameter "boot.disk_id" failed: '
|
||||
@@ -1659,7 +1664,7 @@ class decort_vm(DecortController):
|
||||
f'disks.ids'
|
||||
)
|
||||
case 'detach' | 'delete':
|
||||
if aparam_boot_disk_id in aparam_disks['ids']:
|
||||
if aparam_boot_disk_id in aparam_disk_ids:
|
||||
check_errors = True
|
||||
self.message(
|
||||
f'Check for parameter "boot.disk_id" failed: '
|
||||
|
||||
@@ -43,7 +43,7 @@ class DecortController(object):
|
||||
_api: sdk_types.API | None = None
|
||||
_usermanager_whoami_result: None | dict = None
|
||||
|
||||
ANSIBLE_MODULES_VERSION = '11.0.0'
|
||||
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'],
|
||||
@@ -5537,7 +5547,12 @@ class DecortController(object):
|
||||
self.result['changed'] = False
|
||||
return
|
||||
|
||||
def k8s_workers_modify(self,arg_k8swg,arg_modwg):
|
||||
def k8s_workers_modify(
|
||||
self,
|
||||
arg_k8swg,
|
||||
arg_modwg,
|
||||
master_node_storage_policy_id: int | None = None,
|
||||
):
|
||||
|
||||
self.result['waypoints'] = "{} -> {}".format(self.result['waypoints'], "k8s_workers_modify")
|
||||
|
||||
@@ -5646,11 +5661,20 @@ class DecortController(object):
|
||||
'workerDisk': wg_to_create['disk'],
|
||||
'workerSepId': wg_to_create['sep_id'],
|
||||
'workerSepPool': wg_to_create['pool'],
|
||||
'labels': wg_to_create['labels'],
|
||||
'labels': [
|
||||
label for label in (wg_to_create['labels'] or [])
|
||||
if 'workersGroupName' not in label
|
||||
],
|
||||
'taints': wg_to_create['taints'],
|
||||
'annotations': wg_to_create['annotations'],
|
||||
'userData': json.dumps(wg_to_create['ci_user_data']),
|
||||
'chipset': wg_to_create['chipset'],
|
||||
'storage_policy_id': (
|
||||
master_node_storage_policy_id
|
||||
or self.k8s_get_master_node_storage_policy_id(
|
||||
k8s_info=arg_k8swg,
|
||||
)
|
||||
),
|
||||
}
|
||||
wg_add_response = self.decort_api_call(
|
||||
arg_req_function=requests.post,
|
||||
@@ -5807,6 +5831,19 @@ class DecortController(object):
|
||||
self.set_changed()
|
||||
return api_response.json()
|
||||
|
||||
def k8s_get_master_node_storage_policy_id(self, k8s_info: dict) -> int:
|
||||
master_nodes_info = k8s_info['k8sGroups']['masters'][
|
||||
'detailedInfo'
|
||||
]
|
||||
if not master_nodes_info:
|
||||
raise ValueError(
|
||||
f'No master nodes found in K8s cluster ID {k8s_info['id']}'
|
||||
)
|
||||
_, master_node_info, _ = self._compute_get_by_id(
|
||||
comp_id=master_nodes_info[0]['id']
|
||||
)
|
||||
return master_node_info['disks'][0]['storage_policy_id']
|
||||
|
||||
##############################
|
||||
#
|
||||
# Bservice management
|
||||
|
||||
Reference in New Issue
Block a user