From fa45089d42d0d234730a8e611981910ca11fe077 Mon Sep 17 00:00:00 2001 From: albailey Date: Mon, 6 Dec 2021 10:22:15 -0600 Subject: [PATCH] Adding 'force' support and 'to-version' for kube-upgrade The 'force' allows a subcloud that is in-sync to be upgraded. The 'to-version' allows a version to be specified, as long as it is greater or equal to the available version in the subcloud. These changes add the ability for subclouds to be orchestrated independently of the version running on the system controller. Story: 2008972 Task: 44137 Depends-On: https://review.opendev.org/c/starlingx/distcloud/+/820552 Signed-off-by: albailey Change-Id: I62a383712eba3a2809df0af356fe1f41b228ee46 --- .../api/v1/kube_upgrade_manager.py | 1 + .../commands/v1/kube_rootca_update_manager.py | 2 +- .../commands/v1/kube_upgrade_manager.py | 22 ++++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/distributedcloud-client/dcmanagerclient/api/v1/kube_upgrade_manager.py b/distributedcloud-client/dcmanagerclient/api/v1/kube_upgrade_manager.py index a977423..66b696e 100644 --- a/distributedcloud-client/dcmanagerclient/api/v1/kube_upgrade_manager.py +++ b/distributedcloud-client/dcmanagerclient/api/v1/kube_upgrade_manager.py @@ -25,3 +25,4 @@ class kube_upgrade_manager(sw_update_manager): super(kube_upgrade_manager, self).__init__( http_client, update_type=SW_UPDATE_TYPE_KUBERNETES) + self.extra_args = ['to-version'] diff --git a/distributedcloud-client/dcmanagerclient/commands/v1/kube_rootca_update_manager.py b/distributedcloud-client/dcmanagerclient/commands/v1/kube_rootca_update_manager.py index 9681f0f..e8d8086 100644 --- a/distributedcloud-client/dcmanagerclient/commands/v1/kube_rootca_update_manager.py +++ b/distributedcloud-client/dcmanagerclient/commands/v1/kube_rootca_update_manager.py @@ -56,7 +56,7 @@ class CreateKubeRootcaUpdateStrategy(KubeRootcaUpdateManagerMixin, # override validate_force_params defined in CreateSwUpdateStrategy def validate_force_params(self, parsed_args): - """Disable validation the force option. Allows multiple subclouds.""" + """Disable validating the force option. Allows multiple subclouds.""" pass diff --git a/distributedcloud-client/dcmanagerclient/commands/v1/kube_upgrade_manager.py b/distributedcloud-client/dcmanagerclient/commands/v1/kube_upgrade_manager.py index 8db5a85..446663a 100644 --- a/distributedcloud-client/dcmanagerclient/commands/v1/kube_upgrade_manager.py +++ b/distributedcloud-client/dcmanagerclient/commands/v1/kube_upgrade_manager.py @@ -27,7 +27,27 @@ class KubeUpgradeManagerMixin(object): class CreateKubeUpgradeStrategy(KubeUpgradeManagerMixin, sw_update_manager.CreateSwUpdateStrategy): """Create a kubernetes upgrade strategy.""" - pass + + def get_parser(self, prog_name): + parser = super(CreateKubeUpgradeStrategy, + self).get_parser(prog_name) + parser.add_argument( + '--to-version', + required=False, + help='Specify a version other than the system controller version.' + ) + return parser + + def process_custom_params(self, parsed_args, kwargs_dict): + """Updates kwargs dictionary from parsed_args for kube upgrade""" + # Note the "-" vs "_" when dealing with parsed_args + if parsed_args.to_version: + kwargs_dict['to-version'] = parsed_args.to_version + + # override validate_force_params defined in CreateSwUpdateStrategy + def validate_force_params(self, parsed_args): + """Disable validating the force option. Allows multiple subclouds.""" + pass class ShowKubeUpgradeStrategy(KubeUpgradeManagerMixin,