|
3 | 3 |
|
4 | 4 | package com.azure.resourcemanager.network;
|
5 | 5 |
|
| 6 | +import com.azure.core.management.Region; |
6 | 7 | import com.azure.resourcemanager.network.models.ApplicationSecurityGroup;
|
7 | 8 | import com.azure.resourcemanager.network.models.Network;
|
8 | 9 | import com.azure.resourcemanager.network.models.NetworkInterface;
|
9 | 10 | import com.azure.resourcemanager.network.models.NetworkInterfaces;
|
10 | 11 | import com.azure.resourcemanager.network.models.Networks;
|
11 | 12 | import com.azure.resourcemanager.network.models.NicIpConfiguration;
|
| 13 | +import com.azure.resourcemanager.network.models.Subnet; |
12 | 14 | import com.azure.resourcemanager.resources.fluentcore.arm.ResourceUtils;
|
13 |
| -import com.azure.resourcemanager.resources.models.ResourceGroup; |
14 |
| -import com.azure.resourcemanager.resources.models.ResourceGroups; |
15 |
| -import com.azure.core.management.Region; |
16 | 15 | import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
|
17 | 16 | import com.azure.resourcemanager.resources.fluentcore.model.CreatedResources;
|
| 17 | +import com.azure.resourcemanager.resources.models.ResourceGroup; |
| 18 | +import com.azure.resourcemanager.resources.models.ResourceGroups; |
| 19 | +import org.junit.jupiter.api.Assertions; |
| 20 | +import org.junit.jupiter.api.Disabled; |
| 21 | +import org.junit.jupiter.api.Test; |
| 22 | +import reactor.core.publisher.Flux; |
| 23 | +import reactor.core.publisher.Mono; |
| 24 | + |
18 | 25 | import java.util.Arrays;
|
19 | 26 | import java.util.Collection;
|
20 | 27 | import java.util.HashMap;
|
21 | 28 | import java.util.HashSet;
|
22 | 29 | import java.util.LinkedHashMap;
|
23 | 30 | import java.util.List;
|
| 31 | +import java.util.Set; |
24 | 32 | import java.util.concurrent.CountDownLatch;
|
25 | 33 | import java.util.concurrent.atomic.AtomicInteger;
|
26 | 34 | import java.util.stream.Collectors;
|
27 | 35 |
|
28 |
| -import org.junit.jupiter.api.Assertions; |
29 |
| -import org.junit.jupiter.api.Disabled; |
30 |
| -import org.junit.jupiter.api.Test; |
31 |
| -import reactor.core.publisher.Flux; |
32 |
| -import reactor.core.publisher.Mono; |
33 |
| - |
34 | 36 | public class NetworkInterfaceOperationsTests extends NetworkManagementTest {
|
35 | 37 |
|
36 | 38 | @Test
|
@@ -424,4 +426,38 @@ public void canDeleteNetworkWithServiceCallBack() {
|
424 | 426 | }
|
425 | 427 | Assertions.assertEquals(counter.intValue(), 1);
|
426 | 428 | }
|
| 429 | + |
| 430 | + @Test |
| 431 | + public void canListSubnetAvailableIpAddresses() { |
| 432 | + String networkName = generateRandomResourceName("vnet", 10); |
| 433 | + String subnetName = "subnet1"; |
| 434 | + String nicName = generateRandomResourceName("nic", 10); |
| 435 | + |
| 436 | + Network network = networkManager.networks() |
| 437 | + .define(networkName) |
| 438 | + .withRegion(Region.US_EAST) |
| 439 | + .withNewResourceGroup(rgName) |
| 440 | + .withAddressSpace("10.0.0.0/24") |
| 441 | + .withSubnet(subnetName, "10.0.0.0/29") |
| 442 | + .create(); |
| 443 | + |
| 444 | + Subnet subnet = network.subnets().get(subnetName); |
| 445 | + Set<String> availableIps = subnet.listAvailablePrivateIPAddresses(); |
| 446 | + Assertions.assertTrue(availableIps.size() > 0); |
| 447 | + |
| 448 | + String availableIp = availableIps.iterator().next(); |
| 449 | + |
| 450 | + // occupy the available ip address |
| 451 | + NetworkInterface nic = networkManager.networkInterfaces() |
| 452 | + .define(nicName) |
| 453 | + .withRegion(Region.US_EAST) |
| 454 | + .withExistingResourceGroup(rgName) |
| 455 | + .withExistingPrimaryNetwork(network) |
| 456 | + .withSubnet(subnetName) |
| 457 | + .withPrimaryPrivateIPAddressStatic(availableIp) |
| 458 | + .create(); |
| 459 | + |
| 460 | + availableIps = subnet.listAvailablePrivateIPAddresses(); |
| 461 | + Assertions.assertFalse(availableIps.contains(availableIp)); |
| 462 | + } |
427 | 463 | }
|
0 commit comments