Skip to content

Commit 01e9117

Browse files
Add Microsoft.PolicyInsights extension (Azure#17)
* Add Policy extension * Update comment * Update args * Fix linting errors Co-authored-by: Jonathan Innis <[email protected]>
1 parent 5cd6c0e commit 01e9117

File tree

4 files changed

+88
-2
lines changed

4 files changed

+88
-2
lines changed

src/k8s-extension/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
Release History
44
===============
55

6+
0.2.2
7+
++++++++++++++++++
8+
* Add support for microsoft.policyinsights extension type
9+
610
0.2.1
711
++++++++++++++++++
812

src/k8s-extension/azext_k8s_extension/_consts_private.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
# --------------------------------------------------------------------------------------------
66

77
EXTENSION_NAME = 'k8s-extension-private'
8-
VERSION = "0.2.1"
8+
VERSION = "0.2.2"

src/k8s-extension/azext_k8s_extension/custom.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from azext_k8s_extension.partner_extensions.Cassandra import Cassandra
2323
from azext_k8s_extension.partner_extensions.OpenServiceMesh import OpenServiceMesh
2424
from azext_k8s_extension.partner_extensions.AzureMLKubernetes import AzureMLKubernetes
25+
from azext_k8s_extension.partner_extensions.AzurePolicy import AzurePolicy
2526
from azext_k8s_extension.partner_extensions.DefaultExtension import DefaultExtension
2627
import azext_k8s_extension._consts as consts
2728

@@ -37,7 +38,8 @@ def ExtensionFactory(extension_name):
3738
'microsoft.azuredefender.kubernetes': AzureDefender,
3839
'microsoft.openservicemesh': OpenServiceMesh,
3940
'microsoft.azureml.kubernetes': AzureMLKubernetes,
40-
'cassandradatacentersoperator': Cassandra
41+
'cassandradatacentersoperator': Cassandra,
42+
'microsoft.policyinsights': AzurePolicy
4143
}
4244

4345
# Return the extension if we find it in the map, else return the default
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
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

Comments
 (0)