diff --git a/CHANGELOG.md b/CHANGELOG.md index ec16da8..c241d61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ -# Список изменений в версии 10.0.1 +# Список изменений в версии 10.0.2 ## Добавлено ## Удалено ## Исправлено -### Модуль decort_group +### Модуль decort_k8s | Идентификатор
задачи | Описание | | --- | --- | -| BANS-941 | Исправлена ошибка, из-за которой не происходил запуск группы после создании с указанием параметра `timeoutStart`. | +| BANS-1173 | Модуль завершал работу ошибкой запроса к API при попытке добавить группу worker-узлов к существующему кластеру. | diff --git a/library/decort_k8s.py b/library/decort_k8s.py index 1313ab9..fb3b7d4 100644 --- a/library/decort_k8s.py +++ b/library/decort_k8s.py @@ -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']: diff --git a/module_utils/decort_utils.py b/module_utils/decort_utils.py index 276df8e..80a4c0f 100644 --- a/module_utils/decort_utils.py +++ b/module_utils/decort_utils.py @@ -6472,7 +6472,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") @@ -6586,6 +6591,12 @@ class DecortController(object): '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, @@ -6742,6 +6753,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