You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/08/20 11:36:16 UTC
[30/51] [abbrv] [partial] stratos git commit: Revert "Upgrading to
jclouds 1.9.1"
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
new file mode 100644
index 0000000..ae62625
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
@@ -0,0 +1,492 @@
+/*
+ * 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.neutron.v2.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 VIP.
+ */
+public class VIP {
+
+ // Mandatory attributes when creating
+ @Named("tenant_id")
+ private String tenantId;
+ @Named("subnet_id")
+ private String subnetId;
+ private Protocol protocol;
+ @Named("protocol_port")
+ private Integer protocolPort;
+ // Mandatory attributes that can be updated
+ @Named("pool_id")
+ private String poolId;
+ // Optional attributes when creating
+ private String address;
+ // Optional attributes that can be updated
+ private String name;
+ private String description;
+ @Named("session_persistence")
+ private SessionPersistence sessionPersistence;
+ @Named("connection_limit")
+ private Integer connectionLimit;
+ @Named("admin_state_up")
+ private Boolean adminStateUp;
+ // Read-only attributes
+ private String id;
+ @Named("port_id")
+ private String portId;
+ private LBaaSStatus status;
+ @Named("status_description")
+ private String statusDescription;
+
+ /**
+ * Deserialization constructor.
+ */
+ @ConstructorProperties({ "id", "tenant_id", "name", "description", "subnet_id", "address", "port_id", "protocol",
+ "protocol_port", "pool_id", "session_persistence", "connection_limit", "admin_state_up", "status",
+ "status_description" })
+ private VIP(String id, String tenantId, String name, String description, String subnetId, String address,
+ String portId, Protocol protocol, Integer protocolPort, String poolId, SessionPersistence sessionPersistence,
+ Integer connectionLimit, Boolean adminStateUp, LBaaSStatus status, String statusDescription) {
+ this.id = id;
+ this.tenantId = tenantId;
+ this.name = name;
+ this.description = description;
+ this.subnetId = subnetId;
+ this.address = address;
+ this.portId = portId;
+ this.protocol = protocol;
+ this.protocolPort = protocolPort;
+ this.poolId = poolId;
+ this.sessionPersistence = sessionPersistence;
+ this.connectionLimit = connectionLimit;
+ this.adminStateUp = adminStateUp;
+ this.status = status;
+ this.statusDescription = statusDescription;
+ }
+
+ /**
+ * Default constructor.
+ */
+ private VIP() {
+ }
+
+ /**
+ * Copy constructor.
+ *
+ * @param VIP the VIP to copy from.
+ */
+ private VIP(VIP vip) {
+ this(vip.id, vip.tenantId, vip.name, vip.description, vip.subnetId, vip.address, vip.portId, vip.protocol,
+ vip.protocolPort, vip.poolId, vip.sessionPersistence, vip.connectionLimit, vip.adminStateUp, vip.status,
+ vip.statusDescription);
+ }
+
+ /**
+ * @return the id of the VIP.
+ */
+ @Nullable
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return the tenant id of the VIP.
+ */
+ @Nullable
+ public String getTenantId() {
+ return tenantId;
+ }
+
+ /**
+ * @return the name of the VIP.
+ */
+ @Nullable
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return the description of the VIP.
+ */
+ @Nullable
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * @return the subnet id for this VIP.
+ */
+ @Nullable
+ public String getSubnetId() {
+ return subnetId;
+ }
+
+ /**
+ * @return the address for this VIP.
+ */
+ @Nullable
+ public String getAddress() {
+ return address;
+ }
+
+ /**
+ * @return the port id for this VIP.
+ */
+ @Nullable
+ public String getPortId() {
+ return portId;
+ }
+
+ /**
+ * @return the protocol for this VIP.
+ */
+ @Nullable
+ public Protocol getProtocol() {
+ return protocol;
+ }
+
+ /**
+ * @return the protocol port for this VIP.
+ */
+ @Nullable
+ public Integer getProtocolPort() {
+ return protocolPort;
+ }
+
+ /**
+ * @return the pool id for this VIP.
+ */
+ @Nullable
+ public String getPoolId() {
+ return poolId;
+ }
+
+ /**
+ * @return the session persistence for this VIP.
+ */
+ @Nullable
+ public SessionPersistence getSessionPersistence() {
+ return sessionPersistence;
+ }
+
+ /**
+ * @return the connection limit for this VIP.
+ */
+ @Nullable
+ public Integer getConnectionLimit() {
+ return connectionLimit;
+ }
+
+ /**
+ * @return the administrative state for this VIP.
+ */
+ @Nullable
+ public Boolean getAdminStateUp() {
+ return adminStateUp;
+ }
+
+ /**
+ * @return the status for this VIP.
+ */
+ @Nullable
+ public LBaaSStatus getStatus() {
+ return status;
+ }
+
+ /**
+ * @return the status description for this VIP.
+ */
+ @Nullable
+ public String getStatusDescription() {
+ return statusDescription;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ VIP that = (VIP) o;
+
+ return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId)
+ && Objects.equal(this.name, that.name) && Objects.equal(this.description, that.description)
+ && Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.address, that.address)
+ && Objects.equal(this.portId, that.portId) && Objects.equal(this.protocol, that.protocol)
+ && Objects.equal(this.protocolPort, that.protocolPort) && Objects.equal(this.poolId, that.poolId)
+ && Objects.equal(this.sessionPersistence, that.sessionPersistence)
+ && Objects.equal(this.connectionLimit, that.connectionLimit)
+ && Objects.equal(this.adminStateUp, that.adminStateUp) && Objects.equal(this.status, that.status)
+ && Objects.equal(this.statusDescription, that.statusDescription);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id, tenantId, name, description, subnetId, address, portId, protocol, protocolPort,
+ poolId, sessionPersistence, connectionLimit, adminStateUp, status, statusDescription);
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
+ .add("description", description).add("subnetId", subnetId).add("address", address).add("portId", portId)
+ .add("protocol", protocol).add("protocolPort", protocolPort).add("poolId", poolId)
+ .add("sessionPersistence", sessionPersistence).add("connectionLimit", connectionLimit)
+ .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
+ .toString();
+ }
+
+ /*
+ * Methods to get the Create and Update builders follow.
+ */
+
+ /**
+ * @return the Builder for creating a new VIP.
+ */
+ public static CreateBuilder createBuilder(String subnetId, Protocol protocol, Integer port, String poolId) {
+ return new CreateBuilder(subnetId, protocol, port, poolId);
+ }
+
+ /**
+ * @return the Builder for updating a VIP.
+ */
+ public static UpdateBuilder updateBuilder() {
+ return new UpdateBuilder();
+ }
+
+ private abstract static class Builder<ParameterizedBuilderType> {
+ protected VIP vip;
+
+ /**
+ * Default constructor.
+ */
+ private Builder() {
+ vip = new VIP();
+ }
+
+ protected abstract ParameterizedBuilderType self();
+
+ /**
+ * Provides the name for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getName()
+ */
+ public ParameterizedBuilderType name(String name) {
+ vip.name = name;
+ return self();
+ }
+
+ /**
+ * Provides the description for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getDescription()
+ */
+ public ParameterizedBuilderType description(String description) {
+ vip.description = description;
+ return self();
+ }
+
+ /**
+ * Provides the pool id for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getPoolId()
+ */
+ public ParameterizedBuilderType poolId(String poolId) {
+ vip.poolId = poolId;
+ return self();
+ }
+
+ /**
+ * Provides the session persistence for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getSessionPersistence()
+ */
+ public ParameterizedBuilderType sessionPersistence(SessionPersistence sessionPersistence) {
+ vip.sessionPersistence = sessionPersistence;
+ return self();
+ }
+
+ /**
+ * Provides the connection limit for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getConnectionLimit()
+ */
+ public ParameterizedBuilderType connectionLimit(Integer connectionLimit) {
+ vip.connectionLimit = connectionLimit;
+ return self();
+ }
+
+ /**
+ * Provides the administrative state for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getAdminStateUp()
+ */
+ public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+ vip.adminStateUp = adminStateUp;
+ return self();
+ }
+ }
+
+ /**
+ * Create builder (inheriting from Builder).
+ */
+ public static class CreateBuilder extends Builder<CreateBuilder> {
+ /**
+ * Supply required properties for creating a VIP's CreateBuilder
+ */
+ private CreateBuilder(String subnetId, Protocol protocol, Integer port, String poolId) {
+ subnetId(subnetId).protocol(protocol).protocolPort(port).poolId(poolId);
+ }
+
+ /**
+ * Provides the tenantId for this VIP's Builder. Admin-only.
+ * When keystone is enabled, it is not mandatory to specify tenant_id for resources in create requests, as the
+ * tenant identifier will be derived from the Authentication token. Please note that the default authorization
+ * settings only allow administrative users to create resources on behalf of a different tenant.
+ *
+ * @return the Builder.
+ * @see VIP#getTenantId()
+ */
+ public CreateBuilder tenantId(String tenantId) {
+ vip.tenantId = tenantId;
+ return self();
+ }
+
+ /**
+ * Provides the subnet id for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getSubnetId()
+ */
+ public CreateBuilder subnetId(String subnetId) {
+ vip.subnetId = subnetId;
+ return self();
+ }
+
+ /**
+ * Provides the address for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getAddress()
+ */
+ public CreateBuilder address(String address) {
+ vip.address = address;
+ return self();
+ }
+
+ /**
+ * Provides the protocol for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getProtocol()
+ */
+ public CreateBuilder protocol(Protocol protocol) {
+ vip.protocol = protocol;
+ return self();
+ }
+
+ /**
+ * Provides the protocol port for this VIP's Builder.
+ *
+ * @return the Builder.
+ * @see VIP#getProtocolPort()
+ */
+ public CreateBuilder protocolPort(Integer protocolPort) {
+ vip.protocolPort = protocolPort;
+ return self();
+ }
+
+ /**
+ * @return a CreateVIP constructed with this Builder.
+ */
+ public CreateVIP build() {
+ return new CreateVIP(vip);
+ }
+
+ @Override
+ protected CreateBuilder self() {
+ return this;
+ }
+ }
+
+ /**
+ * Update builder (inheriting from Builder).
+ */
+ public static class UpdateBuilder extends Builder<UpdateBuilder> {
+ /**
+ * Supply required properties for creating a VIP's UpdateBuilder.
+ */
+ private UpdateBuilder() {
+ }
+
+ /**
+ * @return a UpdateVIP constructed with this Builder.
+ */
+ public UpdateVIP build() {
+ return new UpdateVIP(vip);
+ }
+
+ @Override
+ protected UpdateBuilder self() {
+ return this;
+ }
+ }
+
+ /**
+ * Create options - extend the domain class, passed to API create calls.
+ * Essentially the same as the domain class. Ensure validation and safe typing.
+ */
+ public static class CreateVIP extends VIP {
+ /**
+ * Copy constructor.
+ *
+ * @param vip the VIP to copy from.
+ */
+ private CreateVIP(VIP vip) {
+ super(vip);
+ }
+ }
+
+ /**
+ * Update options - extend the domain class, passed to API update calls.
+ * Essentially the same as the domain class. Ensure validation and safe typing.
+ */
+ public static class UpdateVIP extends VIP {
+ /**
+ * Copy constructor.
+ *
+ * @param vip the VIP to copy from.
+ */
+ private UpdateVIP(VIP vip) {
+ super(vip);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
new file mode 100644
index 0000000..f53223d
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
@@ -0,0 +1,36 @@
+/*
+ * 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.neutron.v2.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of of Neutron LBaaS v1 VIPs.
+ */
+public class VIPs extends PaginatedCollection<VIP> {
+ public static final VIPs EMPTY = new VIPs(ImmutableSet.<VIP> of(), ImmutableSet.<Link> of());
+
+ @ConstructorProperties({ "vips", "vips_links" })
+ protected VIPs(Iterable<VIP> vips, Iterable<Link> vipsLinks) {
+ super(vips, vipsLinks);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
new file mode 100644
index 0000000..60d23a3
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
@@ -0,0 +1,39 @@
+/*
+ * 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.neutron.v2.extensions;
+
+/**
+ * Extension Namespaces for OpenStack Networking (Neutron).
+ */
+public final class ExtensionNamespaces {
+ /**
+ * Neutron Layer-3 Router Extension
+ */
+ public static final String L3_ROUTER = "http://docs.openstack.org/ext/neutron/router/api/v1.0";
+ /**
+ * Neutron Security Groups Extension
+ */
+ public static final String SECURITY_GROUPS = "http://docs.openstack.org/ext/securitygroups/api/v2.0";
+ /**
+ * LBaaS Extension.
+ */
+ public static final String LBAAS = "http://wiki.openstack.org/neutron/LBaaS/API_1.0";
+
+ private ExtensionNamespaces() {
+ throw new AssertionError("intentionally unimplemented");
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
new file mode 100644
index 0000000..9a65543
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -0,0 +1,138 @@
+/*
+ * 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.neutron.v2.extensions;
+
+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.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIP;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptyFloatingIPsFallback;
+import org.jclouds.openstack.neutron.v2.functions.FloatingIPsToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.ParseFloatingIPs;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to Floating IP operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * A floating IP is an IP address on an external network, which is associated with a specific port, and optionally a
+ * specific IP address, on a private OpenStack Networking network. Therefore a floating IP allows access to an
+ * instance on a private network from an external network. Floating IPs can only be defined on networks for which the
+ * attribute floatingip:external (by the external network extension) has been set to True.
+ */
+@Beta
+@Path("/floatingips")
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface FloatingIPApi {
+
+ /**
+ * Returns a list of floating IPs to which the tenant has access. Default policy settings return only
+ * those floating IPs that are owned by the tenant who submits the request, unless the request is submitted by an
+ * user with administrative rights.
+ *
+ * @return the list of all floatingIP references configured for the tenant.
+ */
+ @Named("floatingip:list")
+ @GET
+ @Transform(FloatingIPsToPagedIterable.class)
+ @ResponseParser(ParseFloatingIPs.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<FloatingIP> list();
+
+ /**
+ * @return the list of all floatingIP references configured for the tenant.
+ */
+ @Named("floatingip:list")
+ @GET
+ @ResponseParser(ParseFloatingIPs.class)
+ @Fallback(EmptyFloatingIPsFallback.class)
+ FloatingIPs list(PaginationOptions options);
+
+ /**
+ * Returns the details for a specific floating IP.
+ *
+ * @param id the id of the floatingIP to return
+ * @return FloatingIPs collection or empty if not found
+ */
+ @Named("floatingip:get")
+ @GET
+ @Path("/{id}")
+ @SelectJson("floatingip")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ FloatingIP get(@PathParam("id") String id);
+
+ /**
+ * Creates a floating IP.
+ *
+ * @param createFloatingIP Options for creating a Floating IP
+ * @return the newly created Floating IP
+ */
+ @Named("floatingip:create")
+ @POST
+ @SelectJson("floatingip")
+ FloatingIP create(@WrapWith("floatingip") FloatingIP.CreateFloatingIP createFloatingIP);
+
+ /**
+ * Update a Floating IP
+ *
+ * @param id the id of the Floating IP to update
+ * @param updateFloatingIP Contains only the attributes to update
+ * @return The modified Floating IP
+ */
+ @Named("floatingip:update")
+ @PUT
+ @Path("/{id}")
+ @SelectJson("floatingip")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ FloatingIP update(@PathParam("id") String id, @WrapWith("floatingip") FloatingIP.UpdateFloatingIP updateFloatingIP);
+
+ /**
+ * Deletes the specified floatingIP
+ *
+ * @param id the id of the floatingIP to delete
+ * @return true if delete successful, false if not
+ */
+ @Named("floatingip:delete")
+ @DELETE
+ @Path("/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean delete(@PathParam("id") String id);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
new file mode 100644
index 0000000..e259d69
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -0,0 +1,198 @@
+/*
+ * 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.neutron.v2.extensions;
+
+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.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.Router;
+import org.jclouds.openstack.neutron.v2.domain.RouterInterface;
+import org.jclouds.openstack.neutron.v2.domain.Routers;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptyRoutersFallback;
+import org.jclouds.openstack.neutron.v2.functions.ParseRouters;
+import org.jclouds.openstack.neutron.v2.functions.RouterToPagedIterable;
+import org.jclouds.openstack.neutron.v2.options.EmptyOptions;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.MapBinder;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to Router operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * A logical entity for forwarding packets across internal subnets and NATting them on external
+ * networks through an appropriate external gateway.
+ *
+ * @see <a href=
+ * "http://docs.openstack.org/api/openstack-network/2.0/content/router_ext.html">api doc</a>
+ */
+@Beta
+@Path("/routers")
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface RouterApi {
+
+ /**
+ * Returns the list of all routers currently defined in Neutron for the current tenant. The list provides the unique
+ * identifier of each router configured for the tenant
+ *
+ * @return the list of all router references configured for the tenant.
+ */
+ @Named("router:list")
+ @GET
+ @Transform(RouterToPagedIterable.class)
+ @ResponseParser(ParseRouters.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Router> list();
+
+ /**
+ * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
+ */
+ @Named("router:list")
+ @GET
+ @ResponseParser(ParseRouters.class)
+ @Fallback(EmptyRoutersFallback.class)
+ Routers list(PaginationOptions options);
+
+ /**
+ * Returns a Routers collection that should contain a single router with the id requested.
+ *
+ * @param id the id of the router to return
+ * @return Routers collection or empty if not found
+ */
+ @Named("router:get")
+ @GET
+ @Path("/{id}")
+ @SelectJson("router")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Router get(@PathParam("id") String id);
+
+ /**
+ * Create a new router
+ *
+ * @param router Options for creating a router
+ * @return the newly created router
+ */
+ @Named("router:create")
+ @POST
+ @SelectJson("router")
+ Router create(@WrapWith("router") Router.CreateRouter router);
+
+ /**
+ * Update a router
+ *
+ * @param id the id of the router to update
+ * @param router Contains only the attributes to update
+ * @return The modified router
+ */
+ @Named("router:update")
+ @PUT
+ @Path("/{id}")
+ @SelectJson("router")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Router update(@PathParam("id") String id, @WrapWith("router") Router.UpdateRouter router);
+
+ /**
+ * Deletes the specified router
+ *
+ * @param id the id of the router to delete
+ * @return true if delete successful, false if not
+ */
+ @Named("router:delete")
+ @DELETE
+ @Path("/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean delete(@PathParam("id") String id);
+
+ /**
+ * Add a interface to a router to connect to the specified subnet
+ *
+ * @param routerId the id of the router to create the interface at
+ * @param subnetId the id of the subnet to connect with the interface
+ * @return the newly-created router interface
+ */
+ @Named("router:addInterfaceForSubnet")
+ @PUT
+ @Path("/{id}/add_router_interface")
+ @MapBinder(EmptyOptions.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ RouterInterface addInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
+
+ /**
+ * Add a interface to a router to connect to the specified port
+ *
+ * @param routerId the id of the router to create the interface at
+ * @param portId the id of the port to connect with the interface
+ * @return the newly-created router interface
+ */
+ @Named("router:addInterfaceForPort")
+ @PUT
+ @Path("/{id}/add_router_interface")
+ @MapBinder(EmptyOptions.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ RouterInterface addInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
+
+ /**
+ * Remove the interface where the specified subnet is connected to
+ *
+ * @param routerId the id of the router to remove the interface from
+ * @param subnetId the id of the subnet to disconnect from the interface
+ */
+ @Named("router:removeInterfaceForSubnet")
+ @PUT
+ @Path("/{id}/remove_router_interface")
+ @MapBinder(EmptyOptions.class)
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean removeInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
+
+ /**
+ * Remove the interface where the specified port is connected to
+ *
+ * @param routerId the id of the router to remove the interface from
+ * @param portId the id of the port to disconnect from the interface
+ */
+ @Named("router:removeInterfaceForPort")
+ @PUT
+ @Path("/{id}/remove_router_interface")
+ @MapBinder(EmptyOptions.class)
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean removeInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
new file mode 100644
index 0000000..0832d4c
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
@@ -0,0 +1,186 @@
+/*
+ * 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.neutron.v2.extensions;
+
+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.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.Rule;
+import org.jclouds.openstack.neutron.v2.domain.Rules;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptyRulesFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptySecurityGroupsFallback;
+import org.jclouds.openstack.neutron.v2.functions.ParseRules;
+import org.jclouds.openstack.neutron.v2.functions.ParseSecurityGroups;
+import org.jclouds.openstack.neutron.v2.functions.RulesToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.SecurityGroupsToPagedIterable;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to Security Group extension operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * Security groups and security group rules allows administrators and tenants the ability to specify the type of
+ * traffic and direction (ingress/egress) that is allowed to pass through a port. A security group is a container for
+ * security group rules.
+ */
+@Beta
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.APPLICATION_JSON)
+public interface SecurityGroupApi {
+ /**
+ * Groups
+ */
+
+ /**
+ * @return all security groups currently defined in Neutron for the current tenant.
+ */
+ @Path("/security-groups")
+ @Named("security-group:list")
+ @GET
+ @ResponseParser(ParseSecurityGroups.class)
+ @Transform(SecurityGroupsToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<SecurityGroup> listSecurityGroups();
+
+ /**
+ * @return all security groups currently defined in Neutron for the current tenant.
+ */
+ @Path("/security-groups")
+ @Named("security-group:list")
+ @GET
+ @ResponseParser(ParseSecurityGroups.class)
+ @Fallback(EmptySecurityGroupsFallback.class)
+ SecurityGroups listSecurityGroups(PaginationOptions options);
+
+ /**
+ * @param id the id of the security group to return
+ * @return SecurityGroup or null if not found.
+ */
+ @Path("/security-groups/{id}")
+ @Named("security-group:get")
+ @GET
+ @SelectJson("security_group")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ @Nullable
+ SecurityGroup getSecurityGroup(@PathParam("id") String id);
+
+ /**
+ * Creates a new SecurityGroup.
+ *
+ * @param securityGroup Describes the security group to be created.
+ * @return a reference of the newly-created security group
+ */
+ @Path("/security-groups")
+ @Named("secuity-group:create")
+ @POST
+ @SelectJson("security_group")
+ SecurityGroup create(@WrapWith("security_group") SecurityGroup.CreateSecurityGroup securityGroup);
+
+ /**
+ * Deletes the specified Security Group.
+ *
+ * @param id the id of the security group to delete
+ * @return true if delete was successful, false if not
+ */
+ @Path("/security-groups/{id}")
+ @Named("security-group:delete")
+ @DELETE
+ @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+ boolean deleteSecurityGroup(@PathParam("id") String id);
+
+ /**
+ * Rules
+ */
+
+ /**
+ * @return all security groups rules currently defined in Neutron for the current tenant.
+ */
+ @Path("/security-group-rules")
+ @Named("security-group-rule:list")
+ @GET
+ @ResponseParser(ParseRules.class)
+ @Transform(RulesToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Rule> listRules();
+
+ /**
+ * @return all security groups rules currently defined in Neutron for the current tenant.
+ */
+ @Path("/security-group-rules")
+ @Named("security-group-rule:list")
+ @GET
+ @ResponseParser(ParseRules.class)
+ @Fallback(EmptyRulesFallback.class)
+ Rules listRules(PaginationOptions options);
+
+ /**
+ * @param id the id of the security group rule to return.
+ * @return SecurityGroupRule or null if not found.
+ */
+ @Path("/security-group-rules/{id}")
+ @Named("security-group-rule:get")
+ @GET
+ @SelectJson("security_group_rule")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ @Nullable
+ Rule get(@PathParam("id") String id);
+
+ /**
+ * Creates a new Security Group Rule.
+ *
+ * @param securityGroupRule Describes the security group rule to be created.
+ * @return a reference of the newly-created security group rule.
+ */
+ @Path("/security-group-rules")
+ @Named("security-group-rule:create")
+ @POST
+ @SelectJson("security_group_rule")
+ Rule create(@WrapWith("security_group_rule") Rule.CreateRule securityGroupRule);
+
+ /**
+ * Deletes the specified Security Group Rule.
+ *
+ * @param id the id of the security group rule to delete.
+ * @return true if delete was successful, false if not.
+ */
+ @Path("/security-group-rules/{id}")
+ @Named("security-group-rule:delete")
+ @DELETE
+ @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+ boolean deleteRule(@PathParam("id") String id);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
new file mode 100644
index 0000000..dad80d8
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
@@ -0,0 +1,426 @@
+/*
+ * 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.neutron.v2.extensions.lbaas.v1;
+
+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.PUT;
+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.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pool;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+import org.jclouds.openstack.neutron.v2.extensions.ExtensionNamespaces;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyHealthMonitorsFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyMembersFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyPoolsFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyVIPsFallback;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.HealthMonitorsToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.MembersToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseHealthMonitors;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseMembers;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParsePools;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseVIPs;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.PoolsToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.VIPsToPagedIterable;
+import org.jclouds.openstack.v2_0.ServiceType;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Payload;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to load-balancing operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * LBaaS v1 is an extension to load-balance the traffic between instances and external networks.
+ */
+@Beta
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.LBAAS)
+@Path("/lb")
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface LBaaSApi {
+
+ /**
+ * Returns a list of VIPs to which the tenant has access. Default policy settings return only
+ * those VIPs that are owned by the tenant who submits the request, unless the request is submitted by an
+ * user with administrative rights.
+ *
+ * @return the list of all VIP references configured for the tenant.
+ */
+ @Named("vip:list")
+ @GET
+ @Path("/vips")
+ @Transform(VIPsToPagedIterable.class)
+ @ResponseParser(ParseVIPs.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<VIP> listVIPs();
+
+ /**
+ * @return the list of all VIP references configured for the tenant.
+ */
+ @Named("vip:list")
+ @GET
+ @Path("/vips")
+ @ResponseParser(ParseVIPs.class)
+ @Fallback(EmptyVIPsFallback.class)
+ VIPs listVIPs(PaginationOptions options);
+
+ /**
+ * Returns the details for a specific VIP.
+ *
+ * @param id the id of the VIP to return.
+ * @return VIP or null if not found.
+ */
+ @Named("vip:get")
+ @GET
+ @Path("/vips/{id}")
+ @SelectJson("vip")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ VIP getVIP(@PathParam("id") String id);
+
+ /**
+ * Creates a new VIP.
+ *
+ * @param vip describes the VIP to be created.
+ * @return a reference of the newly-created VIP.
+ */
+ @Named("vip:create")
+ @POST
+ @Path("/vips")
+ @SelectJson("vip")
+ VIP createVIP(@WrapWith("vip") VIP.CreateVIP vip);
+
+ /**
+ * Update a VIP.
+ *
+ * @param id the id of the VIP to update.
+ * @param vip the VIP's attributes to update.
+ * @return a reference of the updated VIP.
+ */
+ @Named("vip:update")
+ @PUT
+ @Path("/vips/{id}")
+ @SelectJson("vip")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ VIP updateVIP(@PathParam("id") String id, @WrapWith("vip") VIP.UpdateVIP vip);
+
+ /**
+ * Deletes the specified VIP.
+ *
+ * @param id the id of the VIP to delete.
+ * @return true if delete successful, false if not.
+ */
+ @Named("vip:delete")
+ @DELETE
+ @Path("/vips/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean deleteVIP(@PathParam("id") String id);
+
+ /**
+ * Returns a list of Pools to which the tenant has access. Default policy settings return only
+ * those Pools that are owned by the tenant who submits the request, unless the request is submitted by an
+ * user with administrative rights.
+ *
+ * @return the list of all Pool references configured for the tenant.
+ */
+ @Named("pool:list")
+ @GET
+ @Path("/pools")
+ @Transform(PoolsToPagedIterable.class)
+ @ResponseParser(ParsePools.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Pool> listPools();
+
+ /**
+ * @return the list of all Pool references configured for the tenant.
+ */
+ @Named("pool:list")
+ @GET
+ @Path("/pools")
+ @ResponseParser(ParsePools.class)
+ @Fallback(EmptyPoolsFallback.class)
+ Pools listPools(PaginationOptions options);
+
+ /**
+ * Returns the details for a specific Pool.
+ *
+ * @param id the id of the Pool to return.
+ * @return Pool or null if not found.
+ */
+ @Named("pool:get")
+ @GET
+ @Path("/pools/{id}")
+ @SelectJson("pool")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Pool getPool(@PathParam("id") String id);
+
+ /**
+ * Creates a new Pool.
+ *
+ * @param pool describes the Pool to be created.
+ * @return a reference of the newly-created Pool.
+ */
+ @Named("pool:create")
+ @POST
+ @Path("/pools")
+ @SelectJson("pool")
+ Pool createPool(@WrapWith("pool") Pool.CreatePool pool);
+
+ /**
+ * Update a Pool.
+ *
+ * @param id the id of the Pool to update.
+ * @param pool the Pool's attributes to update.
+ * @return a reference of the updated Pool.
+ */
+ @Named("pool:update")
+ @PUT
+ @Path("/pools/{id}")
+ @SelectJson("pool")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Pool updatePool(@PathParam("id") String id, @WrapWith("pool") Pool.UpdatePool pool);
+
+ /**
+ * Deletes the specified Pool.
+ *
+ * @param id the id of the Pool to delete.
+ * @return true if delete successful, false if not.
+ */
+ @Named("pool:delete")
+ @DELETE
+ @Path("/pools/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean deletePool(@PathParam("id") String id);
+
+ /**
+ * Returns a list of Members to which the tenant has access. Default policy settings return only
+ * those Members that are owned by the tenant who submits the request, unless the request is submitted by an
+ * user with administrative rights.
+ *
+ * @return the list of all Member references configured for the tenant.
+ */
+ @Named("member:list")
+ @GET
+ @Path("/members")
+ @Transform(MembersToPagedIterable.class)
+ @ResponseParser(ParseMembers.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Member> listMembers();
+
+ /**
+ * @return the list of all Member references configured for the tenant.
+ */
+ @Named("member:list")
+ @GET
+ @Path("/members")
+ @ResponseParser(ParseMembers.class)
+ @Fallback(EmptyMembersFallback.class)
+ Members listMembers(PaginationOptions options);
+
+ /**
+ * Returns the details for a specific Member.
+ *
+ * @param id the id of the Member to return.
+ * @return Member or null if not found.
+ */
+ @Named("member:get")
+ @GET
+ @Path("/members/{id}")
+ @SelectJson("member")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Member getMember(@PathParam("id") String id);
+
+ /**
+ * Creates a new Member.
+ *
+ * @param member describes the Member to be created.
+ * @return a reference of the newly-created Member.
+ */
+ @Named("member:create")
+ @POST
+ @Path("/members")
+ @SelectJson("member")
+ Member createMember(@WrapWith("member") Member.CreateMember member);
+
+ /**
+ * Update a Member.
+ *
+ * @param id the id of the Member to update.
+ * @param member the Member's attributes to update.
+ * @return a reference of the updated Member.
+ */
+ @Named("member:update")
+ @PUT
+ @Path("/members/{id}")
+ @SelectJson("member")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Member updateMember(@PathParam("id") String id, @WrapWith("member") Member.UpdateMember member);
+
+ /**
+ * Deletes the specified Member.
+ *
+ * @param id the id of the Member to delete.
+ * @return true if delete successful, false if not.
+ */
+ @Named("member:delete")
+ @DELETE
+ @Path("/members/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean deleteMember(@PathParam("id") String id);
+
+ /**
+ * Returns a list of HealthMonitors to which the tenant has access. Default policy settings return only
+ * those HealthMonitors that are owned by the tenant who submits the request, unless the request is submitted by an
+ * user with administrative rights.
+ *
+ * @return the list of all HealthMonitor references configured for the tenant.
+ */
+ @Named("health_monitor:list")
+ @GET
+ @Path("/health_monitors")
+ @Transform(HealthMonitorsToPagedIterable.class)
+ @ResponseParser(ParseHealthMonitors.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<HealthMonitor> listHealthMonitors();
+
+ /**
+ * @return the list of all HealthMonitor references configured for the tenant.
+ */
+ @Named("health_monitor:list")
+ @GET
+ @Path("/health_monitors")
+ @ResponseParser(ParseHealthMonitors.class)
+ @Fallback(EmptyHealthMonitorsFallback.class)
+ HealthMonitors listHealthMonitors(PaginationOptions options);
+
+ /**
+ * Returns the details for a specific HealthMonitor.
+ *
+ * @param id the id of the HealthMonitor to return.
+ * @return Health Monitor or null if not found.
+ */
+ @Named("health_monitor:get")
+ @GET
+ @Path("/health_monitors/{id}")
+ @SelectJson("health_monitor")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ HealthMonitor getHealthMonitor(@PathParam("id") String id);
+
+ /**
+ * Creates a new HealthMonitor.
+ *
+ * @param healthMonitor describes the HealthMonitor to be created.
+ * @return a reference of the newly-created HealthMonitor.
+ */
+ @Named("health_monitor:create")
+ @POST
+ @Path("/health_monitors")
+ @SelectJson("health_monitor")
+ HealthMonitor createHealthMonitor(@WrapWith("health_monitor") HealthMonitor.CreateHealthMonitor healthMonitor);
+
+ /**
+ * Update a HealthMonitor.
+ *
+ * @param id the id of the HealthMonitor to update.
+ * @param healthMonitor the HealthMonitor's attributes to update.
+ * @return a reference of the updated HealthMonitor.
+ */
+ @Named("health_monitor:update")
+ @PUT
+ @Path("/health_monitors/{id}")
+ @SelectJson("health_monitor")
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ HealthMonitor updateHealthMonitor(@PathParam("id") String id,
+ @WrapWith("health_monitor") HealthMonitor.UpdateHealthMonitor healthMonitor);
+
+ /**
+ * Deletes the specified Health Monitor.
+ *
+ * @param id the id of the Health Monitor to delete.
+ * @return true if delete successful, false if not.
+ */
+ @Named("health_monitor:delete")
+ @DELETE
+ @Path("/health_monitors/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean deleteHealthMonitor(@PathParam("id") String id);
+
+ /**
+ * Associate a HealthMonitor to a Pool.
+ *
+ * @param poolId the id of the Pool to associate.
+ * @param healthMonitorId the id of the HealthMonitor to associate.
+ * @return the newly associated HealthMonitor.
+ */
+ @Named("pool:associate_health_monitor")
+ @POST
+ @Path("/pools/{pool-id}/health_monitors")
+ @SelectJson("health_monitor")
+ @Payload("%7B\"health_monitor\":%7B\"id\":\"{healthMonitorId}\"%7D%7D")
+ @Produces(MediaType.APPLICATION_JSON)
+ HealthMonitor associateHealthMonitor(@PathParam("pool-id") String poolId,
+ @PayloadParam("healthMonitorId") String healthMonitorId);
+
+ /**
+ * Disassociate a HealthMonitor from a Pool.
+ *
+ * @param poolId the id of the Pool to disassociate.
+ * @param healthMonitorId the id of the HealthMonitor to disassociate.
+ * @return true if disassociate successful, false if not.
+ */
+ @Named("pool:disassociate_health_monitor")
+ @DELETE
+ @Path("/pools/{pool-id}/health_monitors/{health-monitor-id}")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean disassociateHealthMonitor(@PathParam("pool-id") String poolId,
+ @PathParam("health-monitor-id") String healthMonitorId);
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
new file mode 100644
index 0000000..ede9046
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyFloatingIPsFallback implements Fallback<FloatingIPs> {
+ @Override
+ public FloatingIPs createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return FloatingIPs.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
new file mode 100644
index 0000000..8410afb
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Networks;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyNetworksFallback implements Fallback<Networks> {
+ @Override
+ public Networks createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Networks.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
new file mode 100644
index 0000000..ac2e0db
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Ports;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyPortsFallback implements Fallback<Ports> {
+ @Override
+ public Ports createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Ports.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
new file mode 100644
index 0000000..8b74be2
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Routers;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyRoutersFallback implements Fallback<Routers> {
+ @Override
+ public Routers createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Routers.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
new file mode 100644
index 0000000..4556f74
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Rules;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyRulesFallback implements Fallback<Rules> {
+ @Override
+ public Rules createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Rules.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
new file mode 100644
index 0000000..70a3e37
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptySecurityGroupsFallback implements Fallback<SecurityGroups> {
+ @Override
+ public SecurityGroups createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return SecurityGroups.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
new file mode 100644
index 0000000..8f7a94a
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Subnets;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptySubnetsFallback implements Fallback<Subnets> {
+ @Override
+ public Subnets createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Subnets.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
new file mode 100644
index 0000000..8364fba
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyHealthMonitorsFallback implements Fallback<HealthMonitors> {
+ @Override
+ public HealthMonitors createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return HealthMonitors.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
new file mode 100644
index 0000000..9cb8084
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyMembersFallback implements Fallback<Members> {
+ @Override
+ public Members createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Members.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
new file mode 100644
index 0000000..0c2ce99
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyPoolsFallback implements Fallback<Pools> {
+ @Override
+ public Pools createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return Pools.EMPTY;
+ }
+ throw propagate(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
new file mode 100644
index 0000000..4dfae2d
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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.neutron.v2.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+import org.jclouds.rest.ResourceNotFoundException;
+
+public class EmptyVIPsFallback implements Fallback<VIPs> {
+ @Override
+ public VIPs createOrPropagate(Throwable t) throws Exception {
+ if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+ || contains404(t)) {
+ return VIPs.EMPTY;
+ }
+ throw propagate(t);
+ }
+}