Skip to content

Commit b406fb1

Browse files
authored
{AKS} populate location of managed namespaces using managed cluster's location (Azure#8821)
1 parent f3be071 commit b406fb1

File tree

7 files changed

+1712
-1135
lines changed

7 files changed

+1712
-1135
lines changed

src/aks-preview/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ To release a new version, please select a new version number (usually plus 1 to
1212
Pending
1313
+++++++
1414

15+
18.0.0b8
16+
+++++++
17+
* Populate location of managed namespaces using managed cluster's location
18+
1519
18.0.0b7
1620
+++++++
1721
* Add option `--disable-http-proxy` to `az aks update`.

src/aks-preview/azext_aks_preview/managednamespace.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from azure.cli.core.util import (
1313
sdk_no_wait,
1414
)
15+
from azure.cli.core.commands.client_factory import get_mgmt_service_client
16+
from azure.mgmt.containerservice import ContainerServiceClient
1517

1618
from azext_aks_preview._consts import (
1719
CONST_NAMESPACE_NETWORK_POLICY_RULE_DENYALL,
@@ -27,11 +29,19 @@
2729
from azext_aks_preview._client_factory import CUSTOM_MGMT_AKS_PREVIEW
2830

2931

32+
def get_cluster_location(cmd, resource_group_name, cluster_name):
33+
containerservice_client = get_mgmt_service_client(cmd.cli_ctx, ContainerServiceClient)
34+
cluster = containerservice_client.managed_clusters.get(resource_group_name, cluster_name)
35+
return cluster.location
36+
37+
3038
def aks_managed_namespace_add(cmd, client, raw_parameters, headers, no_wait):
3139
resource_group_name = raw_parameters.get("resource_group_name")
3240
cluster_name = raw_parameters.get("cluster_name")
3341
namespace_name = raw_parameters.get("name")
42+
3443
namespace_config = constructNamespace(cmd, raw_parameters, namespace_name)
44+
namespace_config.location = get_cluster_location(cmd, resource_group_name, cluster_name)
3545

3646
return sdk_no_wait(
3747
no_wait,
@@ -193,7 +203,9 @@ def aks_managed_namespace_update(cmd, client, raw_parameters, headers, existedNa
193203
resource_group_name = raw_parameters.get("resource_group_name")
194204
cluster_name = raw_parameters.get("cluster_name")
195205
namespace_name = raw_parameters.get("name")
206+
196207
namespace_config = updateNamespace(cmd, raw_parameters, existedNamespace)
208+
namespace_config.location = get_cluster_location(cmd, resource_group_name, cluster_name)
197209

198210
return sdk_no_wait(
199211
no_wait,

src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_create_and_update_outbound_ips.yaml

Lines changed: 1004 additions & 785 deletions
Large diffs are not rendered by default.

src/aks-preview/azext_aks_preview/tests/latest/recordings/test_aks_managed_namespace.yaml

Lines changed: 612 additions & 331 deletions
Large diffs are not rendered by default.

src/aks-preview/azext_aks_preview/tests/latest/test_aks_commands.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7227,9 +7227,9 @@ def test_aks_maintenanceconfiguration(
72277227
)
72287228

72297229
@AllowLargeResponse()
7230-
@AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='eastus2')
7230+
@AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix='clitest', location='uksouth')
72317231
def test_aks_managed_namespace(self, resource_group, resource_group_location):
7232-
# reset the count so in replay mode the random names will start with 0
7232+
# reset the count so that in replay mode the random names will start with 0
72337233
self.test_resources_count = 0
72347234
# kwargs for string formatting
72357235
resource_name = self.create_random_name('cliakstest', 16)
@@ -7243,10 +7243,11 @@ def test_aks_managed_namespace(self, resource_group, resource_group_location):
72437243
'ssh_key_value': self.generate_ssh_keys(),
72447244
})
72457245

7246-
create_cmd = ' '.join([
7247-
'aks', 'create', '--resource-group={resource_group}', '--name={resource_name}', '--location={location}',
7248-
'--ssh-key-value={ssh_key_value}'
7249-
])
7246+
create_cmd = (
7247+
"aks create --resource-group={resource_group} --name={resource_name} --location={location} "
7248+
"--enable-aad --aad-admin-group-object-ids 00000000-0000-0000-0000-000000000001 "
7249+
"--ssh-key-value={ssh_key_value}"
7250+
)
72507251

72517252
self.cmd(create_cmd, checks=[
72527253
self.check('provisioningState', 'Succeeded'),
@@ -7314,6 +7315,8 @@ def test_aks_managed_namespace(self, resource_group, resource_group_location):
73147315
checks=[self.is_empty()],
73157316
)
73167317

7318+
time.sleep(2*60)
7319+
73177320
self.cmd(
73187321
"aks delete -g {resource_group} -n {resource_name} --yes --no-wait",
73197322
checks=[self.is_empty()],

src/aks-preview/azext_aks_preview/tests/latest/test_managednamespace.py

Lines changed: 70 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# --------------------------------------------------------------------------------------------
55

66
import unittest
7-
7+
from unittest.mock import patch, Mock
88
import azext_aks_preview.managednamespace as ns
99
from azext_aks_preview.__init__ import register_aks_preview_resource_type
1010
from azure.cli.command_modules.acs.tests.latest.mocks import MockCLI, MockCmd
@@ -13,11 +13,26 @@
1313
RequiredArgumentMissingError,
1414
)
1515

16+
@patch("azext_aks_preview.managednamespace.get_mgmt_service_client")
1617
class TestAddManagedNamespace(unittest.TestCase):
17-
def test_add_managed_namespace_with_invalid_labels(self):
18+
def setUp(self):
19+
# Set up mock cluster client and location
20+
self.mock_cluster = Mock()
21+
self.mock_cluster.location = "eastus"
22+
23+
self.mock_managed_clusters = Mock()
24+
self.mock_managed_clusters.get.return_value = self.mock_cluster
25+
26+
self.mock_client = Mock()
27+
self.mock_client.managed_clusters = self.mock_managed_clusters
28+
29+
def test_add_managed_namespace_with_invalid_labels(self, mock_get_client):
1830
register_aks_preview_resource_type()
1931
cli_ctx = MockCLI()
2032
cmd = MockCmd(cli_ctx)
33+
34+
mock_get_client.return_value = self.mock_client
35+
2136
raw_parameters = {
2237
"resource_group_name": "test_rg",
2338
"cluster_name": "test_cluster",
@@ -29,10 +44,13 @@ def test_add_managed_namespace_with_invalid_labels(self):
2944
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
3045
self.assertEqual(str(cm.exception), err)
3146

32-
def test_add_managed_namespace_with_invalid_annotations(self):
47+
def test_add_managed_namespace_with_invalid_annotations(self, mock_get_client):
3348
register_aks_preview_resource_type()
3449
cli_ctx = MockCLI()
3550
cmd = MockCmd(cli_ctx)
51+
52+
mock_get_client.return_value = self.mock_client
53+
3654
raw_parameters = {
3755
"resource_group_name": "test_rg",
3856
"cluster_name": "test_cluster",
@@ -45,10 +63,13 @@ def test_add_managed_namespace_with_invalid_annotations(self):
4563
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
4664
self.assertEqual(str(cm.exception), err)
4765

48-
def test_add_managed_namespace_with_missing_cpu_request(self):
66+
def test_add_managed_namespace_with_missing_cpu_request(self, mock_get_client):
4967
register_aks_preview_resource_type()
5068
cli_ctx = MockCLI()
5169
cmd = MockCmd(cli_ctx)
70+
71+
mock_get_client.return_value = self.mock_client
72+
5273
raw_parameters = {
5374
"resource_group_name": "test_rg",
5475
"cluster_name": "test_cluster",
@@ -60,10 +81,13 @@ def test_add_managed_namespace_with_missing_cpu_request(self):
6081
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
6182
self.assertEqual(str(cm.exception), err)
6283

63-
def test_add_managed_namespace_with_invalid_ingress_policy(self):
84+
def test_add_managed_namespace_with_invalid_ingress_policy(self, mock_get_client):
6485
register_aks_preview_resource_type()
6586
cli_ctx = MockCLI()
6687
cmd = MockCmd(cli_ctx)
88+
89+
mock_get_client.return_value = self.mock_client
90+
6791
raw_parameters = {
6892
"resource_group_name": "test_rg",
6993
"cluster_name": "test_cluster",
@@ -79,10 +103,13 @@ def test_add_managed_namespace_with_invalid_ingress_policy(self):
79103
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
80104
self.assertIn(err, str(cm.exception))
81105

82-
def test_add_managed_namespace_with_invalid_egress_policy(self):
106+
def test_add_managed_namespace_with_invalid_egress_policy(self, mock_get_client):
83107
register_aks_preview_resource_type()
84108
cli_ctx = MockCLI()
85109
cmd = MockCmd(cli_ctx)
110+
111+
mock_get_client.return_value = self.mock_client
112+
86113
raw_parameters = {
87114
"resource_group_name": "test_rg",
88115
"cluster_name": "test_cluster",
@@ -99,10 +126,13 @@ def test_add_managed_namespace_with_invalid_egress_policy(self):
99126
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
100127
self.assertIn(err, str(cm.exception))
101128

102-
def test_add_managed_namespace_with_invalid_adoption_policy(self):
129+
def test_add_managed_namespace_with_invalid_adoption_policy(self, mock_get_client):
103130
register_aks_preview_resource_type()
104131
cli_ctx = MockCLI()
105132
cmd = MockCmd(cli_ctx)
133+
134+
mock_get_client.return_value = self.mock_client
135+
106136
raw_parameters = {
107137
"resource_group_name": "test_rg",
108138
"cluster_name": "test_cluster",
@@ -120,10 +150,13 @@ def test_add_managed_namespace_with_invalid_adoption_policy(self):
120150
ns.aks_managed_namespace_add(cmd, None, raw_parameters, None, False)
121151
self.assertIn(err, str(cm.exception))
122152

123-
def test_add_managed_namespace_with_invalid_delete_policy(self):
153+
def test_add_managed_namespace_with_invalid_delete_policy(self, mock_get_client):
124154
register_aks_preview_resource_type()
125155
cli_ctx = MockCLI()
126156
cmd = MockCmd(cli_ctx)
157+
158+
mock_get_client.return_value = self.mock_client
159+
127160
raw_parameters = {
128161
"resource_group_name": "test_rg",
129162
"cluster_name": "test_cluster",
@@ -145,11 +178,27 @@ def test_add_managed_namespace_with_invalid_delete_policy(self):
145178
# aks_managed_namespace_add(cmd, client, raw_parameters, headers, no_wait):
146179
# aks_managed_namespace_update(cmd, client, raw_parameters, headers, existedNamespace, no_wait)
147180

181+
@patch("azext_aks_preview.managednamespace.get_mgmt_service_client")
148182
class TestUpdateManagedNamespace(unittest.TestCase):
149-
def test_update_managed_namespace_with_invalid_ingress_policy(self):
183+
def setUp(self):
184+
# Set up mock cluster client and location
185+
self.mock_cluster = Mock()
186+
self.mock_cluster.location = "eastus"
187+
188+
self.mock_managed_clusters = Mock()
189+
self.mock_managed_clusters.get.return_value = self.mock_cluster
190+
191+
self.mock_client = Mock()
192+
self.mock_client.managed_clusters = self.mock_managed_clusters
193+
194+
195+
def test_update_managed_namespace_with_invalid_ingress_policy(self, mock_get_client):
150196
register_aks_preview_resource_type()
151197
cli_ctx = MockCLI()
152198
cmd = MockCmd(cli_ctx)
199+
200+
mock_get_client.return_value = self.mock_client
201+
153202
raw_parameters = {
154203
"resource_group_name": "test_rg",
155204
"cluster_name": "test_cluster",
@@ -165,10 +214,13 @@ def test_update_managed_namespace_with_invalid_ingress_policy(self):
165214
ns.aks_managed_namespace_update(cmd, None, raw_parameters, None, None, False)
166215
self.assertIn(err, str(cm.exception))
167216

168-
def test_update_managed_namespace_with_invalid_egress_policy(self):
217+
def test_update_managed_namespace_with_invalid_egress_policy(self, mock_get_client):
169218
register_aks_preview_resource_type()
170219
cli_ctx = MockCLI()
171220
cmd = MockCmd(cli_ctx)
221+
222+
mock_get_client.return_value = self.mock_client
223+
172224
raw_parameters = {
173225
"resource_group_name": "test_rg",
174226
"cluster_name": "test_cluster",
@@ -185,10 +237,13 @@ def test_update_managed_namespace_with_invalid_egress_policy(self):
185237
ns.aks_managed_namespace_update(cmd, None, raw_parameters, None, None, False)
186238
self.assertIn(err, str(cm.exception))
187239

188-
def test_update_managed_namespace_with_invalid_adoption_policy(self):
240+
def test_update_managed_namespace_with_invalid_adoption_policy(self, mock_get_client):
189241
register_aks_preview_resource_type()
190242
cli_ctx = MockCLI()
191243
cmd = MockCmd(cli_ctx)
244+
245+
mock_get_client.return_value = self.mock_client
246+
192247
raw_parameters = {
193248
"resource_group_name": "test_rg",
194249
"cluster_name": "test_cluster",
@@ -206,10 +261,13 @@ def test_update_managed_namespace_with_invalid_adoption_policy(self):
206261
ns.aks_managed_namespace_update(cmd, None, raw_parameters, None, None, False)
207262
self.assertIn(err, str(cm.exception))
208263

209-
def test_update_managed_namespace_with_invalid_delete_policy(self):
264+
def test_update_managed_namespace_with_invalid_delete_policy(self, mock_get_client):
210265
register_aks_preview_resource_type()
211266
cli_ctx = MockCLI()
212267
cmd = MockCmd(cli_ctx)
268+
269+
mock_get_client.return_value = self.mock_client
270+
213271
raw_parameters = {
214272
"resource_group_name": "test_rg",
215273
"cluster_name": "test_cluster",

src/aks-preview/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from setuptools import setup, find_packages
1111

12-
VERSION = "18.0.0b7"
12+
VERSION = "18.0.0b8"
1313

1414
CLASSIFIERS = [
1515
"Development Status :: 4 - Beta",

0 commit comments

Comments
 (0)