You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2015/12/16 19:22:35 UTC
jclouds git commit: Adds nova extension names and an example test
Repository: jclouds
Updated Branches:
refs/heads/master 962de83e8 -> 7d73a0392
Adds nova extension names and an example test
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7d73a039
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7d73a039
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7d73a039
Branch: refs/heads/master
Commit: 7d73a0392a371375dd0f4a9e9f1a3d7dd81cf10c
Parents: 962de83
Author: Zack Shoylev <za...@rackspace.com>
Authored: Tue Dec 15 13:11:55 2015 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Wed Dec 16 11:35:09 2015 -0600
----------------------------------------------------------------------
.../v2_0/extensions/AttachInterfaceApi.java | 31 +-
.../v2_0/extensions/AvailabilityZoneApi.java | 17 +-
.../nova/v2_0/extensions/ConsolesApi.java | 2 +-
.../nova/v2_0/extensions/ExtensionNames.java | 43 +++
.../v2_0/extensions/FlavorExtraSpecsApi.java | 2 +-
.../nova/v2_0/extensions/FloatingIPApi.java | 2 +-
.../nova/v2_0/extensions/FloatingIPPoolApi.java | 15 +-
.../v2_0/extensions/HostAdministrationApi.java | 2 +-
.../nova/v2_0/extensions/HostAggregateApi.java | 2 +-
.../nova/v2_0/extensions/HypervisorApi.java | 17 +-
.../nova/v2_0/extensions/KeyPairApi.java | 2 +-
.../nova/v2_0/extensions/QuotaApi.java | 2 +-
.../nova/v2_0/extensions/SecurityGroupApi.java | 2 +-
.../nova/v2_0/extensions/ServerAdminApi.java | 2 +-
.../v2_0/extensions/SimpleTenantUsageApi.java | 2 +-
.../v2_0/extensions/VirtualInterfaceApi.java | 2 +-
.../v2_0/extensions/VolumeAttachmentApi.java | 2 +-
.../extensions/FloatingIPApiExpectTest.java | 11 +
.../nova/v2_0/internal/BaseNovaExpectTest.java | 12 +-
.../extension_list_full_no_namespaces.json | 316 +++++++++++++++++++
20 files changed, 432 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AttachInterfaceApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AttachInterfaceApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AttachInterfaceApi.java
index 0bf9fb2..1604581 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AttachInterfaceApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AttachInterfaceApi.java
@@ -17,8 +17,16 @@
package org.jclouds.openstack.nova.v2_0.extensions;
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
import org.jclouds.Fallbacks;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -31,21 +39,14 @@ import org.jclouds.rest.annotations.PayloadParam;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
/**
* Provides access to the OpenStack Compute (Nova) Attach Interfaces API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.ATTACH_INTERFACES)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.ATTACH_INTERFACES, name = ExtensionNames.ATTACH_INTERFACES)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/servers")
@@ -53,7 +54,7 @@ public interface AttachInterfaceApi {
/**
* Returns list of port interfaces for given server
- *
+ *
* @param serverId
* The Server ID
* @return list of port interfaces for given server
@@ -67,7 +68,7 @@ public interface AttachInterfaceApi {
/**
* Returns information about a specified port interface for given server
- *
+ *
* @param serverId
* The Server ID
* @param attachmentId
@@ -84,7 +85,7 @@ public interface AttachInterfaceApi {
/**
* Creates a new port interface and associate with the given port
- *
+ *
* @param portId
* The port ID
* @return newly created port interface
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AvailabilityZoneApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AvailabilityZoneApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AvailabilityZoneApi.java
index adae0a4..f2b6478 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AvailabilityZoneApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/AvailabilityZoneApi.java
@@ -16,8 +16,12 @@
*/
package org.jclouds.openstack.nova.v2_0.extensions;
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.nova.v2_0.domain.regionscoped.AvailabilityZone;
@@ -28,17 +32,14 @@ import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
/**
* Provides access to the OpenStack Compute (Nova) Availability Zone Extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.AVAILABILITY_ZONE)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.AVAILABILITY_ZONE, name = ExtensionNames.AVAILABILITY_ZONE)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-availability-zone")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ConsolesApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ConsolesApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ConsolesApi.java
index 715ce52..ab54c31 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ConsolesApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ConsolesApi.java
@@ -44,7 +44,7 @@ import com.google.common.annotations.Beta;
*
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.CONSOLES)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.CONSOLES, name = ExtensionNames.CONSOLES)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
public interface ConsolesApi {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ExtensionNames.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ExtensionNames.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ExtensionNames.java
new file mode 100644
index 0000000..f7e4227
--- /dev/null
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ExtensionNames.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.extensions;
+
+/**
+ * OpenStack Nova Extension Namespaces
+ */
+public final class ExtensionNames {
+ public static final String FLOATING_IPS = "FloatingIps";
+ public static final String ATTACH_INTERFACES = "AttachInterfaces";
+ public static final String AVAILABILITY_ZONE = "AvailabilityZone";
+ public static final String CONSOLES = "Consoles";
+ public static final String FLAVOR_EXTRA_SPECS = "FlavorExtraSpecs";
+ public static final String HOST_ADMINISTRATION = "Hosts";
+ public static final String HOST_AGGREGATE = "Aggregates";
+ public static final String HYPERVISORS = "Hypervisors";
+ public static final String KEYPAIRS = "Keypairs";
+ public static final String QUOTAS = "Quotas";
+ public static final String SECURITY_GROUPS = "SecurityGroups";
+ public static final String SERVER_ADMIN = "AdminActions";
+ public static final String VIRTUAL_INTERFACES = "VirtualInterfaces";
+ public static final String SIMPLE_TENANT_USAGE = "SimpleTenantUsage";
+ public static final String VOLUME_ATTACHMENT = "VolumeAttachmentUpdate";
+ public static final String FLOATING_IP_POOLS = "FloatingIpPools";
+
+ private ExtensionNames() {
+ throw new AssertionError("intentionally unimplemented");
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
index 5856cd6..abf6f4d 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
@@ -53,7 +53,7 @@ import com.google.common.annotations.Beta;
* @see org.jclouds.openstack.nova.v2_0.features.FlavorApi
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLAVOR_EXTRA_SPECS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLAVOR_EXTRA_SPECS, name = ExtensionNames.FLAVOR_EXTRA_SPECS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/flavors")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
index 6160364..67f78d7 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
@@ -46,7 +46,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to the OpenStack Compute (Nova) Floating IP extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLOATING_IPS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLOATING_IPS, name = ExtensionNames.FLOATING_IPS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
public interface FloatingIPApi {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPPoolApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPPoolApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPPoolApi.java
index 6b31531..c4eaf4a 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPPoolApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPPoolApi.java
@@ -16,8 +16,11 @@
*/
package org.jclouds.openstack.nova.v2_0.extensions;
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+
import org.jclouds.Fallbacks;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.nova.v2_0.domain.FloatingIPPool;
@@ -27,13 +30,11 @@ import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLOATING_IP_POOLS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.FLOATING_IP_POOLS, name = ExtensionNames.FLOATING_IP_POOLS)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-floating-ip-pools")
@RequestFilters(AuthenticateRequest.class)
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAdministrationApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAdministrationApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAdministrationApi.java
index 5836507..bc1abd2 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAdministrationApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAdministrationApi.java
@@ -51,7 +51,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to OpenStack Compute (Nova) Host Administration extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.HOSTS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.HOSTS, name = ExtensionNames.HOST_ADMINISTRATION)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-hosts")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAggregateApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAggregateApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAggregateApi.java
index b291ca0..9e2cc79 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAggregateApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HostAggregateApi.java
@@ -49,7 +49,7 @@ import com.google.common.collect.FluentIterable;
* Provide access to the OpenStack Compute (Nova) Host Aggregates extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.AGGREGATES)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.AGGREGATES, name = ExtensionNames.HOST_AGGREGATE)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-aggregates")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HypervisorApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HypervisorApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HypervisorApi.java
index 17fedda..a882f7e 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HypervisorApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/HypervisorApi.java
@@ -16,8 +16,12 @@
*/
package org.jclouds.openstack.nova.v2_0.extensions;
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.nova.v2_0.domain.regionscoped.Hypervisor;
@@ -28,17 +32,14 @@ import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
/**
* Provides access to the OpenStack Compute (Nova) Hypervisor Extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.HYPERVISORS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.HYPERVISORS, name = ExtensionNames.HYPERVISORS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-hypervisors")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/KeyPairApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/KeyPairApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/KeyPairApi.java
index cdc1d17..d806545 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/KeyPairApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/KeyPairApi.java
@@ -51,7 +51,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to the OpenStack Compute (Nova) Key Pair Extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.KEYPAIRS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.KEYPAIRS, name = ExtensionNames.KEYPAIRS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-keypairs")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/QuotaApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/QuotaApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/QuotaApi.java
index ce7aeb8..a8e2027 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/QuotaApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/QuotaApi.java
@@ -51,7 +51,7 @@ import com.google.common.annotations.Beta;
*
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.QUOTAS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.QUOTAS, name = ExtensionNames.QUOTAS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-quota-sets")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
index ec37d65..44afc36 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
@@ -51,7 +51,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to the OpenStack Compute (Nova) Security Group extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.SECURITY_GROUPS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.SECURITY_GROUPS, name = ExtensionNames.SECURITY_GROUPS)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
public interface SecurityGroupApi {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ServerAdminApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ServerAdminApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ServerAdminApi.java
index bf22f40..053feeb 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ServerAdminApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/ServerAdminApi.java
@@ -50,7 +50,7 @@ import com.google.common.annotations.Beta;
*
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.ADMIN_ACTIONS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.ADMIN_ACTIONS, name = ExtensionNames.SERVER_ADMIN)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/servers/{id}/action")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SimpleTenantUsageApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SimpleTenantUsageApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SimpleTenantUsageApi.java
index 46dff34..6e74d17 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SimpleTenantUsageApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SimpleTenantUsageApi.java
@@ -41,7 +41,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to the OpenStack Compute (Nova) Simple Tenant Usage extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.SIMPLE_TENANT_USAGE)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.SIMPLE_TENANT_USAGE, name = ExtensionNames.SIMPLE_TENANT_USAGE)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-simple-tenant-usage")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VirtualInterfaceApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VirtualInterfaceApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VirtualInterfaceApi.java
index a0f8833..8f6f147 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VirtualInterfaceApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VirtualInterfaceApi.java
@@ -39,7 +39,7 @@ import com.google.common.collect.FluentIterable;
* Provides access to the OpenStack Compute (Nova) Virtual Interface (VIFs) extension API.
*/
@Beta
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.VIRTUAL_INTERFACES)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.VIRTUAL_INTERFACES, name = ExtensionNames.VIRTUAL_INTERFACES)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/servers")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VolumeAttachmentApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VolumeAttachmentApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VolumeAttachmentApi.java
index f274651..7fbe8ae 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VolumeAttachmentApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/VolumeAttachmentApi.java
@@ -48,7 +48,7 @@ import com.google.common.collect.FluentIterable;
* This API strictly handles attaching Volumes to Servers. To create and manage Volumes you need to use the Cinder API.
* @see org.jclouds.openstack.cinder.v1.features.VolumeApi
*/
-@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.VOLUME_ATTACHMENTS)
+@Extension(of = ServiceType.COMPUTE, namespace = ExtensionNamespaces.VOLUME_ATTACHMENTS, name = ExtensionNames.VOLUME_ATTACHMENT)
@RequestFilters(AuthenticateRequest.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/servers")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApiExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApiExpectTest.java
index e77c2e2..7bec68e 100644
--- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApiExpectTest.java
+++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApiExpectTest.java
@@ -58,6 +58,17 @@ public class FloatingIPApiExpectTest extends BaseNovaApiExpectTest {
}
+ public void testNamespaceMissingNameFallback() throws Exception {
+
+ NovaApi apiWhenExtensionNotInList = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName,
+ responseWithKeystoneAccess, extensionsOfNovaRequest, unmatchedExtensionsOfNovaResponseWithNoNamespace);
+
+ assertEquals(apiWhenExtensionNotInList.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1", "az-2.region-a.geo-1", "az-3.region-a.geo-1"));
+
+ assertTrue(apiWhenExtensionNotInList.getFloatingIPApi("az-1.region-a.geo-1").isPresent());
+
+ }
+
public void testListFloatingIPsWhenResponseIs2xx() throws Exception {
HttpRequest list = HttpRequest
.builder()
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/internal/BaseNovaExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/internal/BaseNovaExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/internal/BaseNovaExpectTest.java
index 76460bc..e4dc191 100644
--- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/internal/BaseNovaExpectTest.java
+++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/internal/BaseNovaExpectTest.java
@@ -35,6 +35,7 @@ public class BaseNovaExpectTest<T> extends BaseRestApiExpectTest<T> {
protected HttpRequest extensionsOfNovaRequest;
protected HttpResponse extensionsOfNovaResponse;
protected HttpResponse unmatchedExtensionsOfNovaResponse;
+ protected HttpResponse unmatchedExtensionsOfNovaResponseWithNoNamespace;
protected HttpRequest keystoneAuthWithAccessKeyAndSecretKeyAndTenantId;
protected String identityWithTenantId;
@@ -48,13 +49,13 @@ public class BaseNovaExpectTest<T> extends BaseRestApiExpectTest<T> {
credential);
keystoneAuthWithAccessKeyAndSecretKeyAndTenantId = KeystoneFixture.INSTANCE.initialAuthWithAccessKeyAndSecretKeyAndTenantId(identity,
credential);
-
+
authToken = KeystoneFixture.INSTANCE.getAuthToken();
responseWithKeystoneAccess = KeystoneFixture.INSTANCE.responseWithAccess();
// now, createContext arg will need tenant prefix
identityWithTenantId = KeystoneFixture.INSTANCE.getTenantId() + ":" + identity;
identity = KeystoneFixture.INSTANCE.getTenantName() + ":" + identity;
-
+
extensionsOfNovaRequest = HttpRequest.builder().method("GET")
// NOTE THIS IS NOVA, NOT KEYSTONE
.endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/extensions")
@@ -63,16 +64,19 @@ public class BaseNovaExpectTest<T> extends BaseRestApiExpectTest<T> {
extensionsOfNovaResponse = HttpResponse.builder().statusCode(200)
.payload(payloadFromResource("/extension_list_full.json")).build();
-
+
unmatchedExtensionsOfNovaResponse = HttpResponse.builder().statusCode(200)
.payload(payloadFromResource("/extension_list.json")).build();
+
+ unmatchedExtensionsOfNovaResponseWithNoNamespace = HttpResponse.builder().statusCode(200)
+ .payload(payloadFromResource("/extension_list_full_no_namespaces.json")).build();
}
@Override
protected HttpRequestComparisonType compareHttpRequestAsType(HttpRequest input) {
return HttpRequestComparisonType.JSON;
}
-
+
protected HttpRequest.Builder<?> authenticatedGET() {
return HttpRequest.builder()
.method("GET")
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7d73a039/apis/openstack-nova/src/test/resources/extension_list_full_no_namespaces.json
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/resources/extension_list_full_no_namespaces.json b/apis/openstack-nova/src/test/resources/extension_list_full_no_namespaces.json
new file mode 100644
index 0000000..788c17e
--- /dev/null
+++ b/apis/openstack-nova/src/test/resources/extension_list_full_no_namespaces.json
@@ -0,0 +1,316 @@
+{
+ "extensions": [
+ {
+ "updated": "2011-09-27T00:00:00+00:00",
+ "name": "DiskConfig",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "OS-DCF",
+ "description": "Disk Management Extension"
+ },
+ {
+ "updated": "2011-06-29T00:00:00+00:00",
+ "name": "Hosts",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-hosts",
+ "description": "Admin-only host administration"
+ },
+ {
+ "updated": "2011-07-19T00:00:00+00:00",
+ "name": "SchedulerHints",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-scheduler-hints",
+ "description": "Pass arbitrary key/value pairs to the scheduler"
+ },
+ {
+ "updated": "2011-08-08T00:00:00+00:00",
+ "name": "Quotas",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-quota-sets",
+ "description": "Quotas management support"
+ },
+ {
+ "updated": "2011-12-23T00:00:00+00:00",
+ "name": "Floating_ip_dns",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-floating-ip-dns",
+ "description": "Floating IP DNS support"
+ },
+ {
+ "updated": "2011-09-14T00:00:00+00:00",
+ "name": "FlavorExtraData",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "OS-FLV-EXT-DATA",
+ "description": "Provide additional data for flavors"
+ },
+ {
+ "updated": "2011-06-23T00:00:00+00:00",
+ "name": "FlavorExtraSpecs",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-flavor-extra-specs",
+ "description": "Instance type (flavor) extra specs"
+ },
+ {
+ "updated": "2011-08-17T00:00:00+00:00",
+ "name": "VirtualInterfaces",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "virtual_interfaces",
+ "description": "Virtual interface support"
+ },
+ {
+ "updated": "2011-12-23T00:00:00+00:00",
+ "name": "Accounts",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-accounts",
+ "description": "Admin-only access to accounts"
+ },
+ {
+ "updated": "2011-03-25T00:00:00+00:00",
+ "name": "Volumes",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-volumes",
+ "description": "Volumes support"
+ },
+ {
+ "updated": "2011-11-03T00:00:00+00:00",
+ "name": "ExtendedStatus",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "OS-EXT-STS",
+ "description": "Extended Status support"
+ },
+ {
+ "updated": "2011-12-23T00:00:00+00:00",
+ "name": "Consoles",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-consoles",
+ "description": "Interactive Console support."
+ },
+ {
+ "updated": "2011-07-21T00:00:00+00:00",
+ "name": "SecurityGroups",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "security_groups",
+ "description": "Security group support"
+ },
+ {
+ "updated": "2012-01-12T00:00:00+00:00",
+ "name": "Aggregates",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-aggregates",
+ "description": "Admin-only aggregate administration"
+ },
+ {
+ "updated": "2011-07-19T00:00:00+00:00",
+ "name": "Createserverext",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-create-server-ext",
+ "description": "Extended support to the Create Server v1.1 API"
+ },
+ {
+ "updated": "2011-09-01T00:00:00+00:00",
+ "name": "DeferredDelete",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-deferred-delete",
+ "description": "Instance deferred delete"
+ },
+ {
+ "updated": "2011-12-21T00:00:00+00:00",
+ "name": "ServerDiagnostics",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-server-diagnostics",
+ "description": "Allow Admins to view server diagnostics through server action"
+ },
+ {
+ "updated": "2011-12-23T00:00:00+00:00",
+ "name": "Networks",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-networks",
+ "description": "Admin-only Network Management Extension"
+ },
+ {
+ "updated": "2011-11-03T00:00:00+00:00",
+ "name": "ExtendedServerAttributes",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "OS-EXT-SRV-ATTR",
+ "description": "Extended Server Attributes support."
+ },
+ {
+ "updated": "2011-08-08T00:00:00+00:00",
+ "name": "Keypairs",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-keypairs",
+ "description": "Keypair Support"
+ },
+ {
+ "updated": "2011-08-24T00:00:00+00:00",
+ "name": "VolumeTypes",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-volume-types",
+ "description": "Volume types support"
+ },
+ {
+ "updated": "2011-08-19T00:00:00+00:00",
+ "name": "SimpleTenantUsage",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-simple-tenant-usage",
+ "description": "Simple tenant usage extension"
+ },
+ {
+ "updated": "2012-01-04T00:00:00+00:00",
+ "name": "Floating_ip_pools",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-floating-ip-pools",
+ "description": "Floating IPs support"
+ },
+ {
+ "updated": "2012-01-23T00:00:00+00:00",
+ "name": "ServerStartStop",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-server-start-stop",
+ "description": "Start/Stop instance compute API support"
+ },
+ {
+ "updated": "2012-01-19T00:00:00+00:00",
+ "name": "Certificates",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-certificates",
+ "description": "Certificates support"
+ },
+ {
+ "updated": "2011-08-18T00:00:00+00:00",
+ "name": "Rescue",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-rescue",
+ "description": "Instance rescue mode"
+ },
+ {
+ "updated": "2012-01-19T00:00:00+00:00",
+ "name": "FlavorManage",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-flavor-manage",
+ "description": "\n Flavor create/delete API support\n "
+ },
+ {
+ "updated": "2011-12-16T00:00:00+00:00",
+ "name": "Cloudpipe",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-cloudpipe",
+ "description": "Adds actions to create cloudpipe instances.\n\n When running with the Vlan network mode, you need a mechanism to route\n from the public Internet to your vlans. This mechanism is known as a\n cloudpipe.\n\n At the time of creating this class, only OpenVPN is supported. Support for\n a SSH Bastion host is forthcoming.\n "
+ },
+ {
+ "updated": "2011-06-09T00:00:00+00:00",
+ "name": "Multinic",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "NMN",
+ "description": "Multiple network support"
+ },
+ {
+ "updated": "2011-08-08T00:00:00+00:00",
+ "name": "Users",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-users",
+ "description": "Allow admins to acces user information"
+ },
+ {
+ "updated": "2011-09-20T00:00:00+00:00",
+ "name": "AdminActions",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-admin-actions",
+ "description": "Enable admin-only server actions\n\n Actions include: pause,unpause, suspend, resume, migrate,\n resetNetwork, injectNetworkInfo, lock, unlock, createBackup\n "
+ },
+ {
+ "updated": "2011-12-21T00:00:00+00:00",
+ "name": "ServerActionList",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-server-action-list",
+ "description": "Allow Admins to view pending server actions"
+ },
+ {
+ "updated": "2011-12-08T00:00:00+00:00",
+ "name": "Console_output",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-console-output",
+ "description": "Console log output support, with tailing ability."
+ },
+ {
+ "updated": "2011-06-16T00:00:00+00:00",
+ "name": "FloatingIps",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-floating-ips",
+ "description": "Floating IPs support"
+ },
+ {
+ "updated": "2012-12-21T00:00:00+00:00",
+ "name": "AvailabilityZone",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-availability-zone",
+ "description": "1. Add availability_zone to the Create Server v1.1 API.\n 2. Add availability zones describing.\n "
+ },
+ {
+ "updated": "2013-07-08T00:00:00+00:00",
+ "name": "BlockDeviceMappingV2Boot",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-block-device-mapping-v2-boot",
+ "description": "Allow boot with the new BDM data format."
+ },
+ {
+ "alias": "os-volume-attachment-update",
+ "description": "Support for updating a volume attachment.",
+ "links": [],
+ "name": "VolumeAttachmentUpdate",
+ "namespace": "http://fake.org",
+ "updated": "2013-06-20T00:00:00Z"
+ },
+ {
+ "updated": "2012-07-22T00:00:00Z",
+ "name": "AttachInterfaces",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-attach-interfaces",
+ "description": "Attach interface support."
+ },
+ {
+ "updated": "2012-06-21T00:00:00Z",
+ "name": "Hypervisors",
+ "links": [],
+ "namespace": "http://fake.org",
+ "alias": "os-hypervisors",
+ "description": "Admin-only hypervisor administration."
+ }
+ ]
+}