diff --git a/src/network-manager/HISTORY.rst b/src/network-manager/HISTORY.rst index 7e2117b808a..ecb4246e341 100644 --- a/src/network-manager/HISTORY.rst +++ b/src/network-manager/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +1.0.1 ++++++ +* `az network manager connect-config`: Fix cross-tenant resource id for `--hubs` + 1.0.0 +++++ * Fix example and help info (Fix #6788) diff --git a/src/network-manager/azext_network_manager/__init__.py b/src/network-manager/azext_network_manager/__init__.py index 29c70bfbf6a..7dbe564a1bf 100644 --- a/src/network-manager/azext_network_manager/__init__.py +++ b/src/network-manager/azext_network_manager/__init__.py @@ -7,9 +7,9 @@ # Changes may cause incorrect behavior and will be lost if the code is # regenerated. # -------------------------------------------------------------------------- - +# pylint disable=unused-import from azure.cli.core import AzCommandsLoader -import azext_network_manager._help +import azext_network_manager._help # pylint: disable=unused-import class NetworkManagementClientCommandsLoader(AzCommandsLoader): @@ -17,8 +17,7 @@ class NetworkManagementClientCommandsLoader(AzCommandsLoader): def __init__(self, cli_ctx=None): from azure.cli.core.commands import CliCommandType custom_command_type = CliCommandType(operations_tmpl='azext_network_manager.custom#{}') - super(NetworkManagementClientCommandsLoader, self).__init__(cli_ctx=cli_ctx, - custom_command_type=custom_command_type) + super().__init__(cli_ctx=cli_ctx, custom_command_type=custom_command_type) def load_command_table(self, args): from azext_network_manager.commands import load_command_table diff --git a/src/network-manager/azext_network_manager/_params.py b/src/network-manager/azext_network_manager/_params.py index d36cdb3104e..4cbc6dfd136 100644 --- a/src/network-manager/azext_network_manager/_params.py +++ b/src/network-manager/azext_network_manager/_params.py @@ -42,8 +42,8 @@ def load_arguments(self, _): c.argument('description', type=str, help='A description of the network manager.') c.argument('network_manager_scopes', action=AddNetworkManagerScopes, nargs='+', help='Scope of Network ' 'Manager.') - c.argument('network_manager_scope_accesses', options_list=['--scope-accesses'], nargs='+', help='Scope Access. Available value: SecurityAdmin, ' - 'Connectivity.') + c.argument('network_manager_scope_accesses', options_list=['--scope-accesses'], nargs='+', + help='Scope Access. Available value: SecurityAdmin, Connectivity.') with self.argument_context('network manager update') as c: c.argument('network_manager_name', options_list=['--name', '-n', '--network-manager-name'], type=str, @@ -54,8 +54,8 @@ def load_arguments(self, _): c.argument('description', type=str, help='A description of the network manager.') c.argument('network_manager_scopes', action=AddNetworkManagerScopes, nargs='+', help='Scope of Network ' 'Manager.') - c.argument('network_manager_scope_accesses', options_list=['--scope-accesses'], nargs='+', help='Scope Access. Available value: SecurityAdmin, ' - 'Connectivity.') + c.argument('network_manager_scope_accesses', options_list=['--scope-accesses'], nargs='+', + help='Scope Access. Available value: SecurityAdmin, Connectivity.') c.ignore('parameters') with self.argument_context('network manager connect-config create') as c: @@ -117,33 +117,41 @@ def load_arguments(self, _): c.argument('rule_collection_name', type=str, help='The name of the admin rule collection.') with self.argument_context('network manager security-admin-config rule-collection rule create') as c: - c.argument('access', type=str, help='Indicates the access allowed for this particular rule.', arg_type=get_enum_type(['Allow', 'Deny', 'AlwaysAllow'])) + c.argument('access', type=str, help='Indicates the access allowed for this particular rule.', + arg_type=get_enum_type(['Allow', 'Deny', 'AlwaysAllow'])) c.argument('flag', type=str, help='Default rule flag.') - c.argument('kind', type=str, help='Required. Whether the rule is custom or default.Constant filled by server.', arg_type=get_enum_type(['Custom', 'Default'])) + c.argument('kind', type=str, help='Required. Whether the rule is custom or default.Constant filled by server.', + arg_type=get_enum_type(['Custom', 'Default'])) c.argument('priority', type=int, help='The priority of the rule.') - c.argument('sources', action=AddSource, nargs='+', help='The CIDR or source IP ranges. Address prefix type is an enum with values IPPrefix or ServiceTag') + c.argument('sources', action=AddSource, nargs='+', help='The CIDR or source IP ranges. Address prefix type is' + ' an enum with values IPPrefix or ServiceTag') c.argument('destinations', action=AddDestination, nargs='+', help='The destination address prefixes. CIDR or ' 'destination IP ranges. Address prefix type is an enum with values IPPrefix or ServiceTag') c.argument('description', type=str, help='A description for this rule. Restricted to 140 chars.') c.argument('protocol', arg_type=get_enum_type(['Tcp', 'Udp', 'Icmp', 'Esp', 'Any', 'Ah']), help='Network ' 'protocol this rule applies to.') c.argument('source_port_ranges', nargs='+', help='The source port ranges.') - c.argument('destination_port_ranges', options_list=['--dest-port-ranges'], nargs='+', help='The destination port ranges.') + c.argument('destination_port_ranges', options_list=['--dest-port-ranges'], nargs='+', + help='The destination port ranges.') c.argument('direction', arg_type=get_enum_type(['Inbound', 'Outbound']), help='Indicates if the traffic ' 'matched against the rule in inbound or outbound.') with self.argument_context('network manager security-admin-config rule-collection rule update') as c: - c.argument('access', type=str, help='Indicates the access allowed for this particular rule.', arg_type=get_enum_type(['Allow', 'Deny', 'AlwaysAllow'])) + c.argument('access', type=str, help='Indicates the access allowed for this particular rule.', + arg_type=get_enum_type(['Allow', 'Deny', 'AlwaysAllow'])) c.argument('flag', type=str, help='Default rule flag.') - c.argument('kind', type=str, help='Required. Whether the rule is custom or default.Constant filled by server.', arg_type=get_enum_type(['Custom', 'Default'])) + c.argument('kind', type=str, help='Required. Whether the rule is custom or default.Constant filled by server.', + arg_type=get_enum_type(['Custom', 'Default'])) c.argument('priority', type=int, help='The priority of the rule.') - c.argument('sources', action=AddSource, nargs='+', help='The CIDR or source IP ranges. Address prefix type is an enum with values IPPrefix or ServiceTag') + c.argument('sources', action=AddSource, nargs='+', help='The CIDR or source IP ranges. Address prefix type is ' + 'an enum with values IPPrefix or ServiceTag') c.argument('destinations', action=AddDestination, nargs='+', help='The destination address prefixes. CIDR or ' 'destination IP ranges. Address prefix type is an enum with values IPPrefix or ServiceTag') c.argument('description', type=str, help='A description for this rule. Restricted to 140 chars.') c.argument('protocol', arg_type=get_enum_type(['Tcp', 'Udp', 'Icmp', 'Esp', 'Any', 'Ah']), help='Network ' 'protocol this rule applies to.') c.argument('source_port_ranges', nargs='+', help='The source port ranges.') - c.argument('destination_port_ranges', options_list=['--dest-port-ranges'], nargs='+', help='The destination port ranges.') + c.argument('destination_port_ranges', options_list=['--dest-port-ranges'], nargs='+', + help='The destination port ranges.') c.argument('direction', arg_type=get_enum_type(['Inbound', 'Outbound']), help='Indicates if the traffic ' 'matched against the rule in inbound or outbound.') diff --git a/src/network-manager/azext_network_manager/action.py b/src/network-manager/azext_network_manager/action.py index a97f7deee31..40133d20f58 100644 --- a/src/network-manager/azext_network_manager/action.py +++ b/src/network-manager/azext_network_manager/action.py @@ -19,14 +19,14 @@ def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) namespace.network_manager_scopes = action - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): properties[k].append(v) properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + except ValueError as exc: + raise CLIError(f'usage error: {option_string} [KEY=VALUE ...]') from exc d = {} for k in properties: kl = k.lower() @@ -36,24 +36,24 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use elif kl == 'subscriptions': d['subscriptions'] = v else: - raise CLIError('Unsupported Key {} is provided for parameter network_manager_scopes. All possible keys ' - 'are: management-groups, subscriptions'.format(k)) + raise CLIError(f'Unsupported Key {k} is provided for parameter network_manager_scopes. ' + f'All possible keys are: management-groups, subscriptions') return d class AddConnectivityconfigurationsAppliesToGroups(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddConnectivityconfigurationsAppliesToGroups, self).__call__(parser, namespace, action, option_string) + super().__call__(parser, namespace, action, option_string) - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): properties[k].append(v) properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + except ValueError as exc: + raise CLIError(f'usage error: {option_string} [KEY=VALUE ...]') from exc d = {} for k in properties: kl = k.lower() @@ -67,24 +67,24 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use elif kl == 'group-connectivity': d['group_connectivity'] = v[0] else: - raise CLIError('Unsupported Key {} is provided for parameter applies_to_groups. All possible keys are: ' - 'network-group-id, use-hub-gateway, is-global, group-connectivity'.format(k)) + raise CLIError(f'Unsupported Key {k} is provided for parameter applies_to_groups. All possible keys ' + f'are: network-group-id, use-hub-gateway, is-global, group-connectivity') return d class AddGroupMembers(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddGroupMembers, self).__call__(parser, namespace, action, option_string) + super().__call__(parser, namespace, action, option_string) - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): properties[k].append(v) properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + except ValueError as exc: + raise CLIError(f'usage error: {option_string} [KEY=VALUE ...]') from exc d = {} for k in properties: kl = k.lower() @@ -94,24 +94,24 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use elif kl == 'resource-type': d['resource_type'] = v[0] else: - raise CLIError('Unsupported Key {} is provided for parameter group_members. All possible keys are: ' - 'resource-id, resource-type'.format(k)) + raise CLIError(f'Unsupported Key {k} is provided for parameter group_members. All possible keys are: ' + 'resource-id, resource-type') return d class AddSource(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddSource, self).__call__(parser, namespace, action, option_string) + super().__call__(parser, namespace, action, option_string) - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): properties[k].append(v) properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + except ValueError as exc: + raise CLIError(f'usage error: {option_string} [KEY=VALUE ...]') from exc d = {} for k in properties: kl = k.lower() @@ -121,24 +121,24 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use elif kl == 'address-prefix-type': d['address_prefix_type'] = v[0] else: - raise CLIError('Unsupported Key {} is provided for parameter source. All possible keys are: ' - 'address-prefix, address-prefix-type'.format(k)) + raise CLIError(f'Unsupported Key {k} is provided for parameter source. All possible keys are: ' + 'address-prefix, address-prefix-type') return d class AddDestination(argparse._AppendAction): def __call__(self, parser, namespace, values, option_string=None): action = self.get_action(values, option_string) - super(AddDestination, self).__call__(parser, namespace, action, option_string) + super().__call__(parser, namespace, action, option_string) - def get_action(self, values, option_string): # pylint: disable=no-self-use + def get_action(self, values, option_string): try: properties = defaultdict(list) for (k, v) in (x.split('=', 1) for x in values): properties[k].append(v) properties = dict(properties) - except ValueError: - raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + except ValueError as exc: + raise CLIError(f'usage error: {option_string} [KEY=VALUE ...]') from exc d = {} for k in properties: kl = k.lower() @@ -148,6 +148,6 @@ def get_action(self, values, option_string): # pylint: disable=no-self-use elif kl == 'address-prefix-type': d['address_prefix_type'] = v[0] else: - raise CLIError('Unsupported Key {} is provided for parameter destination. All possible keys are: ' - 'address-prefix, address-prefix-type'.format(k)) + raise CLIError(f'Unsupported Key {k} is provided for parameter destination. All possible keys are: ' + 'address-prefix, address-prefix-type') return d diff --git a/src/network-manager/azext_network_manager/commands.py b/src/network-manager/azext_network_manager/commands.py index 741ebe38ed6..0717775eeca 100644 --- a/src/network-manager/azext_network_manager/commands.py +++ b/src/network-manager/azext_network_manager/commands.py @@ -8,7 +8,7 @@ # regenerated. # -------------------------------------------------------------------------- # pylint: disable=too-many-statements -# pylint: disable=too-many-locals option_length_too_long +# pylint: disable=too-many-locals def load_command_table(self, _): @@ -18,6 +18,9 @@ def load_command_table(self, _): g.custom_command('update', 'network_manager_update') with self.command_group('network manager connect-config') as g: + from .custom import ConnectConfigCreate, ConnectConfigUpdate + self.command_table["network manager connect-config create"] = ConnectConfigCreate(loader=self) + self.command_table["network manager connect-config update"] = ConnectConfigUpdate(loader=self) g.custom_command('create', 'network_manager_connect_config_create') g.custom_command('update', 'network_manager_connect_config_update') @@ -43,4 +46,5 @@ def load_command_table(self, _): with self.command_group("network manager connection management-group"): from .custom import ConnectionManagementGroupCreate - self.command_table["network manager connection management-group create"] = ConnectionManagementGroupCreate(loader=self) + self.command_table["network manager connection management-group create"] = \ + ConnectionManagementGroupCreate(loader=self) diff --git a/src/network-manager/azext_network_manager/custom.py b/src/network-manager/azext_network_manager/custom.py index a5c987909cc..02e9b0db798 100644 --- a/src/network-manager/azext_network_manager/custom.py +++ b/src/network-manager/azext_network_manager/custom.py @@ -9,11 +9,14 @@ # -------------------------------------------------------------------------- # pylint: disable=too-many-lines # pylint: disable=unused-argument +# pylint: disable=protected-access from knack.util import CLIError from .aaz.latest.network.manager.group.static_member import Create as _GroupStaticMemberCreate from .aaz.latest.network.manager.scope_connection import Create as _ScopeConnectionCreate from .aaz.latest.network.manager.connection.management_group import Create as _ConnectionManagementGroupCreate from .aaz.latest.network.manager.connection.subscription import Create as _ConnectionSubscriptionCreate +from .aaz.latest.network.manager.connect_config import Create as _ConnectConfigCreate +from .aaz.latest.network.manager.connect_config import Update as _ConnectConfigUpdate def network_manager_create(cmd, @@ -78,7 +81,6 @@ def network_manager_connect_config_create(cmd, delete_existing_peering=None): if connectivity_topology == 'HubAndSpoke' and hub is None: raise CLIError("if 'HubAndSpoke' is the topolopy seleted,'--hub' is required") - from .aaz.latest.network.manager.connect_config import Create as _ConnectConfigCreate connectivity_configuration = {} connectivity_configuration['resource_group'] = resource_group_name connectivity_configuration['network_manager_name'] = network_manager_name @@ -91,7 +93,7 @@ def network_manager_connect_config_create(cmd, connectivity_configuration['applies_to_groups'] = applies_to_groups if delete_existing_peering is not None: connectivity_configuration['delete_existing_peering'] = 'True' if delete_existing_peering else 'False' - return _ConnectConfigCreate(cli_ctx=cmd.cli_ctx)(command_args=connectivity_configuration) + return ConnectConfigCreate(cli_ctx=cmd.cli_ctx)(command_args=connectivity_configuration) def network_manager_connect_config_update(cmd, @@ -103,7 +105,6 @@ def network_manager_connect_config_update(cmd, is_global=None, applies_to_groups=None, delete_existing_peering=None): - from .aaz.latest.network.manager.connect_config import Update as _ConnectConfigUpdate connectivity_configuration = {} connectivity_configuration['resource_group'] = resource_group_name connectivity_configuration['network_manager_name'] = network_manager_name @@ -118,7 +119,7 @@ def network_manager_connect_config_update(cmd, connectivity_configuration['applies_to_groups'] = applies_to_groups if delete_existing_peering is not None: connectivity_configuration['delete_existing_peering'] = 'True' if delete_existing_peering else 'False' - return _ConnectConfigUpdate(cli_ctx=cmd.cli_ctx)(command_args=connectivity_configuration) + return ConnectConfigUpdate(cli_ctx=cmd.cli_ctx)(command_args=connectivity_configuration) def network_manager_admin_rule_collection_create(cmd, @@ -257,7 +258,8 @@ def _build_arguments_schema(cls, *args, **kwargs): from azure.cli.core.aaz import AAZResourceIdArgFormat args_schema = super()._build_arguments_schema(*args, **kwargs) args_schema.resource_id._fmt = AAZResourceIdArgFormat( - template="/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.Network/virtualNetworks/{}", + template="/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.Network/" + "virtualNetworks/{}", ) args_schema.resource_id._required = True return args_schema @@ -286,3 +288,27 @@ def _build_arguments_schema(cls, *args, **kwargs): args_schema = super()._build_arguments_schema(*args, **kwargs) args_schema.network_manager_id._required = True return args_schema + + +class ConnectConfigCreate(_ConnectConfigCreate): + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + from azure.cli.core.aaz import AAZResourceIdArgFormat + args_schema = super()._build_arguments_schema(*args, **kwargs) + args_schema.hubs._element.resource_id._fmt = AAZResourceIdArgFormat( + template="/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.Network/" + "virtualNetworks/{}", + ) + return args_schema + + +class ConnectConfigUpdate(_ConnectConfigUpdate): + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + from azure.cli.core.aaz import AAZResourceIdArgFormat + args_schema = super()._build_arguments_schema(*args, **kwargs) + args_schema.hubs._element.resource_id._fmt = AAZResourceIdArgFormat( + template="/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.Network/" + "virtualNetworks/{}", + ) + return args_schema diff --git a/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py b/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py index bb416a927fe..29c49720a67 100644 --- a/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py +++ b/src/network-manager/azext_network_manager/tests/latest/test_network_scenario.py @@ -42,7 +42,7 @@ def test_network_manager_crud(self, resource_group): 'subscriptions={sub} ' '-l eastus2 ' '--resource-group {rg}') - + self.cmd('network manager show --resource-group {rg} --name {name}') # Update is not allowed for NM. @@ -192,7 +192,6 @@ def test_network_manager_admin_rule_crud(self, virtual_network, resource_group): 'name': 'TestStaticMember' }) - self.cmd('network manager create --name {manager_name} --description "My Test Network Manager" ' '--scope-accesses "SecurityAdmin" "Connectivity" ' '--network-manager-scopes ' @@ -213,7 +212,6 @@ def test_network_manager_admin_rule_crud(self, virtual_network, resource_group): '--rule-collection-name {collection_name} --description {description} ' '--applies-to-groups network-group-id={sub}/resourceGroups/{rg}/providers/Microsoft.Network/networkManagers/{manager_name}/networkGroups/{group_name}') - self.cmd('network manager security-admin-config rule-collection rule create -g {rg} --network-manager-name {manager_name} --configuration-name {config_name} --rule-collection-name {collection_name} ' '--rule-name {rule_name} --kind "Custom" --protocol "Tcp" --access "Allow" --priority 32 --direction "Inbound"', checks=[self.check('access', 'Allow'), @@ -271,7 +269,7 @@ def test_network_manager_admin_rule_collection_crud(self, virtual_network, resou self.cmd('network manager security-admin-config rule-collection create --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} ' '--rule-collection-name {collection_name} --description {description} ' '--applies-to-groups network-group-id={sub}/resourceGroups/{rg}/providers/Microsoft.Network/networkManagers/{manager_name}/networkGroups/{group_name}') - + self.cmd('network manager security-admin-config rule-collection show -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name}') self.cmd('network manager security-admin-config rule-collection update -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name}') @@ -350,7 +348,7 @@ def test_network_manager_user_rule_collection_crud(self, virtual_network, resour self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' ' --member-type "Microsoft.Network/virtualNetworks" -g {rg} ') - + self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -360,7 +358,7 @@ def test_network_manager_user_rule_collection_crud(self, virtual_network, resour self.cmd('network manager security-user-config rule-collection create --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} ' '--rule-collection-name {collection_name} --description {description} ' '--applies-to-groups network-group-id={sub}/resourceGroups/{rg}/providers/Microsoft.Network/networkManagers/{manager_name}/networkGroups/{group_name}') - + self.cmd('network manager security-user-config rule-collection show -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name}') self.cmd('network manager security-user-config rule-collection update -g {rg} --configuration-name {config_name} --network-manager-name {manager_name} --rule-collection-name {collection_name}') self.cmd('network manager security-user-config rule-collection list -g {rg} --configuration-name {config_name} --network-manager-name {manager_name}') @@ -391,7 +389,7 @@ def test_network_manager_connect_config_crud(self, virtual_network, resource_gro self.cmd('network manager group create --name {group_name} --network-manager-name {manager_name} --description {description} ' ' -g {rg} ') - + self.cmd('network manager group static-member create --name {name} --network-group-name {group_name} --network-manager-name {manager_name} ' '--resource-id="{sub}/resourceGroups/{rg}/providers/Microsoft.Network/virtualnetworks/{virtual_network}" -g {rg} ') @@ -413,7 +411,7 @@ def test_network_manager_connect_config_crud(self, virtual_network, resource_gro self.cmd('network manager connect-config update --configuration-name {config_name} --network-manager-name {manager_name} -g {rg}') self.cmd('network manager connect-config list --network-manager-name {manager_name} -g {rg}') self.cmd('network manager connect-config delete --configuration-name {config_name} --network-manager-name {manager_name} -g {rg} --force --yes') - + self.cmd('network manager group delete -g {rg} --name {group_name} --network-manager-name {manager_name} --force --yes') self.cmd('network manager delete --resource-group {rg} --name {manager_name} --force --yes') diff --git a/src/network-manager/setup.py b/src/network-manager/setup.py index b315072dfd4..6519b351cc5 100644 --- a/src/network-manager/setup.py +++ b/src/network-manager/setup.py @@ -10,7 +10,7 @@ from setuptools import setup, find_packages # HISTORY.rst entry. -VERSION = '1.0.0' +VERSION = '1.0.1' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers