Skip to content

Commit 44c3134

Browse files
authored
[Network] az network vnet subnet list-available-ips: Get list of available IPs for subnet (#23109)
* add new command `az network vnet subnet list-available-ips` * update _help.py
1 parent c5a87f8 commit 44c3134

File tree

5 files changed

+657
-0
lines changed

5 files changed

+657
-0
lines changed

src/azure-cli/azure/cli/command_modules/network/_help.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5925,6 +5925,15 @@
59255925
crafted: true
59265926
"""
59275927

5928+
helps['network vnet subnet list-available-ips'] = """
5929+
type: command
5930+
short-summary: List some available ips in the subnet.
5931+
examples:
5932+
- name: List some available ips in the subnet.
5933+
text: |
5934+
az network vnet subnet list-available-ips --resource-group MyResourceGroup --vnet-name MyVNet -n MySubnet
5935+
"""
5936+
59285937
helps['network vnet subnet show'] = """
59295938
type: command
59305939
short-summary: Show details of a subnet.

src/azure-cli/azure/cli/command_modules/network/commands.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,6 +1385,7 @@ def _make_singular(value):
13851385
g.generic_update_command('update', setter_name='begin_create_or_update', setter_arg_name='subnet_parameters',
13861386
custom_func_name='update_subnet')
13871387
g.custom_command('list-available-delegations', 'list_avail_subnet_delegations', min_api='2018-08-01', validator=process_list_delegations_namespace)
1388+
g.custom_command('list-available-ips', 'subnet_list_available_ips', min_api='2016-09-01', is_preview=True)
13881389
# endregion
13891390

13901391
# region VirtualNetworkGateways

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7263,6 +7263,18 @@ def list_available_ips(cmd, resource_group_name, virtual_network_name):
72637263
ip_address=start_ip)
72647264
return available_ips.available_ip_addresses
72657265

7266+
7267+
def subnet_list_available_ips(cmd, resource_group_name, virtual_network_name, subnet_name):
7268+
client = network_client_factory(cmd.cli_ctx)
7269+
subnet = client.subnets.get(resource_group_name=resource_group_name,
7270+
virtual_network_name=virtual_network_name,
7271+
subnet_name=subnet_name)
7272+
if subnet.address_prefix is not None:
7273+
start_ip = subnet.address_prefix.split('/')[0]
7274+
available_ips = client.virtual_networks.check_ip_address_availability(resource_group_name=resource_group_name,
7275+
virtual_network_name=virtual_network_name,
7276+
ip_address=start_ip)
7277+
return available_ips.available_ip_addresses
72667278
# endregion
72677279

72687280

0 commit comments

Comments
 (0)