|
| 1 | +# -------------------------------------------------------------------------------------------- |
| 2 | +# Copyright (c) Microsoft Corporation. All rights reserved. |
| 3 | +# Licensed under the MIT License. See License.txt in the project root for license information. |
| 4 | +# -------------------------------------------------------------------------------------------- |
| 5 | + |
| 6 | +# pylint: disable=unused-argument |
| 7 | + |
| 8 | +from knack.util import CLIError |
| 9 | +from knack.log import get_logger |
| 10 | + |
| 11 | +from azext_k8s_extension.vendored_sdks.models import ExtensionInstance |
| 12 | +from azext_k8s_extension.vendored_sdks.models import ExtensionInstanceUpdate |
| 13 | +from azext_k8s_extension.vendored_sdks.models import ScopeCluster |
| 14 | +from azext_k8s_extension.vendored_sdks.models import Scope |
| 15 | + |
| 16 | +from azext_k8s_extension.partner_extensions.PartnerExtensionModel import PartnerExtensionModel |
| 17 | + |
| 18 | +logger = get_logger(__name__) |
| 19 | + |
| 20 | + |
| 21 | +class AzurePolicy(PartnerExtensionModel): |
| 22 | + def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, extension_type, |
| 23 | + scope, auto_upgrade_minor_version, release_train, version, target_namespace, |
| 24 | + release_namespace, configuration_settings, configuration_protected_settings, |
| 25 | + configuration_settings_file, configuration_protected_settings_file): |
| 26 | + |
| 27 | + """ExtensionType 'Microsoft.PolicyInsights' specific validations & defaults for Create |
| 28 | + Must create and return a valid 'ExtensionInstance' object. |
| 29 | +
|
| 30 | + """ |
| 31 | + |
| 32 | + # Hardcode scope to cluster |
| 33 | + ext_scope = None |
| 34 | + scope_cluster = ScopeCluster(release_namespace=release_namespace) |
| 35 | + ext_scope = Scope(cluster=scope_cluster, namespace=None) |
| 36 | + logger.warning('Ignoring scope parameters since %s ' |
| 37 | + 'only supports cluster scope', extension_type) |
| 38 | + |
| 39 | + # If release-train is not provided, set it to 'preview' |
| 40 | + valid_release_trains = ['preview', 'dev'] |
| 41 | + if release_train is None: |
| 42 | + release_train = 'preview' |
| 43 | + |
| 44 | + # If release-train is other than valid_release_trains raise error |
| 45 | + if release_train.lower() not in valid_release_trains: |
| 46 | + raise CLIError("Invalid release-train '{}'. Valid values are 'preview', 'dev'.".format(release_train)) |
| 47 | + |
| 48 | + # Create Managed Identity for extension |
| 49 | + create_identity = True |
| 50 | + |
| 51 | + extension_instance = ExtensionInstance( |
| 52 | + extension_type=extension_type, |
| 53 | + auto_upgrade_minor_version=auto_upgrade_minor_version, |
| 54 | + release_train=release_train, |
| 55 | + version=version, |
| 56 | + scope=ext_scope, |
| 57 | + configuration_settings=configuration_settings, |
| 58 | + configuration_protected_settings=configuration_protected_settings, |
| 59 | + ) |
| 60 | + return extension_instance, name, create_identity |
| 61 | + |
| 62 | + def Update(self, extension, auto_upgrade_minor_version, release_train, version): |
| 63 | + """ExtensionType 'Microsoft.PolicyInsights' specific validations & defaults for Update |
| 64 | + Must create and return a valid 'ExtensionInstanceUpdate' object. |
| 65 | +
|
| 66 | + """ |
| 67 | + # If release-train is not provided, set it to 'preview' |
| 68 | + valid_release_trains = ['preview', 'dev'] |
| 69 | + if release_train is None: |
| 70 | + release_train = 'preview' |
| 71 | + |
| 72 | + # If release-train is other than valid_release_trains raise error |
| 73 | + if release_train.lower() not in valid_release_trains: |
| 74 | + raise CLIError("Invalid release-train '{}'. Valid values are 'preview', 'dev'.".format(release_train)) |
| 75 | + |
| 76 | + return ExtensionInstanceUpdate( |
| 77 | + auto_upgrade_minor_version=auto_upgrade_minor_version, |
| 78 | + release_train=release_train, |
| 79 | + version=version |
| 80 | + ) |
0 commit comments