Skip to content

Commit 77fcc2b

Browse files
authored
[Network] az network vnet list-available-ips: support list available ips in a vnet (#12371)
1 parent 1a4a043 commit 77fcc2b

File tree

5 files changed

+961
-0
lines changed

5 files changed

+961
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4433,6 +4433,14 @@
44334433
text: az network vnet show -g MyResourceGroup -n MyVNet
44344434
"""
44354435

4436+
helps['network vnet list-available-ips'] = """
4437+
type: command
4438+
short-summary: List some available ips in the vnet.
4439+
examples:
4440+
- name: List some available ips in the vnet.
4441+
text: az network vnet list-available-ips -g MyResourceGroup -n MyVNet
4442+
"""
4443+
44364444
helps['network vnet subnet'] = """
44374445
type: group
44384446
short-summary: Manage subnets in an Azure Virtual Network.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,6 +1028,7 @@ def _make_singular(value):
10281028
g.custom_command('create', 'create_vnet', transform=transform_vnet_create_output, validator=process_vnet_create_namespace, supports_local_cache=True)
10291029
g.generic_update_command('update', custom_func_name='update_vnet', supports_local_cache=True)
10301030
g.command('list-endpoint-services', 'list', command_type=network_endpoint_service_sdk)
1031+
g.custom_command('list-available-ips', 'list_available_ips', min_api='2016-09-01', is_preview=True)
10311032

10321033
with self.command_group('network vnet peering', network_vnet_peering_sdk, min_api='2016-09-01') as g:
10331034
g.custom_command('create', 'create_vnet_peering')

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4980,6 +4980,17 @@ def update_vnet_peering(cmd, resource_group_name, virtual_network_name, virtual_
49804980
return ncf.virtual_network_peerings.create_or_update(
49814981
resource_group_name, virtual_network_name, virtual_network_peering_name, peering)
49824982

4983+
4984+
def list_available_ips(cmd, resource_group_name, virtual_network_name):
4985+
client = network_client_factory(cmd.cli_ctx).virtual_networks
4986+
vnet = client.get(resource_group_name=resource_group_name,
4987+
virtual_network_name=virtual_network_name)
4988+
start_ip = vnet.address_space.address_prefixes[0].split('/')[0]
4989+
available_ips = client.check_ip_address_availability(resource_group_name=resource_group_name,
4990+
virtual_network_name=virtual_network_name,
4991+
ip_address=start_ip)
4992+
return available_ips.available_ip_addresses
4993+
49834994
# endregion
49844995

49854996

0 commit comments

Comments
 (0)