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>
