Minor tweaks for PR comments
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/72d82330 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/72d82330 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/72d82330 Branch: refs/heads/master Commit: 72d823308c71aa71ce1f4260db4adb9430d6b04b Parents: 4447085 Author: graeme.miller <[email protected]> Authored: Wed Jun 21 14:55:47 2017 +0100 Committer: graeme.miller <[email protected]> Committed: Wed Jun 21 14:55:47 2017 +0100 ---------------------------------------------------------------------- .../location/jclouds/JcloudsLocation.java | 2 +- .../creator/DefaultAzureArmNetworkCreator.java | 50 +++++++++++++------- .../DefaultAzureArmNetworkCreatorTest.java | 26 ++++++++-- 3 files changed, 56 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/72d82330/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java ---------------------------------------------------------------------- diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java index 2409727..c0d419c 100644 --- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java +++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java @@ -670,7 +670,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im try { // Create default network for Azure ARM if necessary if ("azurecompute-arm".equals(this.getProvider())) { - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, setup); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, setup); } // Setup the template http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/72d82330/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreator.java ---------------------------------------------------------------------- diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreator.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreator.java index f12d929..179c12c 100644 --- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreator.java +++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreator.java @@ -37,6 +37,9 @@ import org.jclouds.azurecompute.arm.domain.Subnet; import org.jclouds.azurecompute.arm.domain.VirtualNetwork; import org.jclouds.compute.ComputeService; +import org.apache.brooklyn.config.ConfigKey; +import org.apache.brooklyn.core.config.ConfigKeys; +import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.config.ConfigBag; public class DefaultAzureArmNetworkCreator { @@ -47,23 +50,35 @@ public class DefaultAzureArmNetworkCreator { private static final String DEFAULT_NETWORK_NAME = "brooklyn-default-network"; private static final String DEFAULT_SUBNET_NAME = "brooklyn-default-subnet"; - private static final String defaultVnetAddressPrefix = "10.1.0.0/16"; - private static final String defaultSubnetAddressPrefix = "10.1.0.0/24"; + private static final String DEFAULT_VNET_ADDRESS_PREFIX = "10.1.0.0/16"; + private static final String DEFAULT_SUBNET_ADDRESS_PREFIX = "10.1.0.0/24"; + + public static ConfigKey<Boolean> AZURE_ARM_DEFAULT_NETWORK_ENABLED = ConfigKeys.newBooleanConfigKey( + "azure.arm.default.network.enabled", + "When set to true, AMP will create a default network and subnet per Azure region and " + + "deploy applications there (if no network configuration has been set for the application).", + true); + + public static void createDefaultNetworkAndAddToTemplateOptionsIfRequired(ComputeService computeService, ConfigBag config) { + if (!config.get(AZURE_ARM_DEFAULT_NETWORK_ENABLED)) { + LOG.info("azure.arm.default.network.enabled is disabled, not creating default network"); + return; + } + - public static void createDefaultNetworkAndAddToTemplateOptions(ComputeService computeService, ConfigBag config) { Map<String, Object> templateOptions = config.get(TEMPLATE_OPTIONS); //Only create a default network if we haven't specified a network name (in template options or config) or ip options if (config.containsKey(NETWORK_NAME)) { - LOG.info("Network config specified when creating Azure location. Not creating default network"); + LOG.info("Network config specified when provisioning Azure machine. Not creating default network"); return; } if (templateOptions != null && (templateOptions.containsKey(NETWORK_NAME.getName()) || templateOptions.containsKey("ipOptions"))) { - LOG.info("Network config specified when creating Azure location. Not creating default network"); + LOG.info("Network config specified when provisioning Azure machine. Not creating default network"); return; } - LOG.info("Network config not specified when creating Azure location. Creating default network if doesn't exist"); + LOG.info("Network config not specified when provisioning Azure machine. Creating default network if doesn't exist"); AzureComputeApi api = computeService.getContext().unwrapApi(AzureComputeApi.class); String location = config.get(CLOUD_REGION_ID); @@ -87,10 +102,10 @@ public class DefaultAzureArmNetworkCreator { //Setup properties for creating subnet/network Subnet subnet = Subnet.create(subnetName, null, null, - Subnet.SubnetProperties.builder().addressPrefix(defaultSubnetAddressPrefix).build()); + Subnet.SubnetProperties.builder().addressPrefix(DEFAULT_SUBNET_ADDRESS_PREFIX).build()); VirtualNetwork.VirtualNetworkProperties virtualNetworkProperties = VirtualNetwork.VirtualNetworkProperties - .builder().addressSpace(VirtualNetwork.AddressSpace.create(Arrays.asList(defaultVnetAddressPrefix))) + .builder().addressSpace(VirtualNetwork.AddressSpace.create(Arrays.asList(DEFAULT_VNET_ADDRESS_PREFIX))) .subnets(Arrays.asList(subnet)).build(); //Create network @@ -103,19 +118,22 @@ public class DefaultAzureArmNetworkCreator { } private static void updateTemplateOptions(ConfigBag config, Subnet createdSubnet){ - Map<String, Object> templateOptions = config.get(TEMPLATE_OPTIONS); + Map<String, Object> templateOptions; - if(templateOptions == null) { + if(config.containsKey(TEMPLATE_OPTIONS)) { + templateOptions = MutableMap.copyOf(config.get(TEMPLATE_OPTIONS)); + } else { templateOptions = new HashMap<>(); - config.put(TEMPLATE_OPTIONS, templateOptions); } - Map<String, Object> ipOptions = new HashMap<>(); - ipOptions.put("allocateNewPublicIp", true); //JClouds will not provide a public IP unless we set this - ipOptions.put("subnet", createdSubnet.id()); - templateOptions.put("ipOptions", ipOptions); - } + templateOptions.put("ipOptions", ImmutableMap.of( + "allocateNewPublicIp", true, //jclouds will not provide a public IP unless we set this + "subnet", createdSubnet.id() + )); + config.put(TEMPLATE_OPTIONS, templateOptions); + + } private static void createResourceGroupIfNeeded(AzureComputeApi api, String resourceGroup, String location) { LOG.debug("using resource group [%s]", resourceGroup); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/72d82330/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreatorTest.java ---------------------------------------------------------------------- diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreatorTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreatorTest.java index 2dd6a5d..a2c4fc6 100644 --- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreatorTest.java +++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/creator/DefaultAzureArmNetworkCreatorTest.java @@ -21,6 +21,7 @@ package org.apache.brooklyn.location.jclouds.networking.creator; import static org.apache.brooklyn.core.location.cloud.CloudLocationConfig.CLOUD_REGION_ID; import static org.apache.brooklyn.location.jclouds.api.JcloudsLocationConfigPublic.NETWORK_NAME; import static org.apache.brooklyn.location.jclouds.api.JcloudsLocationConfigPublic.TEMPLATE_OPTIONS; +import static org.apache.brooklyn.location.jclouds.networking.creator.DefaultAzureArmNetworkCreator.AZURE_ARM_DEFAULT_NETWORK_ENABLED; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -79,7 +80,7 @@ public class DefaultAzureArmNetworkCreatorTest { when(subnet.id()).thenReturn(TEST_SUBNET_ID); //Test - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, configBag); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //verify verify(subnetApi).get(TEST_SUBNET_NAME); @@ -111,7 +112,7 @@ public class DefaultAzureArmNetworkCreatorTest { //Test - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, configBag); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //verify verify(subnetApi, times(2)).get(TEST_SUBNET_NAME); @@ -136,7 +137,7 @@ public class DefaultAzureArmNetworkCreatorTest { Map<String, Object> configCopy = configBag.getAllConfig(); - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, configBag); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //Ensure nothing changed, and no calls were made to the compute service assertEquals(configCopy, configBag.getAllConfig()); @@ -154,7 +155,7 @@ public class DefaultAzureArmNetworkCreatorTest { Map<String, Object> configCopy = configBag.getAllConfig(); - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, configBag); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //Ensure nothing changed, and no calls were made to the compute service assertEquals(configCopy, configBag.getAllConfig()); @@ -172,7 +173,22 @@ public class DefaultAzureArmNetworkCreatorTest { Map<String, Object> configCopy = configBag.getAllConfig(); - DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptions(computeService, configBag); + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); + + //Ensure nothing changed, and no calls were made to the compute service + assertEquals(configCopy, configBag.getAllConfig()); + Mockito.verifyZeroInteractions(computeService); + } + + @Test + public void testConfigDisabled() { + ConfigBag configBag = ConfigBag.newInstance(); + configBag.put(CLOUD_REGION_ID, TEST_LOCATION); + configBag.put(AZURE_ARM_DEFAULT_NETWORK_ENABLED, false); + + Map<String, Object> configCopy = configBag.getAllConfig(); + + DefaultAzureArmNetworkCreator.createDefaultNetworkAndAddToTemplateOptionsIfRequired(computeService, configBag); //Ensure nothing changed, and no calls were made to the compute service assertEquals(configCopy, configBag.getAllConfig());
