mirror of https://github.com/apache/jclouds.git
Merge pull request #972 from rackspace/rax-cbs
Rackspace Cloud Block Storage providers for the OpenStack Cinder API.
This commit is contained in:
commit
7d33d018f5
|
@ -40,7 +40,7 @@ import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests behavior of VolumeApi
|
* Tests behavior of VolumeApi
|
||||||
*
|
*
|
||||||
* @author Everett Toews
|
* @author Everett Toews
|
||||||
*/
|
*/
|
||||||
@Test(groups = "live", testName = "VolumeApiLiveTest", singleThreaded = true)
|
@Test(groups = "live", testName = "VolumeApiLiveTest", singleThreaded = true)
|
||||||
|
@ -74,7 +74,7 @@ public class VolumeAndSnapshotApiLiveTest extends BaseCinderApiLiveTest {
|
||||||
public boolean apply(SnapshotApi snapshotApi) {
|
public boolean apply(SnapshotApi snapshotApi) {
|
||||||
return snapshotApi.get(testSnapshot.getId()) == null;
|
return snapshotApi.get(testSnapshot.getId()) == null;
|
||||||
}
|
}
|
||||||
}, 30 * 1000L).apply(snapshotApi));
|
}, 300 * 1000L).apply(snapshotApi));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (testVolume != null) {
|
if (testVolume != null) {
|
||||||
|
@ -84,7 +84,7 @@ public class VolumeAndSnapshotApiLiveTest extends BaseCinderApiLiveTest {
|
||||||
public boolean apply(VolumeApi volumeApi) {
|
public boolean apply(VolumeApi volumeApi) {
|
||||||
return volumeApi.get(testVolume.getId()) == null;
|
return volumeApi.get(testVolume.getId()) == null;
|
||||||
}
|
}
|
||||||
}, 30 * 1000L).apply(volumeApi));
|
}, 300 * 1000L).apply(volumeApi));
|
||||||
}
|
}
|
||||||
|
|
||||||
super.tearDownContext();
|
super.tearDownContext();
|
||||||
|
|
|
@ -43,10 +43,8 @@
|
||||||
<module>openstack-swift</module>
|
<module>openstack-swift</module>
|
||||||
<module>jenkins</module>
|
<module>jenkins</module>
|
||||||
<module>cdmi</module>
|
<module>cdmi</module>
|
||||||
<module>openstack-glance</module>
|
|
||||||
<module>joyent-cloudapi</module>
|
<module>joyent-cloudapi</module>
|
||||||
<module>joyentcloud</module>
|
<module>joyentcloud</module>
|
||||||
<module>openstack-quantum</module>
|
|
||||||
<module>greenqloud-compute</module>
|
<module>greenqloud-compute</module>
|
||||||
<module>greenqloud-storage</module>
|
<module>greenqloud-storage</module>
|
||||||
<module>iam</module>
|
<module>iam</module>
|
||||||
|
@ -62,6 +60,10 @@
|
||||||
<module>fgcp-de</module>
|
<module>fgcp-de</module>
|
||||||
<module>abiquo</module>
|
<module>abiquo</module>
|
||||||
<module>oauth</module>
|
<module>oauth</module>
|
||||||
|
<module>openstack-quantum</module>
|
||||||
|
<module>openstack-glance</module>
|
||||||
<module>openstack-cinder</module>
|
<module>openstack-cinder</module>
|
||||||
|
<module>rackspace-cloudblockstorage-us</module>
|
||||||
|
<module>rackspace-cloudblockstorage-uk</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. jclouds 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.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-project</artifactId>
|
||||||
|
<version>1.6.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../project/pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>rackspace-cloudblockstorage-uk</artifactId>
|
||||||
|
<name>jclouds Rackspace Next Generation Cloud Block Storage UK provider</name>
|
||||||
|
<description>OpenStack Cinder implementation targeted to Rackspace Next Generation Cloud Block Storage UK</description>
|
||||||
|
<packaging>bundle</packaging>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.endpoint>https://lon.identity.api.rackspacecloud.com/v2.0/</test.rackspace-cloudblockstorage-uk.endpoint>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.api-version>1</test.rackspace-cloudblockstorage-uk.api-version>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.build-version></test.rackspace-cloudblockstorage-uk.build-version>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.identity>${test.rackspace-uk.identity}</test.rackspace-cloudblockstorage-uk.identity>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.credential>${test.rackspace-uk.credential}</test.rackspace-cloudblockstorage-uk.credential>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.template></test.rackspace-cloudblockstorage-uk.template>
|
||||||
|
<jclouds.osgi.export>org.jclouds.rackspace.cloudblockstorage.uk*;version="${project.version}"</jclouds.osgi.export>
|
||||||
|
<jclouds.osgi.import>
|
||||||
|
org.jclouds.compute.internal;version="${project.version}",
|
||||||
|
org.jclouds.rest.internal;version="${project.version}",
|
||||||
|
org.jclouds*;version="${project.version}",
|
||||||
|
*
|
||||||
|
</jclouds.osgi.import>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>openstack-cinder</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>openstack-keystone</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>rackspace-cloudidentity</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>openstack-cinder</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>openstack-keystone</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>rackspace-cloudidentity</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<scope>test</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>
|
||||||
|
<threadCount>1</threadCount>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.endpoint>${test.rackspace-cloudblockstorage-uk.endpoint}</test.rackspace-cloudblockstorage-uk.endpoint>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.api-version>${test.rackspace-cloudblockstorage-uk.api-version}</test.rackspace-cloudblockstorage-uk.api-version>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.build-version>${test.rackspace-cloudblockstorage-uk.build-version}</test.rackspace-cloudblockstorage-uk.build-version>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.identity>${test.rackspace-cloudblockstorage-uk.identity}</test.rackspace-cloudblockstorage-uk.identity>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.credential>${test.rackspace-cloudblockstorage-uk.credential}</test.rackspace-cloudblockstorage-uk.credential>
|
||||||
|
<test.rackspace-cloudblockstorage-uk.template>${test.rackspace-cloudblockstorage-uk.template}</test.rackspace-cloudblockstorage-uk.template>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,111 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.uk;
|
||||||
|
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
|
||||||
|
import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApiMetadata;
|
||||||
|
import org.jclouds.openstack.cinder.v1.config.CinderParserModule;
|
||||||
|
import org.jclouds.openstack.cinder.v1.config.CinderRestClientModule;
|
||||||
|
import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
|
||||||
|
import org.jclouds.providers.ProviderMetadata;
|
||||||
|
import org.jclouds.providers.internal.BaseProviderMetadata;
|
||||||
|
import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
|
||||||
|
import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.inject.Module;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of {@link org.jclouds.types.ProviderMetadata} for Rackspace Next Generation Cloud Block Storage.
|
||||||
|
*
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
public class CloudBlockStorageUKProviderMetadata extends BaseProviderMetadata {
|
||||||
|
private static final long serialVersionUID = -620987914134012695L;
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return builder().fromProviderMetadata(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CloudBlockStorageUKProviderMetadata() {
|
||||||
|
super(builder());
|
||||||
|
}
|
||||||
|
|
||||||
|
public CloudBlockStorageUKProviderMetadata(Builder builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Properties defaultProperties() {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
|
||||||
|
properties.setProperty(PROPERTY_ZONES, "LON");
|
||||||
|
properties.setProperty(PROPERTY_ZONE + ".LON." + ISO3166_CODES, "GB-SLG");
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder extends BaseProviderMetadata.Builder {
|
||||||
|
|
||||||
|
protected Builder(){
|
||||||
|
id("rackspace-cloudblockstorage-uk")
|
||||||
|
.name("Rackspace Next Generation Cloud Block Storage UK")
|
||||||
|
.apiMetadata(new CinderApiMetadata().toBuilder()
|
||||||
|
.identityName("${userName}")
|
||||||
|
.credentialName("${apiKey}")
|
||||||
|
.defaultEndpoint("https://lon.identity.api.rackspacecloud.com/v2.0/")
|
||||||
|
.endpointName("identity service url ending in /v2.0/")
|
||||||
|
.documentation(URI.create("http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/overview.html"))
|
||||||
|
.defaultModules(ImmutableSet.<Class<? extends Module>>builder()
|
||||||
|
.add(CloudIdentityAuthenticationModule.class)
|
||||||
|
.add(ZoneModule.class)
|
||||||
|
.add(CinderParserModule.class)
|
||||||
|
.add(CinderRestClientModule.class).build())
|
||||||
|
.build())
|
||||||
|
.homepage(URI.create("http://www.rackspace.co.uk/cloud-hosting/cloud-products/cloud-block-storage/"))
|
||||||
|
.console(URI.create("https://mycloud.rackspace.co.uk"))
|
||||||
|
.linkedServices("rackspace-cloudservers-uk", "cloudfiles-uk")
|
||||||
|
.iso3166Codes("GB-SLG")
|
||||||
|
.endpoint("https://lon.identity.api.rackspacecloud.com/v2.0/")
|
||||||
|
.defaultProperties(CloudBlockStorageUKProviderMetadata.defaultProperties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CloudBlockStorageUKProviderMetadata build() {
|
||||||
|
return new CloudBlockStorageUKProviderMetadata(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder fromProviderMetadata(ProviderMetadata in) {
|
||||||
|
super.fromProviderMetadata(in);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
org.jclouds.rackspace.cloudblockstorage.uk.CloudBlockStorageUKProviderMetadata
|
|
@ -0,0 +1,67 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.uk;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApi;
|
||||||
|
import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
|
||||||
|
import org.jclouds.rackspace.cloudblockstorage.uk.CloudBlockStorageUKProviderMetadata;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This test ensures that the wiring in {@link CloudBlockStorageUKProviderMetadata} is correct.
|
||||||
|
*
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "CloudBlockStorageUKProviderMetadataExpectTest")
|
||||||
|
public class CloudBlockStorageUKProviderMetadataExpectTest extends BaseCinderApiExpectTest {
|
||||||
|
|
||||||
|
public CloudBlockStorageUKProviderMetadataExpectTest() {
|
||||||
|
this.provider = "rackspace-cloudblockstorage-uk";
|
||||||
|
this.identity = "myUsername";
|
||||||
|
this.credential = "myApiKey";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCanGetConfiguredZones() {
|
||||||
|
|
||||||
|
HttpRequest authenticate = HttpRequest.builder().method("POST")
|
||||||
|
.endpoint("https://lon.identity.api.rackspacecloud.com/v2.0/tokens")
|
||||||
|
.addHeader("Accept", "application/json")
|
||||||
|
.payload(payloadFromStringWithContentType(
|
||||||
|
"{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"myUsername\",\"apiKey\":\"myApiKey\"}}}"
|
||||||
|
, "application/json")).build();
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse authenticationResponse = HttpResponse.builder()
|
||||||
|
.statusCode(200)
|
||||||
|
.payload(payloadFromResourceWithContentType("/access_rax_uk.json", "application/json"))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
CinderApi whenNovaRegionExists = requestSendsResponse(authenticate, authenticationResponse);
|
||||||
|
|
||||||
|
assertEquals(whenNovaRegionExists.getConfiguredZones(), ImmutableSet.of("LON"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not computee 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.cloudblockstorage.uk;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApiMetadata;
|
||||||
|
import org.jclouds.providers.internal.BaseProviderMetadataTest;
|
||||||
|
import org.jclouds.rackspace.cloudblockstorage.uk.CloudBlockStorageUKProviderMetadata;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "CloudBlockStorageUKProviderTest")
|
||||||
|
public class CloudBlockStorageUKProviderTest extends BaseProviderMetadataTest {
|
||||||
|
|
||||||
|
public CloudBlockStorageUKProviderTest() {
|
||||||
|
super(new CloudBlockStorageUKProviderMetadata(), new CinderApiMetadata());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.uk.features;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.features.VolumeAndSnapshotApiLiveTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "live", testName = "CloudBlockStorageUKVolumeAndSnapshotApiLiveTest")
|
||||||
|
public class CloudBlockStorageUKVolumeAndSnapshotApiLiveTest extends VolumeAndSnapshotApiLiveTest {
|
||||||
|
public CloudBlockStorageUKVolumeAndSnapshotApiLiveTest() {
|
||||||
|
provider = "rackspace-cloudblockstorage-uk";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.uk.features;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.features.VolumeTypeApiLiveTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "live", testName = "CloudBlockStorageUSVolumeTypeApiLiveTest")
|
||||||
|
public class CloudBlockStorageUKVolumeTypeApiLiveTest extends VolumeTypeApiLiveTest {
|
||||||
|
public CloudBlockStorageUKVolumeTypeApiLiveTest() {
|
||||||
|
provider = "rackspace-cloudblockstorage-uk";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,129 @@
|
||||||
|
{
|
||||||
|
"access": {
|
||||||
|
"token": {
|
||||||
|
"id": "bdd18214-e266-4ad3-b985-d9bfb22c8da8",
|
||||||
|
"expires": "2012-10-01T02:11:16.000+01:00",
|
||||||
|
"tenant": {
|
||||||
|
"id": "10001786",
|
||||||
|
"name": "10001786"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"serviceCatalog": [
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "LON",
|
||||||
|
"tenantId": "MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953",
|
||||||
|
"publicURL": "https://storage101.lon3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953",
|
||||||
|
"internalURL": "https://snet-storage101.lon3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudFiles",
|
||||||
|
"type": "object-store"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "LON",
|
||||||
|
"tenantId": "MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953",
|
||||||
|
"publicURL": "https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudFilesCDN",
|
||||||
|
"type": "rax:object-cdn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://lon.servers.api.rackspacecloud.com/v1.0/10001786",
|
||||||
|
"versionInfo": "https://lon.servers.api.rackspacecloud.com/v1.0",
|
||||||
|
"versionList": "https://lon.servers.api.rackspacecloud.com/",
|
||||||
|
"versionId": "1.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudServers",
|
||||||
|
"type": "compute"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://lon.dns.api.rackspacecloud.com/v1.0/10001786"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudDNS",
|
||||||
|
"type": "rax:dns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "LON",
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://lon.loadbalancers.api.rackspacecloud.com/v1.0/10001786"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudLoadBalancers",
|
||||||
|
"type": "rax:load-balancer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://monitoring.api.rackspacecloud.com/v1.0/10001786"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudMonitoring",
|
||||||
|
"type": "rax:monitor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "LON",
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://lon.databases.api.rackspacecloud.com/v1.0/10001786"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudDatabases",
|
||||||
|
"type": "rax:database"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "LON",
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"publicURL": "https://lon.servers.api.rackspacecloud.com/v2/10001786",
|
||||||
|
"versionInfo": "https://lon.servers.api.rackspacecloud.com/v2",
|
||||||
|
"versionList": "https://lon.servers.api.rackspacecloud.com/",
|
||||||
|
"versionId": "2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudServersOpenStack",
|
||||||
|
"type": "compute"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"publicURL": "https://lon.blockstorage.api.rackspacecloud.com/v1/10001786",
|
||||||
|
"tenantId": "10001786",
|
||||||
|
"region": "LON"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudBlockStorage",
|
||||||
|
"type": "volume"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"user": {
|
||||||
|
"id": "378",
|
||||||
|
"roles": [
|
||||||
|
{
|
||||||
|
"id": "3",
|
||||||
|
"description": "User Admin Role.",
|
||||||
|
"name": "identity:user-admin"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "jclouds",
|
||||||
|
"RAX-AUTH:defaultRegion": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. jclouds 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.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-project</artifactId>
|
||||||
|
<version>1.6.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../../project/pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>rackspace-cloudblockstorage-us</artifactId>
|
||||||
|
<name>jclouds Rackspace Next Generation Cloud Block Storage US provider</name>
|
||||||
|
<description>OpenStack Cinder implementation targeted to Rackspace Next Generation Cloud Block Storage US</description>
|
||||||
|
<packaging>bundle</packaging>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<test.rackspace-cloudblockstorage-us.endpoint>https://identity.api.rackspacecloud.com/v2.0/</test.rackspace-cloudblockstorage-us.endpoint>
|
||||||
|
<test.rackspace-cloudblockstorage-us.api-version>1</test.rackspace-cloudblockstorage-us.api-version>
|
||||||
|
<test.rackspace-cloudblockstorage-us.build-version></test.rackspace-cloudblockstorage-us.build-version>
|
||||||
|
<test.rackspace-cloudblockstorage-us.identity>${test.rackspace-us.identity}</test.rackspace-cloudblockstorage-us.identity>
|
||||||
|
<test.rackspace-cloudblockstorage-us.credential>${test.rackspace-us.credential}</test.rackspace-cloudblockstorage-us.credential>
|
||||||
|
<test.rackspace-cloudblockstorage-us.template></test.rackspace-cloudblockstorage-us.template>
|
||||||
|
<jclouds.osgi.export>org.jclouds.rackspace.cloudblockstorage.us*;version="${project.version}"</jclouds.osgi.export>
|
||||||
|
<jclouds.osgi.import>
|
||||||
|
org.jclouds.compute.internal;version="${project.version}",
|
||||||
|
org.jclouds.rest.internal;version="${project.version}",
|
||||||
|
org.jclouds*;version="${project.version}",
|
||||||
|
*
|
||||||
|
</jclouds.osgi.import>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>openstack-cinder</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>openstack-keystone</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>rackspace-cloudidentity</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds</groupId>
|
||||||
|
<artifactId>jclouds-core</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.labs</groupId>
|
||||||
|
<artifactId>openstack-cinder</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>openstack-keystone</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jclouds.api</groupId>
|
||||||
|
<artifactId>rackspace-cloudidentity</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<scope>test</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>
|
||||||
|
<threadCount>1</threadCount>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<test.rackspace-cloudblockstorage-us.endpoint>${test.rackspace-cloudblockstorage-us.endpoint}</test.rackspace-cloudblockstorage-us.endpoint>
|
||||||
|
<test.rackspace-cloudblockstorage-us.api-version>${test.rackspace-cloudblockstorage-us.api-version}</test.rackspace-cloudblockstorage-us.api-version>
|
||||||
|
<test.rackspace-cloudblockstorage-us.build-version>${test.rackspace-cloudblockstorage-us.build-version}</test.rackspace-cloudblockstorage-us.build-version>
|
||||||
|
<test.rackspace-cloudblockstorage-us.identity>${test.rackspace-cloudblockstorage-us.identity}</test.rackspace-cloudblockstorage-us.identity>
|
||||||
|
<test.rackspace-cloudblockstorage-us.credential>${test.rackspace-cloudblockstorage-us.credential}</test.rackspace-cloudblockstorage-us.credential>
|
||||||
|
<test.rackspace-cloudblockstorage-us.template>${test.rackspace-cloudblockstorage-us.template}</test.rackspace-cloudblockstorage-us.template>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,112 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.us;
|
||||||
|
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
|
||||||
|
import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
|
||||||
|
import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApiMetadata;
|
||||||
|
import org.jclouds.openstack.cinder.v1.config.CinderParserModule;
|
||||||
|
import org.jclouds.openstack.cinder.v1.config.CinderRestClientModule;
|
||||||
|
import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
|
||||||
|
import org.jclouds.providers.ProviderMetadata;
|
||||||
|
import org.jclouds.providers.internal.BaseProviderMetadata;
|
||||||
|
import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
|
||||||
|
import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.inject.Module;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of {@link org.jclouds.types.ProviderMetadata} for Rackspace Next Generation Cloud Block Storage.
|
||||||
|
*
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
public class CloudBlockStorageUSProviderMetadata extends BaseProviderMetadata {
|
||||||
|
private static final long serialVersionUID = -290987074134012652L;
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return builder().fromProviderMetadata(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CloudBlockStorageUSProviderMetadata() {
|
||||||
|
super(builder());
|
||||||
|
}
|
||||||
|
|
||||||
|
public CloudBlockStorageUSProviderMetadata(Builder builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Properties defaultProperties() {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
|
||||||
|
properties.setProperty(PROPERTY_ZONES, "ORD,DFW");
|
||||||
|
properties.setProperty(PROPERTY_ZONE + ".ORD." + ISO3166_CODES, "US-IL");
|
||||||
|
properties.setProperty(PROPERTY_ZONE + ".DFW." + ISO3166_CODES, "US-TX");
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder extends BaseProviderMetadata.Builder {
|
||||||
|
|
||||||
|
protected Builder(){
|
||||||
|
id("rackspace-cloudblockstorage-us")
|
||||||
|
.name("Rackspace Next Generation Cloud Block Storage US")
|
||||||
|
.apiMetadata(new CinderApiMetadata().toBuilder()
|
||||||
|
.identityName("${userName}")
|
||||||
|
.credentialName("${apiKey}")
|
||||||
|
.defaultEndpoint("https://identity.api.rackspacecloud.com/v2.0/")
|
||||||
|
.endpointName("identity service url ending in /v2.0/")
|
||||||
|
.documentation(URI.create("http://docs.rackspace.com/cbs/api/v1.0/cbs-devguide/content/overview.html"))
|
||||||
|
.defaultModules(ImmutableSet.<Class<? extends Module>>builder()
|
||||||
|
.add(CloudIdentityAuthenticationModule.class)
|
||||||
|
.add(ZoneModule.class)
|
||||||
|
.add(CinderParserModule.class)
|
||||||
|
.add(CinderRestClientModule.class).build())
|
||||||
|
.build())
|
||||||
|
.homepage(URI.create("http://www.rackspace.com/cloud/public/blockstorage/"))
|
||||||
|
.console(URI.create("https://mycloud.rackspace.com"))
|
||||||
|
.linkedServices("rackspace-cloudservers-us", "cloudfiles-us")
|
||||||
|
.iso3166Codes("US-IL", "US-TX")
|
||||||
|
.endpoint("https://identity.api.rackspacecloud.com/v2.0/")
|
||||||
|
.defaultProperties(CloudBlockStorageUSProviderMetadata.defaultProperties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CloudBlockStorageUSProviderMetadata build() {
|
||||||
|
return new CloudBlockStorageUSProviderMetadata(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder fromProviderMetadata(ProviderMetadata in) {
|
||||||
|
super.fromProviderMetadata(in);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
org.jclouds.rackspace.cloudblockstorage.us.CloudBlockStorageUSProviderMetadata
|
|
@ -0,0 +1,66 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.us;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApi;
|
||||||
|
import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This test ensures that the wiring in {@link CloudBlockStorageUSProviderMetadata} is correct.
|
||||||
|
*
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "CloudBlockStorageUSProviderMetadataExpectTest")
|
||||||
|
public class CloudBlockStorageUSProviderMetadataExpectTest extends BaseCinderApiExpectTest {
|
||||||
|
|
||||||
|
public CloudBlockStorageUSProviderMetadataExpectTest() {
|
||||||
|
this.provider = "rackspace-cloudblockstorage-us";
|
||||||
|
this.identity = "myUsername";
|
||||||
|
this.credential = "myApiKey";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCanGetConfiguredZones() {
|
||||||
|
|
||||||
|
HttpRequest authenticate = HttpRequest.builder().method("POST")
|
||||||
|
.endpoint("https://identity.api.rackspacecloud.com/v2.0/tokens")
|
||||||
|
.addHeader("Accept", "application/json")
|
||||||
|
.payload(payloadFromStringWithContentType(
|
||||||
|
"{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"myUsername\",\"apiKey\":\"myApiKey\"}}}"
|
||||||
|
, "application/json")).build();
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse authenticationResponse = HttpResponse.builder()
|
||||||
|
.statusCode(200)
|
||||||
|
.payload(payloadFromResourceWithContentType("/access_rax_us.json", "application/json"))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
CinderApi whenNovaRegionExists = requestSendsResponse(authenticate, authenticationResponse);
|
||||||
|
|
||||||
|
assertEquals(whenNovaRegionExists.getConfiguredZones(), ImmutableSet.of("ORD", "DFW"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not computee 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.cloudblockstorage.us;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.CinderApiMetadata;
|
||||||
|
import org.jclouds.providers.internal.BaseProviderMetadataTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "CloudBlockStorageUSProviderTest")
|
||||||
|
public class CloudBlockStorageUSProviderTest extends BaseProviderMetadataTest {
|
||||||
|
|
||||||
|
public CloudBlockStorageUSProviderTest() {
|
||||||
|
super(new CloudBlockStorageUSProviderMetadata(), new CinderApiMetadata());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.us.features;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.features.VolumeAndSnapshotApiLiveTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "live", testName = "CloudBlockStorageUSVolumeAndSnapshotApiLiveTest")
|
||||||
|
public class CloudBlockStorageUSVolumeAndSnapshotApiLiveTest extends VolumeAndSnapshotApiLiveTest {
|
||||||
|
public CloudBlockStorageUSVolumeAndSnapshotApiLiveTest() {
|
||||||
|
provider = "rackspace-cloudblockstorage-us";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. jclouds 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.cloudblockstorage.us.features;
|
||||||
|
|
||||||
|
import org.jclouds.openstack.cinder.v1.features.VolumeTypeApiLiveTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Everett Toews
|
||||||
|
*/
|
||||||
|
@Test(groups = "live", testName = "CloudBlockStorageUSVolumeTypeApiLiveTest")
|
||||||
|
public class CloudBlockStorageUSVolumeTypeApiLiveTest extends VolumeTypeApiLiveTest {
|
||||||
|
public CloudBlockStorageUSVolumeTypeApiLiveTest() {
|
||||||
|
provider = "rackspace-cloudblockstorage-us";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,163 @@
|
||||||
|
{
|
||||||
|
"access": {
|
||||||
|
"token": {
|
||||||
|
"id": "myToken",
|
||||||
|
"expires": "2012-09-30T17:15:32.000-05:00",
|
||||||
|
"tenant": {
|
||||||
|
"id": "717071",
|
||||||
|
"name": "717071"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"serviceCatalog": [
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://dns.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudDNS",
|
||||||
|
"type": "rax:dns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://monitoring.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudMonitoring",
|
||||||
|
"type": "rax:monitor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://dfw.servers.api.rackspacecloud.com/v2/717071",
|
||||||
|
"versionInfo": "https://dfw.servers.api.rackspacecloud.com/v2",
|
||||||
|
"versionList": "https://dfw.servers.api.rackspacecloud.com/",
|
||||||
|
"versionId": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "ORD",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://ord.servers.api.rackspacecloud.com/v2/717071",
|
||||||
|
"versionInfo": "https://ord.servers.api.rackspacecloud.com/v2",
|
||||||
|
"versionList": "https://ord.servers.api.rackspacecloud.com/",
|
||||||
|
"versionId": "2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudServersOpenStack",
|
||||||
|
"type": "compute"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "ORD",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://ord.loadbalancers.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://dfw.loadbalancers.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudLoadBalancers",
|
||||||
|
"type": "rax:load-balancer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://dfw.databases.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "ORD",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://ord.databases.api.rackspacecloud.com/v1.0/717071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudDatabases",
|
||||||
|
"type": "rax:database"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"publicURL": "https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"internalURL": "https://snet-storage101.dfw1.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "ORD",
|
||||||
|
"tenantId": "MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"publicURL": "https://storage101.ord1.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"internalURL": "https://snet-storage101.ord1.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudFiles",
|
||||||
|
"type": "object-store"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"publicURL": "https://cdn1.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "ORD",
|
||||||
|
"tenantId": "MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9",
|
||||||
|
"publicURL": "https://cdn2.clouddrive.com/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudFilesCDN",
|
||||||
|
"type": "rax:object-cdn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://servers.api.rackspacecloud.com/v1.0/717071",
|
||||||
|
"versionInfo": "https://servers.api.rackspacecloud.com/v1.0",
|
||||||
|
"versionList": "https://servers.api.rackspacecloud.com/",
|
||||||
|
"versionId": "1.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudServers",
|
||||||
|
"type": "compute"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"publicURL": "https://ord.blockstorage.api.rackspacecloud.com/v1/717071",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"region": "ORD"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"region": "DFW",
|
||||||
|
"tenantId": "717071",
|
||||||
|
"publicURL": "https://dfw.blockstorage.api.rackspacecloud.com/v1/717071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "cloudBlockStorage",
|
||||||
|
"type": "volume"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"user": {
|
||||||
|
"id": "224085",
|
||||||
|
"roles": [
|
||||||
|
{
|
||||||
|
"id": "3",
|
||||||
|
"description": "User Admin Role.",
|
||||||
|
"name": "identity:user-admin"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "myUsername",
|
||||||
|
"RAX-AUTH:defaultRegion": "DFW"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue