Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ def get_auth_management_client(cli_ctx, scope=None, **_):
matched = re.match('/subscriptions/(?P<subscription>[^/]*)/', scope)
if matched:
subscription_id = matched.groupdict()['subscription']
else:
raise CLIError("{} does not contain subscription Id.".format(scope))
return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_AUTHORIZATION, subscription_id=subscription_id)


Expand Down
4 changes: 2 additions & 2 deletions src/azure-cli/azure/cli/command_modules/acs/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
validate_list_of_integers, validate_ssh_key, validate_connector_name, validate_max_pods, validate_nodes_count,
validate_nodepool_name, validate_vm_set_type, validate_load_balancer_sku, validate_load_balancer_outbound_ips,
validate_load_balancer_outbound_ip_prefixes, validate_taints, validate_ip_ranges, validate_acr,
validate_load_balancer_outbound_ports, validate_load_balancer_idle_timeout)
validate_load_balancer_outbound_ports, validate_load_balancer_idle_timeout, validate_vnet_subnet_id)

aci_connector_os_type = ['Windows', 'Linux', 'Both']

Expand Down Expand Up @@ -193,7 +193,7 @@ def load_arguments(self, _):
c.argument('no_ssh_key', options_list=['--no-ssh-key', '-x'])
c.argument('pod_cidr')
c.argument('service_cidr')
c.argument('vnet_subnet_id')
c.argument('vnet_subnet_id', type=str, validator=validate_vnet_subnet_id)
c.argument('workspace_resource_id')
c.argument('skip_subnet_role_assignment', action='store_true')
c.argument('api_server_authorized_ip_ranges', type=str, validator=validate_ip_ranges)
Expand Down
9 changes: 9 additions & 0 deletions src/azure-cli/azure/cli/command_modules/acs/_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,12 @@ def validate_taints(namespace):
def validate_acr(namespace):
if namespace.attach_acr and namespace.detach_acr:
raise CLIError('Cannot specify "--attach-acr" and "--detach-acr" at the same time.')


def validate_vnet_subnet_id(namespace):
if namespace.vnet_subnet_id is not None:
if namespace.vnet_subnet_id == '':
return
from msrestazure.tools import is_valid_resource_id
if not is_valid_resource_id(namespace.vnet_subnet_id):
raise CLIError("--vnet-subnet-id is not a valid Azure resource ID.")
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,34 @@ def test_IPv6(self):
class Namespace:
def __init__(self, api_server_authorized_ip_ranges):
self.api_server_authorized_ip_ranges = api_server_authorized_ip_ranges


class TestVNetSubnetId(unittest.TestCase):
def test_invalid_vnet_subnet_id(self):
invalid_vnet_subnet_id = "dummy subnet id"
namespace = VnetSubnetIdNamespace(invalid_vnet_subnet_id)
err = ("--vnet-subnet-id is not a valid Azure resource ID.")

with self.assertRaises(CLIError) as cm:
validators.validate_vnet_subnet_id(namespace)
self.assertEqual(str(cm.exception), err)

def test_valid_vnet_subnet_id(self):
invalid_vnet_subnet_id = "/subscriptions/testid/resourceGroups/MockedResourceGroup/providers/Microsoft.Network/virtualNetworks/MockedNetworkId/subnets/MockedSubNetId"
namespace = VnetSubnetIdNamespace(invalid_vnet_subnet_id)
validators.validate_vnet_subnet_id(namespace)

def test_none_vnet_subnet_id(self):
invalid_vnet_subnet_id = None
namespace = VnetSubnetIdNamespace(invalid_vnet_subnet_id)
validators.validate_vnet_subnet_id(namespace)

def test_empty_vnet_subnet_id(self):
invalid_vnet_subnet_id = ""
namespace = VnetSubnetIdNamespace(invalid_vnet_subnet_id)
validators.validate_vnet_subnet_id(namespace)


class VnetSubnetIdNamespace:
def __init__(self, vnet_subnet_id):
self.vnet_subnet_id = vnet_subnet_id