distcloud-client/distributedcloud-client/dcmanagerclient/commands/v1/kube_rootca_update_manager.py

82 lines
2.7 KiB
Python

#
# Copyright (c) 2021, 2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import os
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.
This strategy supports: expiry-date, subject and cert-file
"""
def get_parser(self, prog_name):
parser = super(CreateKubeRootcaUpdateStrategy, self).get_parser(prog_name)
parser.add_argument(
"--subject",
required=False,
help="A subject for a generated certificate.",
)
parser.add_argument(
"--expiry-date",
required=False,
help="Expiry date for a generated certificate.",
)
parser.add_argument(
"--cert-file", required=False, help="Path to a certificate to upload."
)
return parser
def process_custom_params(self, parsed_args, kwargs_dict):
"""Updates kwargs dictionary from parsed_args for kube rootca update"""
if parsed_args.subject:
kwargs_dict["subject"] = parsed_args.subject
# Note the "-" vs "_" when dealing with parsed_args
if parsed_args.expiry_date:
kwargs_dict["expiry-date"] = parsed_args.expiry_date
if parsed_args.cert_file:
# Need an absolute path for the cert-file
kwargs_dict["cert-file"] = os.path.abspath(parsed_args.cert_file)
# override validate_force_params defined in CreateSwUpdateStrategy
def validate_force_params(self, parsed_args):
"""Disable validating the force option. Allows multiple subclouds."""
class ShowKubeRootcaUpdateStrategy(
KubeRootcaUpdateManagerMixin, sw_update_manager.ShowSwUpdateStrategy
):
"""Show the details of a kube rootca update strategy for a subcloud."""
class DeleteKubeRootcaUpdateStrategy(
KubeRootcaUpdateManagerMixin, sw_update_manager.DeleteSwUpdateStrategy
):
"""Delete kube rootca update strategy from the database."""
class ApplyKubeRootcaUpdateStrategy(
KubeRootcaUpdateManagerMixin, sw_update_manager.ApplySwUpdateStrategy
):
"""Apply a kube rootca update strategy."""
class AbortKubeRootcaUpdateStrategy(
KubeRootcaUpdateManagerMixin, sw_update_manager.AbortSwUpdateStrategy
):
"""Abort a kube rootca update strategy."""