@SerializedNames({"provisioningState", "addressPrefix", "ipConfigurations"}) public static SubnetProperties create(final String provisioningState, final String addressPrefix, final List<IpConfiguration> ipConfigurations) { return builder() .provisioningState(provisioningState) .addressPrefix(addressPrefix) .ipConfigurations(ipConfigurations != null ? copyOf(ipConfigurations) : null) .build(); }
@Test public void testVanillaWhereExistingNetworkButNoSubnet() throws Exception { //Setup config bag ConfigBag configBag = ConfigBag.newInstance(); configBag.put(CLOUD_REGION_ID, TEST_LOCATION); //Setup mocks when(subnetApi.get(TEST_SUBNET_NAME)).thenReturn(null).thenReturn(subnet); //null first time, subnet next when(virtualNetworkApi.get(TEST_NETWORK_NAME)).thenReturn(virtualNetwork); when(resourceGroupApi.get(TEST_RESOURCE_GROUP)).thenReturn(resourceGroup); when(subnet.properties().provisioningState()).thenReturn("Updating").thenReturn("Succeeded"); //Test DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //verify verify(subnetApi).createOrUpdate(eq(TEST_SUBNET_NAME), any()); verify(subnetApi, atLeast(2)).get(TEST_SUBNET_NAME); verify(subnet).id(); verify(resourceGroupApi).get(TEST_RESOURCE_GROUP); verify(resourceGroupApi, never()).create(any(), any(), any()); verify(virtualNetworkApi, never()).createOrUpdate(any(), any(), any()); //verify templateOptions updated to include defaults Map<String, Object> templateOptions = configBag.get(TEMPLATE_OPTIONS); Map<String, Object> ipOptions = (Map<String, Object>) ((List)templateOptions.get("ipOptions")).iterator().next(); assertEquals(ipOptions.get("subnet"), TEST_SUBNET_ID); assertEquals(ipOptions.get("allocateNewPublicIp"), true); }
@Test(dependsOnMethods = "createSubnet") public void getSubnet() { Subnet subnet = api().get(subnetName); assertNotNull(subnet.name()); assertNotNull(subnet.properties().addressPrefix()); }
protected ConfigBag runVanilla(Map<?, ?> additionalConfig) throws Exception { //Setup config bag ConfigBag configBag = ConfigBag.newInstance(); configBag.putAll(additionalConfig); configBag.put(CLOUD_REGION_ID, TEST_LOCATION); //Setup mocks when(subnetApi.get(TEST_SUBNET_NAME)).thenReturn(null).thenReturn(subnet); //null first time, subnet next when(resourceGroupApi.get(TEST_RESOURCE_GROUP)).thenReturn(null); when(subnet.properties().provisioningState()).thenReturn("Updating").thenReturn("Succeeded"); //Test DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //verify calls made verify(subnet).id(); verify(subnetApi, atLeast(2)).get(TEST_SUBNET_NAME); verify(resourceGroupApi).get(TEST_RESOURCE_GROUP); verify(resourceGroupApi).create(eq(TEST_RESOURCE_GROUP), eq(TEST_LOCATION), any()); verify(virtualNetworkApi).createOrUpdate(eq(TEST_NETWORK_NAME), eq(TEST_LOCATION), any()); //verify templateOptions updated to include defaults Map<String, Object> templateOptions = configBag.get(TEMPLATE_OPTIONS); Map<String, Object> ipOptions = (Map<String, Object>) ((List)templateOptions.get("ipOptions")).iterator().next(); assertEquals(ipOptions.get("subnet"), TEST_SUBNET_ID); assertEquals(ipOptions.get("allocateNewPublicIp"), true); return configBag; }
@Test public void testVanillaWhereExistingResourceGroup() throws Exception { //Setup config bag ConfigBag configBag = ConfigBag.newInstance(); configBag.put(CLOUD_REGION_ID, TEST_LOCATION); //Setup mocks when(subnetApi.get(TEST_SUBNET_NAME)).thenReturn(null).thenReturn(subnet); //null first time, subnet next when(resourceGroupApi.get(TEST_RESOURCE_GROUP)).thenReturn(resourceGroup); when(subnet.properties().provisioningState()).thenReturn("Updating").thenReturn("Succeeded"); //Test DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //verify verify(subnetApi, atLeast(2)).get(TEST_SUBNET_NAME); verify(subnet).id(); verify(resourceGroupApi).get(TEST_RESOURCE_GROUP); verify(resourceGroupApi, never()).create(any(), any(), any()); verify(virtualNetworkApi).createOrUpdate(eq(TEST_NETWORK_NAME), eq(TEST_LOCATION), any()); //verify templateOptions updated to include defaults Map<String, Object> templateOptions = configBag.get(TEMPLATE_OPTIONS); Map<String, Object> ipOptions = (Map<String, Object>) ((List)templateOptions.get("ipOptions")).iterator().next(); assertEquals(ipOptions.get("subnet"), TEST_SUBNET_ID); assertEquals(ipOptions.get("allocateNewPublicIp"), true); }
protected synchronized void createDefaultNetworkIfNeeded(String group, String location, AzureTemplateOptions options) { if (options.getIpOptions().isEmpty()) { String name = namingConvention.create().sharedNameForGroup(group); Subnet subnet = Subnet.builder().name(name) .properties(SubnetProperties.builder().addressPrefix(defaultSubnetAddressPrefix).build()).build(); VirtualNetworkProperties properties = VirtualNetworkProperties.builder() .addressSpace(AddressSpace.create(Arrays.asList(defaultVnetAddressPrefix))) .subnets(Arrays.asList(subnet)).build(); logger.debug(">> network options have not been configured. Creating network %s(%s) and subnet %s(%s)", name, defaultVnetAddressPrefix, name, defaultSubnetAddressPrefix); api.getVirtualNetworkApi(options.getResourceGroup()).createOrUpdate(name, location, null, properties); checkState(networkAvailable.create(options.getResourceGroup()).apply(name), "Network/Subnet was not created in the configured timeout"); Subnet createdSubnet = api.getSubnetApi(options.getResourceGroup(), name).get(name); options.ipOptions(IpOptions.builder().subnet(createdSubnet.id()).allocateNewPublicIp(true).build()); } }
protected synchronized void createDefaultNetworkIfNeeded(String group, String location, AzureTemplateOptions options) { if (options.getIpOptions().isEmpty()) { String name = namingConvention.create().sharedNameForGroup(group); Subnet subnet = Subnet.builder().name(name) .properties(SubnetProperties.builder().addressPrefix(defaultSubnetAddressPrefix).build()).build(); VirtualNetworkProperties properties = VirtualNetworkProperties.builder() .addressSpace(AddressSpace.create(Arrays.asList(defaultVnetAddressPrefix))) .subnets(Arrays.asList(subnet)).build(); logger.debug(">> network options have not been configured. Creating network %s(%s) and subnet %s(%s)", name, defaultVnetAddressPrefix, name, defaultSubnetAddressPrefix); api.getVirtualNetworkApi(options.getResourceGroup()).createOrUpdate(name, location, null, properties); Subnet createdSubnet = api.getSubnetApi(options.getResourceGroup(), name).get(name); options.ipOptions(IpOptions.builder().subnet(createdSubnet.id()).allocateNewPublicIp(true).build()); } }
protected Subnet createDefaultSubnet(final String subnetName) { Subnet.SubnetProperties properties = Subnet.SubnetProperties.create( null, null, null); return Subnet.create( subnetName, "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxx/resourceGroups/jcloud-eastus/providers/" + "Microsoft.Network/virtualNetworks/jclouds-eastus-virtualNetworkName/subnets/" + "jclouds-eastus-subnet", null, properties); }
protected Subnet createDefaultSubnet(final String resourceGroupName, final String subnetName, final String virtualNetworkName, final String subnetAddressSpace) { Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix(subnetAddressSpace).build(); Subnet subnet = api.getSubnetApi(resourceGroupName, virtualNetworkName).createOrUpdate(subnetName, properties); retry(new Predicate<String>() { @Override public boolean apply(final String name) { Subnet subnet = api.getSubnetApi(resourceGroupName, virtualNetworkName).get(name); return subnet.properties().provisioningState().equals("Succeeded"); } }, 60 * 4 * 1000).apply(subnet.name()); return subnet; }
public void getSubnet() throws InterruptedException { server.enqueue(jsonResponse("/getonesubnet.json").setResponseCode(200)); final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, virtualNetwork); Subnet subnet = subnetApi.get(subnetName); String path = String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s", subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion); assertSent(server, "GET", path); assertEquals(subnet.name(), subnetName); assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/24"); }
@Override public boolean apply(final String name) { Subnet subnet = api.getSubnetApi(resourceGroupName, virtualNetworkName).get(name); return subnet.properties().provisioningState().equals("Succeeded"); } }, 60 * 4 * 1000).apply(subnet.name());
public void createSubnet() throws InterruptedException { server.enqueue(jsonResponse("/createsubnetresponse.json").setResponseCode(200)); final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, virtualNetwork); Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix("10.2.0.0/24").build(); Subnet subnet = subnetApi.createOrUpdate(subnetName, properties); String path = String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s?%s", subscriptionid, resourcegroup, virtualNetwork, subnetName, apiVersion); String json = "{ \"properties\":{\"addressPrefix\":\"10.2.0.0/24\"}}"; assertSent(server, "PUT", path, json); assertEquals(subnet.name(), subnetName); assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/24"); }
@Test(dependsOnMethods = "deleteVirtualNetworkResourceDoesNotExist") public void createVirtualNetwork() { Subnet subnet = Subnet.builder().name("subnetName") .properties(SubnetProperties.builder().addressPrefix(TEST_VIRTUALNETWORK_ADDRESS_PREFIX).build()).build(); final VirtualNetwork.VirtualNetworkProperties virtualNetworkProperties = VirtualNetwork.VirtualNetworkProperties .builder().subnets(ImmutableList.<Subnet> of(subnet)) .addressSpace(AddressSpace.create(Arrays.asList(TEST_VIRTUALNETWORK_ADDRESS_PREFIX))).build(); VirtualNetwork vn = api().createOrUpdate(virtualNetworkName, LOCATION, null, virtualNetworkProperties); networkAvailablePredicate.create(resourceGroupName).apply(virtualNetworkName); assertEquals(vn.name(), virtualNetworkName); assertEquals(vn.location(), LOCATION); }
@Test(dependsOnMethods = "deleteSubnetResourceDoesNotExist") public void createSubnet() { //Create properties object //addressPrefix must match Virtual network address space! Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix("10.2.0.0/23").build(); Subnet subnet = api().createOrUpdate(subnetName, properties); assertEquals(subnet.name(), subnetName); assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/23"); }
@SerializedNames({"provisioningState", "addressPrefix", "ipConfigurations"}) public static SubnetProperties create(final String provisioningState, final String addressPrefix, final List<IpConfiguration> ipConfigurations) { return builder() .provisioningState(provisioningState) .addressPrefix(addressPrefix) .ipConfigurations(ipConfigurations != null ? copyOf(ipConfigurations) : null) .build(); }