Updated Branches:
  refs/heads/master 15a3c04fb -> 7e99ddef5

[JCLOUDS-263] Usage of internalURL services' endpoints


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7e99ddef
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7e99ddef
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7e99ddef

Branch: refs/heads/master
Commit: 7e99ddef5cc6d39f0df44e85640ff3bb96097943
Parents: 15a3c04
Author: Ignacio Mulas <[email protected]>
Authored: Wed Nov 13 15:40:11 2013 +0100
Committer: Everett Toews <[email protected]>
Committed: Wed Dec 11 11:28:37 2013 -0600

----------------------------------------------------------------------
 .../keystone/v2_0/functions/InternalURL.java    | 44 ++++++++++++++
 .../v2_0/config/InternalUrlModule.java          | 38 ++++++++++++
 .../v2_0/functions/InternalURLTest.java         | 40 ++++++++++++
 .../v2_0/functions/InternalURLLiveTest.java     | 64 ++++++++++++++++++++
 4 files changed, 186 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/7e99ddef/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURL.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURL.java
 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURL.java
new file mode 100644
index 0000000..7efd9d2
--- /dev/null
+++ 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURL.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.keystone.v2_0.functions;
+
+import java.net.URI;
+
+import javax.inject.Singleton;
+
+import org.jclouds.openstack.keystone.v2_0.domain.Endpoint;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+
+/**
+ * Select internal URL endpoints services
+ * 
+ * @author Ignacio Mulas
+ */
+@Singleton
+public class InternalURL implements EndpointToSupplierURI {
+   @Override
+   public Supplier<URI> apply(Endpoint input) {
+      return Suppliers.ofInstance(input.getInternalURL());
+   }
+
+   @Override
+   public String toString() {
+      return "supplyInternalURL()";
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7e99ddef/apis/openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/config/InternalUrlModule.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/config/InternalUrlModule.java
 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/config/InternalUrlModule.java
new file mode 100644
index 0000000..0e70248
--- /dev/null
+++ 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/v2_0/config/InternalUrlModule.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.v2_0.config;
+
+import org.jclouds.openstack.keystone.v2_0.functions.EndpointToSupplierURI;
+import org.jclouds.openstack.keystone.v2_0.functions.InternalURL;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Singleton;
+
+/**
+ * Guice module to configure JClouds in order to use the internal urls to
+ * communicate with the services.
+ * 
+ * @author Ignacio Mulas
+ * 
+ */
+@Singleton
+public class InternalUrlModule extends AbstractModule {
+   @Override
+   protected void configure() {
+      bind(EndpointToSupplierURI.class).to(InternalURL.class);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7e99ddef/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURLTest.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURLTest.java
 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURLTest.java
new file mode 100644
index 0000000..6726767
--- /dev/null
+++ 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/functions/InternalURLTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.keystone.v2_0.functions;
+
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.jclouds.openstack.keystone.v2_0.domain.Endpoint;
+import org.testng.annotations.Test;
+
+/**
+ * @author Ignacio Mulas
+ */
+@Test(groups = "unit", testName = "InternalURLTest")
+public class InternalURLTest {
+   private final InternalURL fn = new InternalURL();
+
+   public void testInternalURL() {
+      assertEquals(
+            fn.apply(
+                  Endpoint.builder().region("regionOne").versionId("2.0")
+                        
.internalURL(URI.create("https://ericsson.com/v2/1900e98b-7272-4cbd-8e95-0b8c2a9266c0";))
+                        .build()).get(), 
URI.create("https://ericsson.com/v2/1900e98b-7272-4cbd-8e95-0b8c2a9266c0";));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/7e99ddef/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/InternalURLLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/InternalURLLiveTest.java
 
b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/InternalURLLiveTest.java
new file mode 100644
index 0000000..15010b9
--- /dev/null
+++ 
b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/functions/InternalURLLiveTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.functions;
+
+import static org.jclouds.Constants.PROPERTY_CONNECTION_TIMEOUT;
+
+import java.util.Properties;
+
+import org.jclouds.openstack.nova.v2_0.internal.BaseNovaApiLiveTest;
+import org.jclouds.openstack.v2_0.config.InternalUrlModule;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
+
+/**
+ * Simple live test to check the correct loading of the internal endpoint
+ * services.
+ * 
+ * @author Ignacio Mulas
+ * 
+ */
+@Test(groups = "live", testName = "InternalURLLiveTest")
+public class InternalURLLiveTest extends BaseNovaApiLiveTest {
+
+   @Test(description = "InternalUrl service endpoints loader")
+   public void testGetInternalUrlServiceEndpoint() throws Exception {
+      String zone = api.getConfiguredZones().iterator().next();
+      // List current servers to ensure that can reach nova with internalUrl ip
+      try {
+         api.getServerApiForZone(zone).list().concat().toList();
+      } catch (Exception e) {
+         Assert.fail("Could not retrieve servers list using the internalUrl", 
e);
+      }
+   }
+
+   @Override
+   protected Properties setupProperties() {
+      Properties properties = super.setupProperties();
+      properties.setProperty(PROPERTY_CONNECTION_TIMEOUT, "5000");
+      return properties;
+   }
+
+   @Override
+   protected Iterable<Module> setupModules() {
+      return ImmutableSet.<Module> of(getLoggingModule(), new 
InternalUrlModule());
+   }
+
+}
\ No newline at end of file

Reply via email to