/providers/rackspace-cloudservers-uk/src/main/java/org/jclouds/rackspace/cloudservers/uk/CloudServersUKProviderMetadata.java

https://github.com/ahgittin/legacy-jclouds · Java · 112 lines · 75 code · 14 blank · 23 comment · 0 complexity · 089eae4ee459ed844476a4363cc0bb3c MD5 · raw file

  1. /**
  2. * Licensed to jclouds, Inc. (jclouds) under one or more
  3. * contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. jclouds licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. package org.jclouds.rackspace.cloudservers.uk;
  20. import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
  21. import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
  22. import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
  23. import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
  24. import java.net.URI;
  25. import java.util.Properties;
  26. import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
  27. import org.jclouds.openstack.nova.v2_0.NovaApiMetadata;
  28. import org.jclouds.openstack.nova.v2_0.config.NovaParserModule;
  29. import org.jclouds.openstack.nova.v2_0.config.NovaRestClientModule;
  30. import org.jclouds.providers.ProviderMetadata;
  31. import org.jclouds.providers.internal.BaseProviderMetadata;
  32. import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
  33. import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
  34. import org.jclouds.rackspace.cloudservers.uk.config.CloudServersUKComputeServiceContextModule;
  35. import com.google.common.collect.ImmutableSet;
  36. import com.google.inject.Module;
  37. /**
  38. * Implementation of {@link org.jclouds.types.ProviderMetadata} for Rackspace Next Generation Cloud Servers.
  39. *
  40. * @author Adrian Cole
  41. */
  42. public class CloudServersUKProviderMetadata extends BaseProviderMetadata {
  43. public static Builder builder() {
  44. return new Builder();
  45. }
  46. @Override
  47. public Builder toBuilder() {
  48. return builder().fromProviderMetadata(this);
  49. }
  50. public CloudServersUKProviderMetadata() {
  51. super(builder());
  52. }
  53. public CloudServersUKProviderMetadata(Builder builder) {
  54. super(builder);
  55. }
  56. public static Properties defaultProperties() {
  57. Properties properties = new Properties();
  58. properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
  59. properties.setProperty(PROPERTY_ZONES, "LON");
  60. properties.setProperty(PROPERTY_ZONE + ".LON." + ISO3166_CODES, "GB-SLG");
  61. return properties;
  62. }
  63. public static class Builder extends BaseProviderMetadata.Builder {
  64. protected Builder(){
  65. id("rackspace-cloudservers-uk")
  66. .name("Rackspace Next Generation Cloud Servers UK")
  67. .apiMetadata(new NovaApiMetadata().toBuilder()
  68. .identityName("${userName}")
  69. .credentialName("${apiKey}")
  70. .version("2")
  71. .defaultEndpoint("https://lon.identity.api.rackspacecloud.com/v2.0/")
  72. .endpointName("identity service url ending in /v2.0/")
  73. .documentation(URI.create("http://docs.rackspace.com/servers/api/v2/cs-devguide/content/ch_preface.html#webhelp-currentid"))
  74. .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
  75. .add(CloudIdentityAuthenticationModule.class)
  76. .add(ZoneModule.class)
  77. .add(NovaParserModule.class)
  78. .add(NovaRestClientModule.class)
  79. .add(CloudServersUKComputeServiceContextModule.class).build())
  80. .build())
  81. .homepage(URI.create("http://www.rackspace.co.uk/opencloud"))
  82. .console(URI.create("https://mycloud.rackspace.co.uk/"))
  83. .linkedServices("rackspace-cloudservers-uk", "cloudfiles-swift-uk")
  84. .iso3166Codes("GB-SLG")
  85. .endpoint("https://lon.identity.api.rackspacecloud.com/v2.0/")
  86. .defaultProperties(CloudServersUKProviderMetadata.defaultProperties());
  87. }
  88. @Override
  89. public CloudServersUKProviderMetadata build() {
  90. return new CloudServersUKProviderMetadata(this);
  91. }
  92. @Override
  93. public Builder fromProviderMetadata(ProviderMetadata in) {
  94. super.fromProviderMetadata(in);
  95. return this;
  96. }
  97. }
  98. }