Skip to content

Commit 590e5d3

Browse files
Merge pull request #18 from AzureArcForKubernetes/japras/extensions-20250301
Add API version 2025-03-01 for extension resource operations
2 parents 67d2e1b + 5433ee7 commit 590e5d3

43 files changed

Lines changed: 7971 additions & 25 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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+
1.8.0
7+
+++++++++++++++++++
8+
* Migrate Extensions api-version to 2025-03-01
9+
610
1.7.0
711
+++++++++++++++++++
812
* Added the `az k8s-extension troubleshoot` command to simplify log collection and diagnostics for extensions.

src/k8s-extension/azext_k8s_extension/_params.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ def load_arguments(self, _: CLICommand) -> None:
4444
options_list=['--auto-upgrade-minor-version', '--auto-upgrade'],
4545
arg_type=get_three_state_flag(),
4646
help='Automatically upgrade minor version of the extension instance.')
47+
c.argument('auto_upgrade_mode',
48+
arg_group="Version",
49+
options_list=['--auto-upgrade-mode'],
50+
arg_type=get_enum_type(['none', 'patch', 'compatible']),
51+
help='Automatically upgrade mode of the extension instance.')
4752
c.argument('version',
4853
arg_group="Version",
4954
help='Specify the version to install for the extension instance if'

src/k8s-extension/azext_k8s_extension/custom.py

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ def create_k8s_extension(
128128
cluster_resource_provider=None,
129129
scope=None,
130130
auto_upgrade_minor_version=None,
131+
auto_upgrade_mode=None,
131132
release_train=None,
132133
version=None,
133134
target_namespace=None,
@@ -205,6 +206,7 @@ def create_k8s_extension(
205206
extension_type_lower,
206207
scope,
207208
auto_upgrade_minor_version,
209+
auto_upgrade_mode,
208210
release_train,
209211
version,
210212
target_namespace,
@@ -220,7 +222,14 @@ def create_k8s_extension(
220222

221223
# Common validations
222224
__validate_version_and_auto_upgrade(
223-
extension_instance.version, extension_instance.auto_upgrade_minor_version
225+
extension_instance.version,
226+
extension_instance.auto_upgrade_minor_version,
227+
extension_instance.auto_upgrade_mode,
228+
)
229+
__validate_auto_upgrade_mode(
230+
extension_instance.version,
231+
extension_instance.auto_upgrade_minor_version,
232+
extension_instance.auto_upgrade_mode,
224233
)
225234
__validate_scope_after_customization(extension_instance.scope)
226235

@@ -266,6 +275,7 @@ def update_k8s_extension(
266275
cluster_type,
267276
cluster_resource_provider=None,
268277
auto_upgrade_minor_version=None,
278+
auto_upgrade_mode=None,
269279
release_train=None,
270280
version=None,
271281
configuration_settings=None,
@@ -330,6 +340,7 @@ def update_k8s_extension(
330340
resource_group_name,
331341
cluster_name,
332342
auto_upgrade_minor_version,
343+
auto_upgrade_mode,
333344
release_train,
334345
version,
335346
config_settings,
@@ -338,6 +349,12 @@ def update_k8s_extension(
338349
yes,
339350
)
340351

352+
__validate_auto_upgrade_mode(
353+
upd_extension.version,
354+
upd_extension.auto_upgrade_minor_version,
355+
upd_extension.auto_upgrade_mode,
356+
)
357+
341358
return sdk_no_wait(
342359
no_wait,
343360
client.begin_update,
@@ -924,10 +941,42 @@ def __validate_scope_after_customization(scope_obj: Scope):
924941
raise RequiredArgumentMissingError(message)
925942

926943

927-
def __validate_version_and_auto_upgrade(version, auto_upgrade_minor_version):
944+
def __validate_version_and_auto_upgrade(version, auto_upgrade_minor_version, auto_upgrade_mode=None):
928945
if version is not None:
929946
if auto_upgrade_minor_version:
930947
message = "To pin to specific version, auto-upgrade-minor-version must be set to 'false'."
931948
raise MutuallyExclusiveArgumentError(message)
932949

933950
auto_upgrade_minor_version = False
951+
952+
if auto_upgrade_minor_version is not None and auto_upgrade_mode is not None:
953+
message = "auto-upgrade-mode cannot be specified together with auto-upgrade-minor-version."
954+
raise MutuallyExclusiveArgumentError(message)
955+
956+
957+
def __validate_auto_upgrade_mode(version, auto_upgrade_minor_version, auto_upgrade_mode):
958+
if version is not None and auto_upgrade_mode is not None:
959+
message = "To pin to specific version, auto-upgrade-mode must not be provided."
960+
raise MutuallyExclusiveArgumentError(message)
961+
962+
if auto_upgrade_minor_version is not None and auto_upgrade_mode is not None:
963+
message = "auto-upgrade-mode cannot be specified together with auto-upgrade-minor-version."
964+
raise MutuallyExclusiveArgumentError(message)
965+
966+
if auto_upgrade_mode is None:
967+
return
968+
969+
normalized_auto_upgrade_mode = auto_upgrade_mode
970+
if hasattr(normalized_auto_upgrade_mode, "value"):
971+
normalized_auto_upgrade_mode = normalized_auto_upgrade_mode.value
972+
normalized_auto_upgrade_mode = str(normalized_auto_upgrade_mode).strip().lower()
973+
if "." in normalized_auto_upgrade_mode:
974+
normalized_auto_upgrade_mode = normalized_auto_upgrade_mode.split(".")[-1]
975+
976+
allowed_auto_upgrade_modes = {"none", "patch", "compatible"}
977+
if normalized_auto_upgrade_mode not in allowed_auto_upgrade_modes:
978+
message = (
979+
"Invalid value for auto-upgrade-mode. "
980+
"Allowed values are: none, patch, compatible."
981+
)
982+
raise ClientRequestError(message)

src/k8s-extension/azext_k8s_extension/partner_extensions/AzureDefender.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
class AzureDefender(DefaultExtension):
2121
def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, cluster_rp,
22-
extension_type, scope, auto_upgrade_minor_version, release_train, version, target_namespace,
22+
extension_type, scope, auto_upgrade_minor_version, auto_upgrade_mode, release_train, version, target_namespace,
2323
release_namespace, configuration_settings, configuration_protected_settings,
2424
configuration_settings_file, configuration_protected_settings_file, plan_name,
2525
plan_publisher, plan_product):
@@ -57,6 +57,7 @@ def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_t
5757
extension_instance = Extension(
5858
extension_type=extension_type,
5959
auto_upgrade_minor_version=auto_upgrade_minor_version,
60+
auto_upgrade_mode=auto_upgrade_mode,
6061
release_train=release_train,
6162
version=version,
6263
scope=ext_scope,

src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMLKubernetes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def __init__(self):
113113
self.OPEN_SHIFT = 'openshift'
114114

115115
def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, cluster_rp,
116-
extension_type, scope, auto_upgrade_minor_version, release_train, version, target_namespace,
116+
extension_type, scope, auto_upgrade_minor_version, auto_upgrade_mode, release_train, version, target_namespace,
117117
release_namespace, configuration_settings, configuration_protected_settings,
118118
configuration_settings_file, configuration_protected_settings_file, plan_name,
119119
plan_publisher, plan_product):
@@ -214,21 +214,20 @@ def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_t
214214
extension = Extension(
215215
extension_type=extension_type,
216216
auto_upgrade_minor_version=auto_upgrade_minor_version,
217+
auto_upgrade_mode=auto_upgrade_mode,
217218
release_train=release_train,
218219
version=version,
219220
scope=ext_scope,
220221
configuration_settings=configuration_settings,
221222
configuration_protected_settings=configuration_protected_settings,
222-
identity=None,
223-
location=""
224223
)
225224
return extension, name, create_identity
226225

227226
def Delete(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, cluster_rp, yes):
228227
logger.warning("Troubleshooting: {}".format(self.TSG_LINK))
229228
user_confirmation_factory(cmd, yes)
230229

231-
def Update(self, cmd, resource_group_name, cluster_name, auto_upgrade_minor_version, release_train, version, configuration_settings,
230+
def Update(self, cmd, resource_group_name, cluster_name, auto_upgrade_minor_version, auto_upgrade_mode, release_train, version, configuration_settings,
232231
configuration_protected_settings, original_extension, yes=False):
233232

234233
logger.warning("Troubleshooting: {}".format(self.TSG_LINK))
@@ -387,6 +386,7 @@ def Update(self, cmd, resource_group_name, cluster_name, auto_upgrade_minor_vers
387386
configuration_protected_settings = input_configuration_protected_settings
388387

389388
return PatchExtension(auto_upgrade_minor_version=auto_upgrade_minor_version,
389+
auto_upgrade_mode=auto_upgrade_mode,
390390
release_train=release_train,
391391
version=version,
392392
configuration_settings=configuration_settings,

src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMonitorMetrics.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
class AzureMonitorMetrics(DefaultExtension):
3232
def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, cluster_rp,
33-
extension_type, scope, auto_upgrade_minor_version, release_train, version, target_namespace,
33+
extension_type, scope, auto_upgrade_minor_version, auto_upgrade_mode, release_train, version, target_namespace,
3434
release_namespace, configuration_settings, configuration_protected_settings,
3535
configuration_settings_file, configuration_protected_settings_file,
3636
plan_name, plan_publisher, plan_product):
@@ -66,6 +66,7 @@ def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_t
6666
extension = Extension(
6767
extension_type=extension_type,
6868
auto_upgrade_minor_version=auto_upgrade_minor_version,
69+
auto_upgrade_mode=auto_upgrade_mode,
6970
release_train=release_train,
7071
version=version,
7172
scope=ext_scope,

src/k8s-extension/azext_k8s_extension/partner_extensions/ContainerInsights.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151

5252
class ContainerInsights(DefaultExtension):
5353
def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_type, cluster_rp,
54-
extension_type, scope, auto_upgrade_minor_version, release_train, version, target_namespace,
54+
extension_type, scope, auto_upgrade_minor_version, auto_upgrade_mode, release_train, version, target_namespace,
5555
release_namespace, configuration_settings, configuration_protected_settings,
5656
configuration_settings_file, configuration_protected_settings_file,
5757
plan_name, plan_publisher, plan_product):
@@ -86,6 +86,7 @@ def Create(self, cmd, client, resource_group_name, cluster_name, name, cluster_t
8686
extension = Extension(
8787
extension_type=extension_type,
8888
auto_upgrade_minor_version=auto_upgrade_minor_version,
89+
auto_upgrade_mode=auto_upgrade_mode,
8990
release_train=release_train,
9091
version=version,
9192
scope=ext_scope,

src/k8s-extension/azext_k8s_extension/partner_extensions/Dapr.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def _get_release_info(self, release_name: str, release_namespace: str, configura
106106

107107
def Create(self, cmd, client, resource_group_name: str, cluster_name: str, name: str, cluster_type: str,
108108
cluster_rp: str, extension_type: str, scope: str, auto_upgrade_minor_version: bool,
109-
release_train: str, version: str, target_namespace: str, release_namespace: str,
109+
auto_upgrade_mode: str, release_train: str, version: str, target_namespace: str, release_namespace: str,
110110
configuration_settings: dict, configuration_protected_settings: dict,
111111
configuration_settings_file: str, configuration_protected_settings_file: str,
112112
plan_name: str, plan_publisher: str, plan_product: str):
@@ -138,17 +138,17 @@ def Create(self, cmd, client, resource_group_name: str, cluster_name: str, name:
138138
extension_instance = Extension(
139139
extension_type=extension_type,
140140
auto_upgrade_minor_version=auto_upgrade_minor_version,
141+
auto_upgrade_mode=auto_upgrade_mode,
141142
release_train=release_train or self.DEFAULT_RELEASE_TRAIN,
142143
version=version,
143144
scope=extension_scope,
144145
configuration_settings=configuration_settings,
145146
configuration_protected_settings=configuration_protected_settings,
146-
identity=None,
147-
location=""
148147
)
149148
return extension_instance, release_name, create_identity
150149

151150
def Update(self, cmd, resource_group_name: str, cluster_name: str, auto_upgrade_minor_version: bool,
151+
auto_upgrade_mode: str,
152152
release_train: str, version: str, configuration_settings: dict,
153153
configuration_protected_settings: dict, original_extension: Extension, yes: bool = False) \
154154
-> PatchExtension:
@@ -193,6 +193,7 @@ def Update(self, cmd, resource_group_name: str, cluster_name: str, auto_upgrade_
193193
configuration_settings = input_configuration_settings
194194

195195
return PatchExtension(auto_upgrade_minor_version=auto_upgrade_minor_version,
196+
auto_upgrade_mode=auto_upgrade_mode,
196197
release_train=release_train,
197198
version=version,
198199
configuration_settings=configuration_settings,

src/k8s-extension/azext_k8s_extension/partner_extensions/DataProtectionKubernetes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def Create(
8282
extension_type,
8383
scope,
8484
auto_upgrade_minor_version,
85+
auto_upgrade_mode,
8586
release_train,
8687
version,
8788
target_namespace,
@@ -132,6 +133,7 @@ def Create(
132133
extension = Extension(
133134
extension_type=extension_type,
134135
auto_upgrade_minor_version=True,
136+
auto_upgrade_mode=auto_upgrade_mode,
135137
release_train=release_train,
136138
scope=ext_scope,
137139
configuration_settings=configuration_settings
@@ -144,6 +146,7 @@ def Update(
144146
resource_group_name,
145147
cluster_name,
146148
auto_upgrade_minor_version,
149+
auto_upgrade_mode,
147150
release_train,
148151
version,
149152
configuration_settings,
@@ -179,6 +182,7 @@ def Update(
179182

180183
return PatchExtension(
181184
auto_upgrade_minor_version=True,
185+
auto_upgrade_mode=auto_upgrade_mode,
182186
release_train=release_train,
183187
configuration_settings=configuration_settings,
184188
)

src/k8s-extension/azext_k8s_extension/partner_extensions/DefaultExtension.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def Create(
3131
extension_type,
3232
scope,
3333
auto_upgrade_minor_version,
34+
auto_upgrade_mode,
3435
release_train,
3536
version,
3637
target_namespace,
@@ -74,6 +75,7 @@ def Create(
7475
extension = Extension(
7576
extension_type=extension_type,
7677
auto_upgrade_minor_version=auto_upgrade_minor_version,
78+
auto_upgrade_mode=auto_upgrade_mode,
7779
release_train=release_train,
7880
version=version,
7981
scope=ext_scope,
@@ -89,6 +91,7 @@ def Update(
8991
resource_group_name,
9092
cluster_name,
9193
auto_upgrade_minor_version,
94+
auto_upgrade_mode,
9295
release_train,
9396
version,
9497
configuration_settings,
@@ -102,6 +105,7 @@ def Update(
102105

103106
return PatchExtension(
104107
auto_upgrade_minor_version=auto_upgrade_minor_version,
108+
auto_upgrade_mode=auto_upgrade_mode,
105109
release_train=release_train,
106110
version=version,
107111
configuration_settings=configuration_settings,

0 commit comments

Comments
 (0)