You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whirr.apache.org by ab...@apache.org on 2014/01/07 23:29:31 UTC
git commit: WHIRR-753 - Move to jclouds 1.7.0,
use security group extension
Updated Branches:
refs/heads/trunk 454c93cfc -> ff785da1f
WHIRR-753 - Move to jclouds 1.7.0, use security group extension
Project: http://git-wip-us.apache.org/repos/asf/whirr/repo
Commit: http://git-wip-us.apache.org/repos/asf/whirr/commit/ff785da1
Tree: http://git-wip-us.apache.org/repos/asf/whirr/tree/ff785da1
Diff: http://git-wip-us.apache.org/repos/asf/whirr/diff/ff785da1
Branch: refs/heads/trunk
Commit: ff785da1f55e343bf65d15bf34eeb696272d4081
Parents: 454c93c
Author: Andrew Bayer <an...@gmail.com>
Authored: Tue Jan 7 14:29:14 2014 -0800
Committer: Andrew Bayer <an...@gmail.com>
Committed: Tue Jan 7 14:29:14 2014 -0800
----------------------------------------------------------------------
CHANGES.txt | 3 +
.../apache/whirr/compute/BootstrapTemplate.java | 39 ++++---
.../whirr/service/BlobStoreContextBuilder.java | 57 +++-------
.../org/apache/whirr/service/ComputeCache.java | 42 +++----
.../apache/whirr/service/FirewallManager.java | 112 +++++++------------
.../whirr/compute/BootstrapTemplateTest.java | 12 +-
.../integration/FirewallManagerTest.java | 16 ++-
parent/pom.xml | 4 +-
8 files changed, 117 insertions(+), 168 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fc3207b..4d32e5c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -8,6 +8,9 @@ Release 0.9.0 (Unreleased Changes)
IMPROVEMENTS
+ WHIRR-753. Move to jclouds 1.7.0, use new SecurityGroup
+ abstractions. (abayer)
+
WHIRR-751. Improve Kerberos service (graham)
WHIRR-748. Move to jclouds 1.6.2-incubating. (abayer)
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java b/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
index 7c818b1..8d8c61c 100644
--- a/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
+++ b/core/src/main/java/org/apache/whirr/compute/BootstrapTemplate.java
@@ -25,28 +25,27 @@ import static org.jclouds.scriptbuilder.domain.Statements.interpret;
import static org.jclouds.scriptbuilder.domain.Statements.newStatementList;
import static org.jclouds.scriptbuilder.statements.ssh.SshStatements.sshdConfig;
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import org.apache.whirr.ClusterSpec;
import org.apache.whirr.InstanceTemplate;
import org.apache.whirr.service.jclouds.StatementBuilder;
-import org.jclouds.aws.ec2.AWSEC2ApiMetadata;
+import org.jclouds.aws.ec2.compute.AWSEC2ComputeService;
import org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions;
-import org.jclouds.ec2.EC2ApiMetadata;
-import org.jclouds.ec2.compute.options.EC2TemplateOptions;
-import org.jclouds.ec2.compute.predicates.EC2ImagePredicates;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.ComputeServiceContext;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
+import org.jclouds.ec2.compute.EC2ComputeService;
+import org.jclouds.ec2.compute.options.EC2TemplateOptions;
+import org.jclouds.ec2.compute.predicates.EC2ImagePredicates;
import org.jclouds.scriptbuilder.domain.OsFamily;
import org.jclouds.scriptbuilder.domain.Statement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
public class BootstrapTemplate {
private static final Logger LOG =
@@ -100,7 +99,7 @@ public class BootstrapTemplate {
ComputeServiceContext context, ClusterSpec spec, Template template, InstanceTemplate instanceTemplate
) {
- if (AWSEC2ApiMetadata.CONTEXT_TOKEN.isAssignableFrom(context.getBackendType())) {
+ if (AWSEC2ComputeService.class.isInstance(context.getComputeService())) {
template.getOptions().as(AWSEC2TemplateOptions.class)
.spotPrice(instanceTemplate.getAwsEc2SpotPrice() != null ? instanceTemplate.getAwsEc2SpotPrice() :
spec.getAwsEc2SpotPrice());
@@ -116,12 +115,12 @@ public class BootstrapTemplate {
ClusterSpec spec,
Template template,
InstanceTemplate instanceTemplate) {
- if (EC2ApiMetadata.CONTEXT_TOKEN.isAssignableFrom(context.getBackendType())) {
- if (EC2ImagePredicates.rootDeviceType(EBS).apply(template.getImage())) {
- template.getOptions().as(EC2TemplateOptions.class).mapEphemeralDeviceToDeviceName("/dev/sdc", "ephemeral1");
- }
+ if (EC2ComputeService.class.isInstance(context.getComputeService())) {
+ if (EC2ImagePredicates.rootDeviceType(EBS).apply(template.getImage())) {
+ template.getOptions().as(EC2TemplateOptions.class).mapEphemeralDeviceToDeviceName("/dev/sdc", "ephemeral1");
}
- return setPlacementGroup(context, spec, template, instanceTemplate);
+ }
+ return setPlacementGroup(context, spec, template, instanceTemplate);
}
/**
@@ -129,13 +128,13 @@ public class BootstrapTemplate {
*/
private static Template setPlacementGroup(ComputeServiceContext context, ClusterSpec spec,
Template template, InstanceTemplate instanceTemplate) {
- if (AWSEC2ApiMetadata.CONTEXT_TOKEN.isAssignableFrom(context.getBackendType())) {
- if (spec.getAwsEc2PlacementGroup() != null) {
- template.getOptions().as(AWSEC2TemplateOptions.class).placementGroup(spec.getAwsEc2PlacementGroup());
- }
+ if (AWSEC2ComputeService.class.isInstance(context.getComputeService())) {
+ if (spec.getAwsEc2PlacementGroup() != null) {
+ template.getOptions().as(AWSEC2TemplateOptions.class).placementGroup(spec.getAwsEc2PlacementGroup());
}
+ }
- return template;
+ return template;
}
// must be used inside InitBuilder, as this sets the shell variables used in this statement
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java b/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
index 0046bbf..82ce6dc 100644
--- a/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
+++ b/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
@@ -18,10 +18,23 @@
package org.apache.whirr.service;
+import java.io.Closeable;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ForwardingObject;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
+import com.google.common.reflect.TypeToken;
+import com.google.inject.Module;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationConverter;
import org.apache.whirr.ClusterSpec;
@@ -30,13 +43,10 @@ import org.jclouds.ContextBuilder;
import org.jclouds.apis.ApiMetadata;
import org.jclouds.apis.Apis;
import org.jclouds.blobstore.AsyncBlobStore;
-import org.jclouds.blobstore.BlobMap;
import org.jclouds.blobstore.BlobRequestSigner;
import org.jclouds.blobstore.BlobStore;
import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.blobstore.InputStreamMap;
import org.jclouds.blobstore.attr.ConsistencyModel;
-import org.jclouds.blobstore.options.ListContainerOptions;
import org.jclouds.enterprise.config.EnterpriseConfigurationModule;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.providers.ProviderMetadata;
@@ -45,19 +55,6 @@ import org.jclouds.rest.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ForwardingObject;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-import com.google.common.reflect.TypeToken;
-import com.google.inject.Module;
-
public class BlobStoreContextBuilder {
private static final Logger LOG = LoggerFactory.getLogger(Cache.class);
@@ -126,25 +123,7 @@ public class BlobStoreContextBuilder {
return delegate().getSigner();
}
- @Override
- public InputStreamMap createInputStreamMap(String container, ListContainerOptions options) {
- return delegate().createInputStreamMap(container, options);
- }
-
- @Override
- public InputStreamMap createInputStreamMap(String container) {
- return delegate().createInputStreamMap(container);
- }
-
- @Override
- public BlobMap createBlobMap(String container, ListContainerOptions options) {
- return delegate().createBlobMap(container, options);
- }
- @Override
- public BlobMap createBlobMap(String container) {
- return delegate().createBlobMap(container);
- }
@Override
public AsyncBlobStore getAsyncBlobStore() {
@@ -162,11 +141,6 @@ public class BlobStoreContextBuilder {
}
@Override
- public Utils getUtils() {
- return delegate().getUtils();
- }
-
- @Override
public Utils utils() {
return delegate().utils();
}
@@ -182,6 +156,11 @@ public class BlobStoreContextBuilder {
}
@Override
+ public <A extends Closeable> A unwrapApi(Class<A> apiClass) {
+ return delegate().unwrapApi(apiClass);
+ }
+
+ @Override
public <C extends Context> C unwrap(TypeToken<C> type) {
return delegate().<C>unwrap(type);
}
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/main/java/org/apache/whirr/service/ComputeCache.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/whirr/service/ComputeCache.java b/core/src/main/java/org/apache/whirr/service/ComputeCache.java
index 6a4b032..bc51059 100644
--- a/core/src/main/java/org/apache/whirr/service/ComputeCache.java
+++ b/core/src/main/java/org/apache/whirr/service/ComputeCache.java
@@ -23,10 +23,26 @@ import static org.jclouds.aws.ec2.reference.AWSEC2Constants.PROPERTY_EC2_AMI_QUE
import static org.jclouds.aws.ec2.reference.AWSEC2Constants.PROPERTY_EC2_CC_AMI_QUERY;
import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import java.io.Closeable;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ForwardingObject;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
+import com.google.common.eventbus.AllowConcurrentEvents;
+import com.google.common.eventbus.Subscribe;
+import com.google.common.reflect.TypeToken;
+import com.google.inject.Module;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationConverter;
import org.apache.commons.lang.StringUtils;
@@ -55,22 +71,6 @@ import org.jclouds.sshj.config.SshjSshClientModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ForwardingObject;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-import com.google.common.eventbus.AllowConcurrentEvents;
-import com.google.common.eventbus.Subscribe;
-import com.google.common.reflect.TypeToken;
-import com.google.inject.Module;
-
/**
* A convenience class for building jclouds {@link ComputeServiceContext} objects.
*/
@@ -182,11 +182,6 @@ public enum ComputeCache implements Function<ClusterSpec, ComputeServiceContext>
}
@Override
- public Utils getUtils() {
- return delegate().getUtils();
- }
-
- @Override
public Utils utils() {
return delegate().utils();
}
@@ -202,6 +197,11 @@ public enum ComputeCache implements Function<ClusterSpec, ComputeServiceContext>
}
@Override
+ public <A extends Closeable> A unwrapApi(Class<A> apiClass) {
+ return delegate().unwrapApi(apiClass);
+ }
+
+ @Override
public <C extends Context> C unwrap(TypeToken<C> type) {
return delegate().<C>unwrap(type);
}
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/main/java/org/apache/whirr/service/FirewallManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/whirr/service/FirewallManager.java b/core/src/main/java/org/apache/whirr/service/FirewallManager.java
index 0599e43..aa8906f 100644
--- a/core/src/main/java/org/apache/whirr/service/FirewallManager.java
+++ b/core/src/main/java/org/apache/whirr/service/FirewallManager.java
@@ -27,31 +27,25 @@ import java.util.Collections;
import java.util.List;
import java.util.Set;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import org.apache.commons.io.IOUtils;
import org.apache.whirr.Cluster;
import org.apache.whirr.Cluster.Instance;
import org.apache.whirr.ClusterSpec;
-import org.jclouds.aws.util.AWSUtils;
import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.ec2.EC2ApiMetadata;
-import org.jclouds.ec2.EC2Client;
-import org.jclouds.ec2.domain.IpProtocol;
-import org.jclouds.openstack.nova.v2_0.NovaApiMetadata;
-import org.jclouds.openstack.nova.v2_0.domain.Ingress;
-import org.jclouds.openstack.nova.v2_0.domain.SecurityGroup;
-import org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupApi;
+import org.jclouds.compute.domain.SecurityGroup;
+import org.jclouds.compute.extensions.SecurityGroupExtension;
import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.net.domain.IpPermission;
+import org.jclouds.net.domain.IpProtocol;
import org.jclouds.scriptbuilder.domain.Statement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
public class FirewallManager {
public static class StoredRule {
@@ -282,66 +276,46 @@ public class FirewallManager {
}
public static void authorizeIngress(ComputeServiceContext computeServiceContext,
- Set<Instance> instances, ClusterSpec clusterSpec, List<String> cidrs, int... ports) {
-
- if (EC2ApiMetadata.CONTEXT_TOKEN.isAssignableFrom(computeServiceContext.getBackendType())) {
- // This code (or something like it) may be added to jclouds (see
- // http://code.google.com/p/jclouds/issues/detail?id=336).
- // Until then we need this temporary workaround.
- String region = AWSUtils.parseHandle(Iterables.get(instances, 0).getId())[0];
- EC2Client ec2Client = computeServiceContext.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi();
- String groupName = "jclouds#" + clusterSpec.getClusterName();
- for (String cidr : cidrs) {
- for (int port : ports) {
- try {
- ec2Client.getSecurityGroupServices()
- .authorizeSecurityGroupIngressInRegion(region, groupName,
- IpProtocol.TCP, port, port, cidr);
- } catch(IllegalStateException e) {
- LOG.warn(e.getMessage());
- /* ignore, it means that this permission was already granted */
+ Set<Instance> instances, final ClusterSpec clusterSpec, List<String> cidrs, int... ports) {
+
+ try {
+ if (computeServiceContext.getComputeService().getSecurityGroupExtension().isPresent()) {
+ SecurityGroupExtension securityGroupExtension = computeServiceContext.getComputeService().getSecurityGroupExtension().get();
+ Instance instance = Iterables.getFirst(instances, null);
+ if (instance != null) {
+ SecurityGroup group = Iterables.find(securityGroupExtension.listSecurityGroupsForNode(instance.getNodeMetadata().getId()),
+ new Predicate<SecurityGroup>() {
+ @Override
+ public boolean apply(SecurityGroup input) {
+ if (input.getName().contains(clusterSpec.getClusterName()) ||
+ input.getId().contains(clusterSpec.getClusterName())) {
+ return true;
+ }
+ return false; //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+
+ if (group == null) {
+ group = securityGroupExtension.createSecurityGroup(clusterSpec.getClusterName(),
+ instance.getNodeMetadata().getLocation());
}
- }
- }
- } else if (NovaApiMetadata.CONTEXT_TOKEN.isAssignableFrom(computeServiceContext.getBackendType())) {
- // This code (or something like it) may be added to jclouds (see
- // http://code.google.com/p/jclouds/issues/detail?id=336).
- // Until then we need this temporary workaround.
- Optional<? extends SecurityGroupApi> securityGroupApi = computeServiceContext.unwrap(NovaApiMetadata.CONTEXT_TOKEN)
- .getApi()
- .getSecurityGroupExtensionForZone(clusterSpec.getTemplate().getLocationId());
-
- if (securityGroupApi.isPresent()) {
- final String groupName = "jclouds-" + clusterSpec.getClusterName();
- Optional<? extends SecurityGroup> group = securityGroupApi.get().list().firstMatch(new Predicate<SecurityGroup>() {
- @Override
- public boolean apply(SecurityGroup secGrp) {
- return secGrp.getName().equals(groupName);
- }
- });
-
- if (group.isPresent()) {
- for (String cidr : cidrs) {
- for (int port : ports) {
- try {
- securityGroupApi.get().createRuleAllowingCidrBlock(group.get().getId(),
- Ingress.builder()
- .ipProtocol(org.jclouds.openstack.nova.v2_0.domain.IpProtocol.TCP)
- .fromPort(port).toPort(port).build(),
- cidr);
-
- } catch(IllegalStateException e) {
- LOG.warn(e.getMessage());
- /* ignore, it means that this permission was already granted */
- }
- }
+
+ for (int port : ports) {
+ IpPermission.Builder builder = IpPermission.builder();
+ builder.cidrBlocks(cidrs);
+ builder.ipProtocol(IpProtocol.TCP);
+ builder.fromPort(port);
+ builder.toPort(port);
+ securityGroupExtension.addIpPermission(builder.build(), group);
}
} else {
- LOG.warn("Expected security group " + groupName + " does not exist.");
+ LOG.warn("Cannot find any instance for group, so cannot determine security group.");
}
} else {
- LOG.warn("OpenStack security group extension not available for this cloud.");
+ LOG.warn("No security group extension present for provider, so cannot set up security group.");
}
+ } catch (Exception e) {
+ LOG.error("Error setting up security groups: {}", e);
}
}
}
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/test/java/org/apache/whirr/compute/BootstrapTemplateTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/whirr/compute/BootstrapTemplateTest.java b/core/src/test/java/org/apache/whirr/compute/BootstrapTemplateTest.java
index 3a920af..1b73c12 100644
--- a/core/src/test/java/org/apache/whirr/compute/BootstrapTemplateTest.java
+++ b/core/src/test/java/org/apache/whirr/compute/BootstrapTemplateTest.java
@@ -28,11 +28,13 @@ import static org.mockito.Mockito.when;
import java.net.MalformedURLException;
import java.util.Map;
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableMap;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.whirr.ClusterSpec;
import org.apache.whirr.InstanceTemplate;
import org.apache.whirr.service.jclouds.StatementBuilder;
-import org.jclouds.aws.ec2.AWSEC2ApiMetadata;
import org.jclouds.aws.ec2.compute.AWSEC2ComputeService;
import org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions;
import org.jclouds.compute.ComputeService;
@@ -45,11 +47,6 @@ import org.jclouds.compute.options.TemplateOptions;
import org.junit.Before;
import org.junit.Test;
-import com.google.common.base.Joiner;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.reflect.TypeToken;
-
public class BootstrapTemplateTest {
private StatementBuilder statementBuilder;
@@ -117,8 +114,7 @@ private void assertSpotPriceIs(
ComputeService computeService = mock(AWSEC2ComputeService.class);
ComputeServiceContext context = mock(ComputeServiceContext.class);
when(computeService.getContext()).thenReturn(context);
-
- when(context.getBackendType()).thenReturn(TypeToken.class.cast(AWSEC2ApiMetadata.CONTEXT_TOKEN));
+ when(context.getComputeService()).thenReturn(computeService);
TemplateBuilder templateBuilder = mock(TemplateBuilder.class);
when(computeService.templateBuilder()).thenReturn(templateBuilder);
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/core/src/test/java/org/apache/whirr/service/jclouds/integration/FirewallManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/whirr/service/jclouds/integration/FirewallManagerTest.java b/core/src/test/java/org/apache/whirr/service/jclouds/integration/FirewallManagerTest.java
index defe820..b250dca 100644
--- a/core/src/test/java/org/apache/whirr/service/jclouds/integration/FirewallManagerTest.java
+++ b/core/src/test/java/org/apache/whirr/service/jclouds/integration/FirewallManagerTest.java
@@ -21,6 +21,7 @@ package org.apache.whirr.service.jclouds.integration;
import java.io.IOException;
import java.util.Set;
+import com.google.common.collect.Sets;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.whirr.Cluster;
import org.apache.whirr.ClusterSpec;
@@ -30,13 +31,11 @@ import org.apache.whirr.service.FirewallManager;
import org.apache.whirr.service.FirewallManager.Rule;
import org.jclouds.compute.ComputeServiceContext;
import org.jclouds.domain.Credentials;
-import org.jclouds.ec2.EC2ApiMetadata;
-import org.jclouds.ec2.EC2Client;
+import org.jclouds.ec2.EC2Api;
+import org.jclouds.ec2.compute.EC2ComputeService;
import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.Sets;
-
public class FirewallManagerTest {
private final String region = "us-east-1";
@@ -72,13 +71,12 @@ public class FirewallManagerTest {
@Test(timeout = TestConstants.ITEST_TIMEOUT)
public void testFirewallAuthorizationIsIdempotent() throws IOException {
- if (EC2ApiMetadata.CONTEXT_TOKEN.isAssignableFrom(context.getBackendType())) {
- EC2Client ec2Client = context.unwrap(EC2ApiMetadata.CONTEXT_TOKEN).getApi();
+ if (EC2ComputeService.class.isInstance(context.getComputeService())) {
+ EC2Api api = context.unwrapApi(EC2Api.class);
String groupName = "jclouds#" + clusterSpec.getClusterName();
- ec2Client.getSecurityGroupServices()
- .createSecurityGroupInRegion(region, groupName, "group description");
+ api.getSecurityGroupApi().get().createSecurityGroupInRegion(region, groupName, "group description");
try {
manager.addRule(
Rule.create().destination(instances).port(23344)
@@ -91,7 +89,7 @@ public class FirewallManagerTest {
manager.authorizeAllRules();
} finally {
- ec2Client.getSecurityGroupServices()
+ api.getSecurityGroupApi().get()
.deleteSecurityGroupInRegion(region, groupName);
}
}
http://git-wip-us.apache.org/repos/asf/whirr/blob/ff785da1/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 75b2b94..82efa4f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -44,13 +44,13 @@
<commons.io.version>1.4</commons.io.version>
<common-ssl.version>0.3.11</common-ssl.version>
<dnsjava.version>2.1.1</dnsjava.version>
- <guava.version>14.0.1</guava.version>
+ <guava.version>15.0</guava.version>
<hadoop.version>1.0.4</hadoop.version>
<hamcrest.version>1.1</hamcrest.version>
<hama.version>0.4.0-incubating</hama.version>
<hbase.version>0.94.1</hbase.version>
<jackson.version>1.5.2</jackson.version>
- <jclouds.version>1.6.2-incubating</jclouds.version>
+ <jclouds.version>1.7.0</jclouds.version>
<jdom.version>1.1</jdom.version>
<jopt.simple.version>4.3</jopt.simple.version>
<jsch.version>0.1.48</jsch.version>