From 09b38ce793a815c12daf1948c9d2eccae09cf91c Mon Sep 17 00:00:00 2001 From: Ignasi Barrera Date: Tue, 15 Jul 2014 18:02:36 +0200 Subject: [PATCH] JCLOUDS-496: Use the security groups options in the portable TemplateOptions --- .../nova/v2_0/compute/NovaComputeServiceAdapter.java | 4 ++-- .../nova/v2_0/compute/options/NovaTemplateOptions.java | 16 +++++++++------- ...sCreateNodesWithGroupEncodedIntoNameThenAddToSet.java | 7 +++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceAdapter.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceAdapter.java index 5575e25..d185eb8 100644 --- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceAdapter.java +++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/NovaComputeServiceAdapter.java @@ -105,8 +105,8 @@ public NovaComputeServiceAdapter(NovaApi novaApi, @Zone Supplier> zo CreateServerOptions options = new CreateServerOptions(); options.metadata(metadataAndTagsAsCommaDelimitedValue(template.getOptions())); - if (templateOptions.getSecurityGroupNames().isPresent()) - options.securityGroupNames(templateOptions.getSecurityGroupNames().get()); + if (!templateOptions.getGroups().isEmpty()) + options.securityGroupNames(templateOptions.getGroups()); options.userData(templateOptions.getUserData()); options.diskConfig(templateOptions.getDiskConfig()); options.configDrive(templateOptions.getConfigDrive()); diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/options/NovaTemplateOptions.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/options/NovaTemplateOptions.java index 2f15f66..c42c401 100644 --- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/options/NovaTemplateOptions.java +++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/options/NovaTemplateOptions.java @@ -85,7 +85,6 @@ public void copyTo(TemplateOptions to) { protected boolean autoAssignFloatingIp = false; protected Optional> floatingIpPoolNames = Optional.absent(); - protected Optional> securityGroupNames = Optional.absent(); protected boolean generateKeyPair = false; protected String keyPairName; protected byte[] userData; @@ -102,7 +101,6 @@ public boolean equals(Object o) { NovaTemplateOptions that = NovaTemplateOptions.class.cast(o); return super.equals(that) && equal(this.autoAssignFloatingIp, that.autoAssignFloatingIp) && equal(this.floatingIpPoolNames, that.floatingIpPoolNames) - && equal(this.securityGroupNames, that.securityGroupNames) && equal(this.generateKeyPair, that.generateKeyPair) && equal(this.keyPairName, that.keyPairName) && Arrays.equals(this.userData, that.userData) @@ -113,7 +111,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hashCode(super.hashCode(), autoAssignFloatingIp, floatingIpPoolNames, securityGroupNames, generateKeyPair, keyPairName, userData, diskConfig, configDrive, novaNetworks); + return Objects.hashCode(super.hashCode(), autoAssignFloatingIp, floatingIpPoolNames, generateKeyPair, keyPairName, userData, diskConfig, configDrive, novaNetworks); } @Override @@ -123,8 +121,6 @@ public ToStringHelper string() { toString.add("autoAssignFloatingIp", autoAssignFloatingIp); if (floatingIpPoolNames.isPresent()) toString.add("floatingIpPoolNames", floatingIpPoolNames.get()); - if (securityGroupNames.isPresent()) - toString.add("securityGroupNames", securityGroupNames.get()); if (generateKeyPair) toString.add("generateKeyPair", generateKeyPair); toString.add("keyPairName", keyPairName); @@ -181,18 +177,22 @@ public NovaTemplateOptions keyPairName(String keyPairName) { /** * * @see org.jclouds.openstack.nova.v2_0.options.CreateServerOptions#getSecurityGroupNames + * @deprecated Use @link {@link TemplateOptions#securityGroups(String...)} instead. */ + @Deprecated public NovaTemplateOptions securityGroupNames(String... securityGroupNames) { return securityGroupNames(ImmutableSet.copyOf(checkNotNull(securityGroupNames, "securityGroupNames"))); } /** * @see org.jclouds.openstack.nova.v2_0.options.CreateServerOptions#getSecurityGroupNames + * @deprecated Use {@link TemplateOptions#securityGroups(Iterable)} instead. */ + @Deprecated public NovaTemplateOptions securityGroupNames(Iterable securityGroupNames) { for (String groupName : checkNotNull(securityGroupNames, "securityGroupNames")) checkNotNull(emptyToNull(groupName), "all security groups must be non-empty"); - this.securityGroupNames = Optional.> of(ImmutableSet.copyOf(securityGroupNames)); + securityGroups(securityGroupNames); return this; } @@ -245,9 +245,11 @@ public boolean shouldGenerateKeyPair() { * to {@link #getInboundPorts()} * * @see org.jclouds.openstack.nova.v2_0.options.CreateServerOptions#getSecurityGroupNames + * @deprecated Use {@link TemplateOptions#getGroups()} instead. */ + @Deprecated public Optional> getSecurityGroupNames() { - return securityGroupNames; + return getGroups().isEmpty() ? Optional.>absent() : Optional.of(getGroups()); } public byte[] getUserData() { diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java index 616119d..7499ee6 100644 --- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java +++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/strategy/ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java @@ -130,20 +130,19 @@ protected ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSe boolean securityGroupExtensionPresent = novaApi.getSecurityGroupExtensionForZone(zone).isPresent(); List inboundPorts = Ints.asList(templateOptions.getInboundPorts()); - if (templateOptions.getSecurityGroupNames().isPresent() - && templateOptions.getSecurityGroupNames().get().size() > 0) { + if (!templateOptions.getGroups().isEmpty()) { checkArgument(securityGroupExtensionPresent, "Security groups are required by options, but the extension is not available! options: %s", templateOptions); } else if (securityGroupExtensionPresent) { - if (!templateOptions.getSecurityGroupNames().isPresent() && inboundPorts.size() > 0) { + if (templateOptions.getGroups().isEmpty() && !inboundPorts.isEmpty()) { String securityGroupName = namingConvention.create().sharedNameForGroup(group); try { securityGroupCache.get(new ZoneSecurityGroupNameAndPorts(zone, securityGroupName, inboundPorts)); } catch (ExecutionException e) { throw Throwables.propagate(e.getCause()); } - templateOptions.securityGroupNames(securityGroupName); + templateOptions.securityGroups(securityGroupName); } } templateOptions.userMetadata(ComputeServiceConstants.NODE_GROUP_KEY, group); -- 2.0.3