Skip to content

Commit 1451bd5

Browse files
authored
[Keyvault] Fix #20520 az keyvault network-rule: Support removing multiple IP (#22025)
* [Keyvault] Fix #20520 `az keyvault network-rule`: Support removing multiple ip * Minor fix Co-authored-by: Hang Lei <2227874+bebound@users.noreply.github.com>
1 parent 3718586 commit 1451bd5

File tree

4 files changed

+533
-412
lines changed

4 files changed

+533
-412
lines changed

src/azure-cli/azure/cli/command_modules/keyvault/_params.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,10 @@ class CLISecurityDomainOperation(str, Enum):
244244
c.argument('subnet', help='Name or ID of subnet. If name is supplied, `--vnet-name` must be supplied.')
245245
c.argument('vnet_name', help='Name of a virtual network.', validator=validate_subnet)
246246

247-
with self.argument_context('keyvault network-rule add', min_api='2018-02-14') as c:
248-
c.argument('ip_address', nargs='*', help='IPv4 address or CIDR range. Can supply a list: --ip-address ip1 [ip2]...', validator=validate_ip_address)
247+
for item in ['add', 'remove']:
248+
with self.argument_context('keyvault network-rule {}'.format(item), min_api='2018-02-14') as c:
249+
c.argument('ip_address', nargs='*', help='IPv4 address or CIDR range. Can supply a list: --ip-address ip1 '
250+
'[ip2]...', validator=validate_ip_address)
249251

250252
for item in ['approve', 'reject', 'delete', 'show', 'wait']:
251253
with self.argument_context('keyvault private-endpoint-connection {}'.format(item), min_api='2018-02-14') as c:

src/azure-cli/azure/cli/command_modules/keyvault/custom.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,8 @@ def remove_network_rule(cmd, client, resource_group_name, vault_name, ip_address
10681068
rules.virtual_network_rules = new_rules
10691069

10701070
if ip_address and rules.ip_rules:
1071-
new_rules = [x for x in rules.ip_rules if ip_network(x.value) != ip_network(ip_address)]
1071+
to_remove = [ip_network(x) for x in ip_address]
1072+
new_rules = list(filter(lambda x: all(ip_network(x.value) != i for i in to_remove), rules.ip_rules))
10721073
to_modify |= len(new_rules) != len(rules.ip_rules)
10731074
if to_modify:
10741075
rules.ip_rules = new_rules

0 commit comments

Comments
 (0)