Repository: jclouds
Updated Branches:
  refs/heads/master 3ac9279ac -> 5b4f5ee02


Adds rackspace cloudnetworks-us provider


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

Branch: refs/heads/master
Commit: eacf00436e8f6c6a627f5fa578681813bd21f363
Parents: 
Author: Zack Shoylev <[email protected]>
Authored: Wed Oct 22 11:57:43 2014 -0500
Committer: Zack Shoylev <[email protected]>
Committed: Sat Nov 15 05:55:32 2014 -0600

----------------------------------------------------------------------
 providers/rackspace-cloudnetworks-us/README.md  |   4 +
 providers/rackspace-cloudnetworks-us/pom.xml    | 128 +++++++++++++++++++
 .../us/CloudNetworksUSProviderMetadata.java     | 121 ++++++++++++++++++
 .../us/CloudNetworksUSNetworkApiLiveTest.java   |  76 +++++++++++
 .../us/CloudNetworksUSPortApiLiveTest.java      |  85 ++++++++++++
 .../us/CloudNetworksUSProviderTest.java         |  28 ++++
 .../us/CloudNetworksUSSubnetApiLiveTest.java    |  89 +++++++++++++
 .../src/test/resources/logback.xml              |  69 ++++++++++
 8 files changed, 600 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/README.md
----------------------------------------------------------------------
diff --git a/providers/rackspace-cloudnetworks-us/README.md 
b/providers/rackspace-cloudnetworks-us/README.md
new file mode 100644
index 0000000..4a83307
--- /dev/null
+++ b/providers/rackspace-cloudnetworks-us/README.md
@@ -0,0 +1,4 @@
+Rackspace Networks US
+========================
+
+Beta

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/pom.xml
----------------------------------------------------------------------
diff --git a/providers/rackspace-cloudnetworks-us/pom.xml 
b/providers/rackspace-cloudnetworks-us/pom.xml
new file mode 100644
index 0000000..7a62e1b
--- /dev/null
+++ b/providers/rackspace-cloudnetworks-us/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.jclouds</groupId>
+    <artifactId>jclouds-project</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <!-- TODO: when out of labs, switch to org.jclouds.provider -->
+  <groupId>org.apache.jclouds.labs</groupId>
+  <artifactId>rackspace-cloudnetworks-us</artifactId>
+  <version>2.0.0-SNAPSHOT</version>
+  <name>jclouds Rackspace Cloud Networks US provider</name>
+  <description>OpenStack Neutron implementation targeted to Rackspace Cloud 
Networks US</description>
+  <packaging>bundle</packaging>
+
+  <properties>
+    <!-- identity endpoint -->
+    
<test.rackspace-cloudnetworks-us.endpoint>https://identity.api.rackspacecloud.com/v2.0/</test.rackspace-cloudnetworks-us.endpoint>
+    
<test.rackspace-cloudnetworks-us.api-version>2.0</test.rackspace-cloudnetworks-us.api-version>
+    <test.rackspace-cloudnetworks-us.build-version />
+    
<test.rackspace-cloudnetworks-us.identity>${test.rackspace-us.identity}</test.rackspace-cloudnetworks-us.identity>
+    
<test.rackspace-cloudnetworks-us.credential>${test.rackspace-us.credential}</test.rackspace-cloudnetworks-us.credential>
+    
<jclouds.osgi.export>org.jclouds.rackspace.cloudnetworks.us*;version="${project.version}"</jclouds.osgi.export>
+    <jclouds.osgi.import>
+        org.jclouds*;version="${project.version}",*
+    </jclouds.osgi.import>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.jclouds.labs</groupId>
+      <artifactId>openstack-neutron</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jclouds.api</groupId>
+      <artifactId>rackspace-cloudidentity</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+
+    <!-- Test Dependencies -->
+    <dependency>
+      <groupId>org.apache.jclouds.labs</groupId>
+      <artifactId>openstack-neutron</artifactId>
+      <version>${project.parent.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jclouds</groupId>
+      <artifactId>jclouds-core</artifactId>
+      <version>${project.parent.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jclouds.driver</groupId>
+      <artifactId>jclouds-slf4j</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+        <groupId>com.google.auto.value</groupId>
+        <artifactId>auto-value</artifactId>
+        <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <profiles>
+    <profile>
+      <id>live</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>integration</id>
+                <phase>integration-test</phase>
+                <goals>
+                  <goal>test</goal>
+                </goals>
+                <configuration>
+                  <systemPropertyVariables>
+                    
<test.rackspace-cloudnetworks-us.endpoint>${test.rackspace-cloudnetworks-us.endpoint}</test.rackspace-cloudnetworks-us.endpoint>
+                    
<test.rackspace-cloudnetworks-us.api-version>${test.rackspace-cloudnetworks-us.api-version}</test.rackspace-cloudnetworks-us.api-version>
+                    
<test.rackspace-cloudnetworks-us.build-version>${test.rackspace-cloudnetworks-us.build-version}</test.rackspace-cloudnetworks-us.build-version>
+                    
<test.rackspace-cloudnetworks-us.identity>${test.rackspace-cloudnetworks-us.identity}</test.rackspace-cloudnetworks-us.identity>
+                    
<test.rackspace-cloudnetworks-us.credential>${test.rackspace-cloudnetworks-us.credential}</test.rackspace-cloudnetworks-us.credential>
+                  </systemPropertyVariables>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+</project>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/main/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderMetadata.java
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/main/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderMetadata.java
 
b/providers/rackspace-cloudnetworks-us/src/main/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderMetadata.java
new file mode 100644
index 0000000..6a84aac
--- /dev/null
+++ 
b/providers/rackspace-cloudnetworks-us/src/main/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderMetadata.java
@@ -0,0 +1,121 @@
+/*
+ * 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.rackspace.cloudnetworks.us;
+
+import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static 
org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
+import static 
org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static 
org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
+
+import 
org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
+import org.jclouds.openstack.neutron.v2.NeutronApiMetadata;
+import org.jclouds.openstack.neutron.v2.config.NeutronHttpApiModule;
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.providers.internal.BaseProviderMetadata;
+import 
org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationApiModule;
+import 
org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
+import 
org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
+
+import com.google.auto.service.AutoService;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
+
+@AutoService(ProviderMetadata.class)
+public class CloudNetworksUSProviderMetadata extends BaseProviderMetadata {
+
+   public static Builder builder() {
+      return new Builder();
+   }
+
+   @Override
+   public Builder toBuilder() {
+      return builder().fromProviderMetadata(this);
+   }
+
+   public CloudNetworksUSProviderMetadata() {
+      this(new Builder());
+   }
+
+   protected CloudNetworksUSProviderMetadata(Builder builder) {
+      super(builder);
+   }
+
+   /**
+    * @return a {@link Properties} object containing the default provider 
properties.
+    * This returns the credential type, service type, and configured regions.
+    */
+   public static Properties defaultProperties() {
+      Properties properties = new Properties();
+      properties.setProperty(CREDENTIAL_TYPE, 
CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
+      properties.setProperty(SERVICE_TYPE, "networks");
+
+      properties.setProperty(PROPERTY_REGIONS, "ORD,DFW,IAD,SYD,HKG");
+      properties.setProperty(PROPERTY_REGION + ".ORD." + ISO3166_CODES, 
"US-IL");
+      properties.setProperty(PROPERTY_REGION + ".DFW." + ISO3166_CODES, 
"US-TX");
+      properties.setProperty(PROPERTY_REGION + ".IAD." + ISO3166_CODES, 
"US-VA");
+      properties.setProperty(PROPERTY_REGION + ".SYD." + ISO3166_CODES, 
"AU-NSW");
+      properties.setProperty(PROPERTY_REGION + ".HKG." + ISO3166_CODES, "HK");
+
+      return properties;
+   }
+
+   public static class Builder extends BaseProviderMetadata.Builder {
+
+      protected Builder() {
+         id("rackspace-cloudnetworks-us")
+         .name("Rackspace Cloud Networks US")
+         .apiMetadata(new NeutronApiMetadata().toBuilder()
+               .identityName("${userName}")
+               .credentialName("${apiKey}")
+               
.defaultEndpoint("https://identity.api.rackspacecloud.com/v2.0/";)
+               
.documentation(URI.create("http://docs.rackspace.com/networks/api/v1/cf-devguide/content/index.html";))
+               .endpointName("Rackspace Cloud Identity service URL ending in 
/v2.0/")
+               .version("2.0")
+               .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
+                     .add(CloudIdentityAuthenticationApiModule.class)
+                     .add(CloudIdentityAuthenticationModule.class)
+                     .add(RegionModule.class)
+                     .add(NeutronHttpApiModule.class)
+                     .build())
+               .build())
+         .homepage(URI.create("http://www.rackspace.com/cloud/networks";))
+         .console(URI.create("https://mycloud.rackspace.com";))
+         .linkedServices("rackspace-autoscale-us", 
"rackspace-cloudblockstorage-us",
+                         "rackspace-clouddatabases-us", 
"rackspace-clouddns-us",
+                         "rackspace-cloudidentity", 
"rackspace-cloudloadbalancers-us",
+                         "rackspace-cloudqueues-us")
+         .iso3166Codes("US-IL", "US-TX", "US-VA", "AU-NSW", "HK")
+         
.defaultProperties(CloudNetworksUSProviderMetadata.defaultProperties());
+
+      }
+
+      @Override
+      public CloudNetworksUSProviderMetadata build() {
+         return new CloudNetworksUSProviderMetadata(this);
+      }
+
+      @Override
+      public Builder fromProviderMetadata(ProviderMetadata in) {
+         super.fromProviderMetadata(in);
+         return this;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSNetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSNetworkApiLiveTest.java
 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSNetworkApiLiveTest.java
new file mode 100644
index 0000000..c8e09c5
--- /dev/null
+++ 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSNetworkApiLiveTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.rackspace.cloudnetworks.us;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.neutron.v2.features.NetworkApi;
+import org.jclouds.openstack.neutron.v2.features.NetworkApiLiveTest;
+import org.testng.SkipException;
+import org.testng.annotations.Test;
+
+@Test(groups = "live", testName = "CloudNetworksUSNetworkApiLiveTest", 
singleThreaded = true)
+public class CloudNetworksUSNetworkApiLiveTest extends NetworkApiLiveTest {
+   public CloudNetworksUSNetworkApiLiveTest() {
+      provider = "rackspace-cloudnetworks-us";
+   }
+
+   @Override
+   public void testCreateUpdateAndDeleteNetwork() {
+      for (String region : api.getConfiguredRegions()) {
+         NetworkApi networkApi = api.getNetworkApi(region);
+         Network net = 
networkApi.create(Network.createBuilder("jclouds-test").build());
+         Network test = 
networkApi.create(Network.createBuilder("jclouds-test").build());
+         assertNotNull(net);
+
+         /* List and get tests */
+         Network networkList = 
api.getNetworkApi(region).list().concat().toSet().iterator().next();
+         assertNotNull(networkList);
+         Network networkGet = 
api.getNetworkApi(region).get(networkList.getId());
+         assertEquals(networkList, networkGet);
+         /****/
+
+         Network network = networkApi.get(net.getId());
+
+         assertEquals(network.getId(), net.getId());
+         assertEquals(network.getName(), "jclouds-test");
+         assertTrue(network.getSubnets().isEmpty());
+         assertNotNull(networkApi.update(net.getId(), 
Network.updateBuilder().name("jclouds-live-test").build()));
+
+         network = networkApi.get(net.getId());
+
+         assertEquals(network.getId(), net.getId());
+         assertEquals(network.getName(), "jclouds-live-test");
+         assertTrue(network.getSubnets().isEmpty());
+
+         Network net2 = 
networkApi.create(Network.createBuilder("jclouds-test2").build());
+         assertNotNull(net2);
+
+         assertTrue(networkApi.delete(net.getId()));
+         assertTrue(networkApi.delete(net2.getId()));
+         assertTrue(networkApi.delete(test.getId()));
+      }
+   }
+
+   @Override
+   public void testBulkCreateNetwork() {
+      throw new SkipException("unsupported functionality");
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSPortApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSPortApiLiveTest.java
 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSPortApiLiveTest.java
new file mode 100644
index 0000000..07efb87
--- /dev/null
+++ 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSPortApiLiveTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.rackspace.cloudnetworks.us;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.neutron.v2.domain.Port;
+import org.jclouds.openstack.neutron.v2.domain.Subnet;
+import org.jclouds.openstack.neutron.v2.features.NetworkApi;
+import org.jclouds.openstack.neutron.v2.features.PortApi;
+import org.jclouds.openstack.neutron.v2.features.PortApiLiveTest;
+import org.jclouds.openstack.neutron.v2.features.SubnetApi;
+import org.testng.SkipException;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "live", testName = "CloudNetworksUSPortApiLiveTest", 
singleThreaded = true)
+public class CloudNetworksUSPortApiLiveTest extends PortApiLiveTest {
+   public CloudNetworksUSPortApiLiveTest() {
+      provider = "rackspace-cloudnetworks-us";
+   }
+
+   public void testCreateUpdateAndDeletePort() {
+      for (String region : api.getConfiguredRegions()) {
+         NetworkApi networkApi = api.getNetworkApi(region);
+         SubnetApi subnetApi = api.getSubnetApi(region);
+         PortApi portApi = api.getPortApi(region);
+         String networkId = networkApi.create(
+               Network.createBuilder("JClouds-Live-Network").build()).getId();
+         String ipv4SubnetId = 
subnetApi.create(Subnet.createBuilder(networkId, "192.168.0.0/30").ipVersion(4)
+               .name("JClouds-Live-IPv4-Subnet").build()).getId();
+
+         assertNotNull(networkId);
+         assertNotNull(ipv4SubnetId);
+
+         String ipv4PortId = 
portApi.create(Port.createBuilder(networkId).name("JClouds-Live-IPv4-Port")
+               
.fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv4SubnetId))).build()).getId();
+
+         /* List and get test */
+         Port portList = 
api.getPortApi(region).list().concat().toSet().iterator().next();
+         assertNotNull(portList);
+         Port portGet = api.getPortApi(region).get(portList.getId());
+         assertEquals(portList, portGet);
+         /****/
+
+         assertNotNull(ipv4PortId);
+
+         Port ipv4Port = portApi.get(ipv4PortId);
+         assertNotNull(ipv4Port);
+         assertEquals(ipv4Port.getId(), ipv4PortId);
+         assertEquals(ipv4Port.getName(), "JClouds-Live-IPv4-Port");
+
+         assertNotNull(portApi.update(ipv4PortId, 
Port.updateBuilder().name("Updated").build()));
+         Port updatedIpv4Port = portApi.get(ipv4PortId);
+         assertEquals(updatedIpv4Port.getName(), "Updated");
+
+         assertTrue(portApi.delete(ipv4PortId));
+         assertTrue(subnetApi.delete(ipv4SubnetId));
+         assertTrue(networkApi.delete(networkId));
+      }
+   }
+
+   @Override
+   public void testBulkCreatePort() {
+      throw new SkipException("unsupported functionality");
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderTest.java
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderTest.java
 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderTest.java
new file mode 100644
index 0000000..21dab6f
--- /dev/null
+++ 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSProviderTest.java
@@ -0,0 +1,28 @@
+/*
+ * 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.rackspace.cloudnetworks.us;
+
+import org.jclouds.openstack.neutron.v2.NeutronApiMetadata;
+import org.jclouds.providers.internal.BaseProviderMetadataTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "CloudNetworksUSProviderTest", 
singleThreaded = true)
+public class CloudNetworksUSProviderTest extends BaseProviderMetadataTest {
+   public CloudNetworksUSProviderTest() {
+      super(new CloudNetworksUSProviderMetadata(), new NeutronApiMetadata());
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSSubnetApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSSubnetApiLiveTest.java
 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSSubnetApiLiveTest.java
new file mode 100644
index 0000000..8156da2
--- /dev/null
+++ 
b/providers/rackspace-cloudnetworks-us/src/test/java/org/jclouds/rackspace/cloudnetworks/us/CloudNetworksUSSubnetApiLiveTest.java
@@ -0,0 +1,89 @@
+/*
+ * 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.rackspace.cloudnetworks.us;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.openstack.neutron.v2.domain.AllocationPool;
+import org.jclouds.openstack.neutron.v2.domain.HostRoute;
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.neutron.v2.domain.Subnet;
+import org.jclouds.openstack.neutron.v2.features.NetworkApi;
+import org.jclouds.openstack.neutron.v2.features.SubnetApi;
+import org.jclouds.openstack.neutron.v2.features.SubnetApiLiveTest;
+import org.testng.SkipException;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "live", testName = "CloudNetworksUSSubnetApiLiveTest", 
singleThreaded = true)
+public class CloudNetworksUSSubnetApiLiveTest extends SubnetApiLiveTest {
+   public CloudNetworksUSSubnetApiLiveTest() {
+      provider = "rackspace-cloudnetworks-us";
+   }
+
+   @Override
+   public void testCreateUpdateAndDeleteSubnet() {
+      for (String region : api.getConfiguredRegions()) {
+         NetworkApi networkApi = api.getNetworkApi(region);
+         String networkId = networkApi.create(
+               Network.createBuilder("jclouds-live-test").build()).getId();
+
+         SubnetApi subnetApi = api.getSubnetApi(region);
+         ImmutableSet<AllocationPool> allocationPools = ImmutableSet.of(
+               
AllocationPool.builder().start("192.168.100.0").end("192.168.100.2").build()
+         );
+         ImmutableSet<HostRoute> hostRoutes = ImmutableSet.of(
+               
HostRoute.builder().destinationCidr("192.168.100.0/30").nextHop("192.168.100.4").build()
+         );
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(networkId, 
"192.168.100.0/30").ipVersion(4).allocationPools(allocationPools).hostRoutes(hostRoutes).build());
+         assertNotNull(subnet);
+
+         /* Test list and get */
+         Subnet subnetList = 
api.getSubnetApi(region).list().concat().toSet().iterator().next();
+         assertNotNull(subnetList);
+         Subnet subnetGet = api.getSubnetApi(region).get(subnetList.getId());
+         assertEquals(subnetList, subnetGet);
+         /***/
+
+         Subnet retrievedSubnet = subnetApi.get(subnet.getId());
+
+         assertEquals(retrievedSubnet.getId(), subnet.getId());
+         assertEquals(retrievedSubnet.getCidr(), "192.168.100.0/30");
+         assertTrue(retrievedSubnet.getDnsNameservers().isEmpty());
+         assertEquals(retrievedSubnet.getAllocationPools().size(), 1);
+         assertEquals(retrievedSubnet.getHostRoutes().size(), 1);
+         assertNotNull(subnetApi.update(retrievedSubnet.getId(), 
Subnet.updateBuilder().name("jclouds-live-test-update").build()));
+
+         retrievedSubnet = subnetApi.get(retrievedSubnet.getId());
+
+         assertEquals(retrievedSubnet.getId(), subnet.getId());
+         assertEquals(retrievedSubnet.getName(), "jclouds-live-test-update");
+         assertTrue(retrievedSubnet.getDnsNameservers().isEmpty());
+
+         assertTrue(subnetApi.delete(subnet.getId()));
+         assertTrue(networkApi.delete(networkId));
+      }
+   }
+
+   @Override
+   public void testBulkCreateSubnet() {
+      throw new SkipException("unsupported functionality");
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eacf0043/providers/rackspace-cloudnetworks-us/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git 
a/providers/rackspace-cloudnetworks-us/src/test/resources/logback.xml 
b/providers/rackspace-cloudnetworks-us/src/test/resources/logback.xml
new file mode 100644
index 0000000..6559c23
--- /dev/null
+++ b/providers/rackspace-cloudnetworks-us/src/test/resources/logback.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!--
+
+    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.
+
+-->
+<configuration scan="false">
+    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-wire.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <appender name="BLOBSTOREFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-blobstore.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <root>
+        <level value="warn" />
+    </root>
+
+    <logger name="org.jclouds">
+        <level value="DEBUG" />
+        <appender-ref ref="FILE" />
+    </logger>
+
+    <logger name="jclouds.wire">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
+
+    <logger name="jclouds.headers">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
+
+    <logger name="jclouds.blobstore">
+        <level value="DEBUG" />
+        <appender-ref ref="BLOBSTOREFILE" />
+    </logger>
+
+</configuration>

Reply via email to