Merge "Adding dcmanager kube-rootca-update-strategy CLI"
This commit is contained in:
commit
aa37442252
@ -29,6 +29,7 @@ import osprofiler.profiler
|
||||
from dcmanagerclient.api import httpclient
|
||||
from dcmanagerclient.api.v1 import alarm_manager as am
|
||||
from dcmanagerclient.api.v1 import fw_update_manager as fum
|
||||
from dcmanagerclient.api.v1 import kube_rootca_update_manager as krum
|
||||
from dcmanagerclient.api.v1 import kube_upgrade_manager as kupm
|
||||
from dcmanagerclient.api.v1 import strategy_step_manager as ssm
|
||||
from dcmanagerclient.api.v1 import subcloud_deploy_manager as sdm
|
||||
@ -104,6 +105,8 @@ class Client(object):
|
||||
self.http_client)
|
||||
self.alarm_manager = am.alarm_manager(self.http_client)
|
||||
self.fw_update_manager = fum.fw_update_manager(self.http_client)
|
||||
self.kube_rootca_update_manager = \
|
||||
krum.kube_rootca_update_manager(self.http_client)
|
||||
self.kube_upgrade_manager = kupm.kube_upgrade_manager(self.http_client)
|
||||
self.sw_patch_manager = spm.sw_patch_manager(self.http_client)
|
||||
self.sw_update_options_manager = \
|
||||
|
@ -0,0 +1,16 @@
|
||||
#
|
||||
# Copyright (c) 2021 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
||||
|
||||
SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE = "kube-rootca-update"
|
||||
|
||||
|
||||
class kube_rootca_update_manager(sw_update_manager):
|
||||
|
||||
def __init__(self, http_client):
|
||||
super(kube_rootca_update_manager, self).__init__(
|
||||
http_client,
|
||||
update_type=SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE)
|
@ -0,0 +1,48 @@
|
||||
#
|
||||
# Copyright (c) 2021 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
from dcmanagerclient.commands.v1 import sw_update_manager
|
||||
|
||||
|
||||
class KubeRootcaUpdateManagerMixin(object):
|
||||
"""This Mixin provides the update manager used for kube rootca updates."""
|
||||
|
||||
def get_sw_update_manager(self):
|
||||
dcmanager_client = self.app.client_manager.kube_rootca_update_manager
|
||||
return dcmanager_client.kube_rootca_update_manager
|
||||
|
||||
|
||||
class CreateKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin,
|
||||
sw_update_manager.CreateSwUpdateStrategy):
|
||||
"""Create a kube rootca update strategy."""
|
||||
|
||||
# override validate_force_params defined in CreateSwUpdateStrategy
|
||||
def validate_force_params(self, parsed_args):
|
||||
"""Disable validation the force option. Allows multiple subclouds."""
|
||||
pass
|
||||
|
||||
|
||||
class ShowKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin,
|
||||
sw_update_manager.ShowSwUpdateStrategy):
|
||||
"""Show the details of a kube rootca update strategy for a subcloud."""
|
||||
pass
|
||||
|
||||
|
||||
class DeleteKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin,
|
||||
sw_update_manager.DeleteSwUpdateStrategy):
|
||||
"""Delete kube rootca update strategy from the database."""
|
||||
pass
|
||||
|
||||
|
||||
class ApplyKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin,
|
||||
sw_update_manager.ApplySwUpdateStrategy):
|
||||
"""Apply a kube rootca update strategy."""
|
||||
pass
|
||||
|
||||
|
||||
class AbortKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin,
|
||||
sw_update_manager.AbortSwUpdateStrategy):
|
||||
"""Abort a kube rootca update strategy."""
|
||||
pass
|
@ -170,6 +170,30 @@ class CreateSwUpdateStrategy(base.DCManagerShowOne):
|
||||
|
||||
return parser
|
||||
|
||||
# These validate methods can be overridden
|
||||
def validate_force_params(self, parsed_args):
|
||||
"""Most orchestrations only support force for a single subcloud"""
|
||||
if parsed_args.force and not parsed_args.cloud_name:
|
||||
error_msg = 'The --force option can only be applied to a single ' \
|
||||
'subcloud. Please specify the subcloud name.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
|
||||
def validate_group_params(self, parsed_args):
|
||||
"""When specifying a group, other inputs are considered invalid"""
|
||||
if parsed_args.group:
|
||||
if parsed_args.cloud_name:
|
||||
error_msg = 'The cloud_name and group options are mutually ' \
|
||||
'exclusive.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
if parsed_args.subcloud_apply_type:
|
||||
error_msg = 'The --subcloud-apply-type is not ' \
|
||||
'supported when --group option is applied.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
if parsed_args.max_parallel_subclouds:
|
||||
error_msg = 'The --max-parallel-subclouds options is not ' \
|
||||
'supported when --group option is applied.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
|
||||
def _get_resources(self, parsed_args):
|
||||
kwargs = dict()
|
||||
if parsed_args.subcloud_apply_type:
|
||||
@ -186,22 +210,8 @@ class CreateSwUpdateStrategy(base.DCManagerShowOne):
|
||||
if parsed_args.group is not None:
|
||||
kwargs['subcloud_group'] = parsed_args.group
|
||||
|
||||
if parsed_args.force and not parsed_args.cloud_name:
|
||||
error_msg = 'The --force option can only be applied to a single ' \
|
||||
'subcloud. Please specify the subcloud name.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
|
||||
if parsed_args.cloud_name and parsed_args.group:
|
||||
error_msg = 'The cloud_name and group options are mutually ' \
|
||||
'exclusive.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
|
||||
if parsed_args.group and (parsed_args.subcloud_apply_type or
|
||||
parsed_args.max_parallel_subclouds):
|
||||
error_msg = 'The --subcloud-apply-type and ' \
|
||||
'--max-parallel-subclouds options are not ' \
|
||||
'supported when --group option is applied.'
|
||||
raise exceptions.DCManagerClientException(error_msg)
|
||||
self.validate_force_params(parsed_args)
|
||||
self.validate_group_params(parsed_args)
|
||||
|
||||
return self.get_sw_update_manager().create_sw_update_strategy(**kwargs)
|
||||
|
||||
|
@ -38,6 +38,7 @@ from osc_lib.command import command
|
||||
import argparse
|
||||
from dcmanagerclient.commands.v1 import alarm_manager as am
|
||||
from dcmanagerclient.commands.v1 import fw_update_manager as fum
|
||||
from dcmanagerclient.commands.v1 import kube_rootca_update_manager as krum
|
||||
from dcmanagerclient.commands.v1 import kube_upgrade_manager as kupm
|
||||
from dcmanagerclient.commands.v1 import subcloud_deploy_manager as sdm
|
||||
from dcmanagerclient.commands.v1 import subcloud_group_manager as gm
|
||||
@ -470,7 +471,8 @@ class DCManagerShell(app.App):
|
||||
strategy_step_manager=self.client,
|
||||
sw_update_options_manager=self.client,
|
||||
sw_upgrade_manager=self.client,
|
||||
kube_upgrade_manager=self.client)
|
||||
kube_upgrade_manager=self.client,
|
||||
kube_rootca_update_manager=self.client)
|
||||
)
|
||||
self.client_manager = ClientManager()
|
||||
|
||||
@ -520,6 +522,16 @@ class DCManagerShell(app.App):
|
||||
'fw-update-strategy apply': fum.ApplyFwUpdateStrategy,
|
||||
'fw-update-strategy abort': fum.AbortFwUpdateStrategy,
|
||||
'fw-update-strategy show': fum.ShowFwUpdateStrategy,
|
||||
'kube-rootca-update-strategy create':
|
||||
krum.CreateKubeRootcaUpdateStrategy,
|
||||
'kube-rootca-update-strategy delete':
|
||||
krum.DeleteKubeRootcaUpdateStrategy,
|
||||
'kube-rootca-update-strategy apply':
|
||||
krum.ApplyKubeRootcaUpdateStrategy,
|
||||
'kube-rootca-update-strategy abort':
|
||||
krum.AbortKubeRootcaUpdateStrategy,
|
||||
'kube-rootca-update-strategy show':
|
||||
krum.ShowKubeRootcaUpdateStrategy,
|
||||
'kube-upgrade-strategy create': kupm.CreateKubeUpgradeStrategy,
|
||||
'kube-upgrade-strategy delete': kupm.DeleteKubeUpgradeStrategy,
|
||||
'kube-upgrade-strategy apply': kupm.ApplyKubeUpgradeStrategy,
|
||||
|
@ -0,0 +1,22 @@
|
||||
#
|
||||
# Copyright (c) 2021 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
from dcmanagerclient.commands.v1 import kube_rootca_update_manager as cli_cmd
|
||||
from dcmanagerclient.tests import base
|
||||
from dcmanagerclient.tests.v1.mixins import UpdateStrategyMixin
|
||||
|
||||
|
||||
class TestKubeRootcaUpdateStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestKubeRootcaUpdateStrategy, self).setUp()
|
||||
self.sw_update_manager = self.app.client_manager.\
|
||||
kube_rootca_update_manager.kube_rootca_update_manager
|
||||
self.create_command = cli_cmd.CreateKubeRootcaUpdateStrategy
|
||||
self.show_command = cli_cmd.ShowKubeRootcaUpdateStrategy
|
||||
self.delete_command = cli_cmd.DeleteKubeRootcaUpdateStrategy
|
||||
self.apply_command = cli_cmd.ApplyKubeRootcaUpdateStrategy
|
||||
self.abort_command = cli_cmd.AbortKubeRootcaUpdateStrategy
|
Loading…
x
Reference in New Issue
Block a user