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:19 UTC
[33/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/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
new file mode 100644
index 0000000..043bed8
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
@@ -0,0 +1,100 @@
+/*
+ * 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;
+
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
+
+import org.jclouds.apis.ApiMetadata;
+import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
+import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
+import org.jclouds.openstack.neutron.v2.config.NeutronHttpApiModule;
+import org.jclouds.openstack.v2_0.ServiceType;
+import org.jclouds.rest.internal.BaseHttpApiMetadata;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
+
+/**
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
+ *
+ */
+public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
+
+ @Override
+ public Builder toBuilder() {
+ return new Builder().fromApiMetadata(this);
+ }
+
+ public NeutronApiMetadata() {
+ this(new Builder());
+ }
+
+ protected NeutronApiMetadata(Builder builder) {
+ super(builder);
+ }
+
+ public static Properties defaultProperties() {
+ Properties properties = BaseHttpApiMetadata.defaultProperties();
+ properties.setProperty(SERVICE_TYPE, ServiceType.NETWORK);
+ properties.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
+ return properties;
+ }
+
+ public static class Builder extends BaseHttpApiMetadata.Builder<NeutronApi, Builder> {
+
+ protected Builder() {
+ super(NeutronApi.class);
+ id("openstack-neutron")
+ .name("OpenStack Neutron API")
+ .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
+ .credentialName("${password}")
+ .endpointName("Neutron base url ending in /v2.0/")
+ .documentation(URI.create("http://docs.openstack.org/api/openstack-network/2.0/content/"))
+ .version("v2.0")
+ .defaultEndpoint("http://localhost:5000/v2.0/")
+ .defaultProperties(NeutronApiMetadata.defaultProperties())
+ .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
+ .add(AuthenticationApiModule.class)
+ .add(KeystoneAuthenticationModule.class)
+ .add(RegionModule.class)
+ .add(NeutronHttpApiModule.class).build());
+ }
+
+ @Override
+ public NeutronApiMetadata build() {
+ return new NeutronApiMetadata(this);
+ }
+
+ @Override
+ public Builder fromApiMetadata(ApiMetadata in) {
+ super.fromApiMetadata(in);
+ return this;
+ }
+
+ @Override
+ protected Builder self() {
+ return this;
+ }
+ }
+
+}
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/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
new file mode 100644
index 0000000..90c59f2
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -0,0 +1,91 @@
+/*
+ * 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.config;
+
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.Multimap;
+import com.google.inject.Provides;
+import org.jclouds.http.HttpErrorHandler;
+import org.jclouds.http.annotation.ClientError;
+import org.jclouds.http.annotation.Redirection;
+import org.jclouds.http.annotation.ServerError;
+import org.jclouds.json.config.GsonModule.DateAdapter;
+import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.handlers.NeutronErrorHandler;
+import org.jclouds.openstack.v2_0.domain.Extension;
+import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet;
+import org.jclouds.openstack.neutron.v2.extensions.ExtensionNamespaces;
+import org.jclouds.rest.ConfiguresHttpApi;
+import org.jclouds.rest.config.HttpApiModule;
+import org.jclouds.rest.functions.ImplicitOptionalConverter;
+
+import javax.inject.Provider;
+import javax.inject.Singleton;
+import java.net.URI;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Configures the Neutron connection.
+ *
+ */
+@ConfiguresHttpApi
+public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
+
+ @Override
+ protected void configure() {
+ bind(DateAdapter.class).to(Iso8601DateAdapter.class);
+ bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
+ super.configure();
+ }
+
+ @Provides
+ @Singleton
+ public Multimap<URI, URI> aliases() {
+ return ImmutableMultimap.<URI, URI>builder()
+ .put(URI.create(ExtensionNamespaces.L3_ROUTER),
+ URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"))
+ .put(URI.create(ExtensionNamespaces.SECURITY_GROUPS),
+ URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"))
+ .put(URI.create(ExtensionNamespaces.LBAAS),
+ URI.create("http://docs.openstack.org/networking/ext/lbaas/api/v1.0"))
+ .build();
+ }
+
+ @Provides
+ @Singleton
+ public LoadingCache<String, Set<? extends Extension>> provideExtensionsByRegion(final Provider<NeutronApi> neutronApi) {
+ return CacheBuilder.newBuilder().expireAfterWrite(23, TimeUnit.HOURS)
+ .build(new CacheLoader<String, Set<? extends Extension>>() {
+ @Override
+ public Set<? extends Extension> load(String key) throws Exception {
+ return neutronApi.get().getExtensionApi(key).list();
+ }
+ });
+ }
+
+ @Override
+ protected void bindErrorHandlers() {
+ bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(NeutronErrorHandler.class);
+ bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(NeutronErrorHandler.class);
+ bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(NeutronErrorHandler.class);
+ }
+}
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/AddressPair.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
new file mode 100644
index 0000000..e2d888c
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
@@ -0,0 +1,176 @@
+/*
+ * 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;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * Contains a mapping between a MAC address and an IP address.
+ */
+public class AddressPair {
+
+ @Named("mac_address")
+ private String macAddress;
+ @Named("ip_address")
+ private String ipAddress;
+
+ @ConstructorProperties({"mac_address", "ip_address"})
+ protected AddressPair(String macAddress, String ipAddress) {
+ checkNotNull(macAddress, "mac address should not be null");
+ checkNotNull(ipAddress, "ip should not be null");
+ this.macAddress = macAddress;
+ this.ipAddress = ipAddress;
+ }
+
+ /**
+ * Copy constructor
+ * @param addressPair
+ */
+ private AddressPair(AddressPair addressPair) {
+ this(addressPair.getMacAddress(), addressPair.getIpAddress());
+ }
+
+ /**
+ * Default constructor
+ */
+ private AddressPair() {}
+
+ /**
+ * @return the macAddress of the AddressPair
+ */
+ @Nullable
+ public String getMacAddress() {
+ return macAddress;
+ }
+
+ /**
+ * @return the ipAddress of the AddressPair
+ */
+ @Nullable
+ public String getIpAddress() {
+ return ipAddress;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(macAddress, ipAddress);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ AddressPair that = AddressPair.class.cast(obj);
+ return Objects.equal(this.macAddress, that.macAddress) && Objects.equal(this.ipAddress, that.ipAddress);
+ }
+
+ protected Objects.ToStringHelper string() {
+ return Objects.toStringHelper(this).add("macAddress", macAddress).add("ipAddress", ipAddress);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ /**
+ * Returns a builder, but requires the user to specify any parameters required when creating a resource.
+ * In this case, both parameters are required.
+ * @return the Builder for AddressPair
+ */
+ public static Builder builder(String macAddress, String ipAddress) {
+ return new Builder(macAddress, ipAddress);
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromAddressPair(this);
+ }
+
+ public static class Builder {
+ // Keep track of the builder's state.
+ private AddressPair addressPair;
+
+ /**
+ * No-parameters constructor used when updating.
+ * */
+ private Builder() {
+ addressPair = new AddressPair();
+ }
+
+ /**
+ * Required parameters constructor used when creating.
+ * @param macAddress
+ * @param ipAddress
+ */
+ private Builder(String macAddress, String ipAddress) {
+ addressPair = new AddressPair();
+ addressPair.macAddress = macAddress;
+ addressPair.ipAddress = ipAddress;
+ }
+
+ /**
+ * Provide the macAddress to the AddressPair's Builder.
+ *
+ * @return the Builder.
+ * @see AddressPair#getMacAddress()
+ */
+ public Builder macAddress(String macAddress) {
+ addressPair.macAddress = macAddress;
+ return this;
+ }
+
+ /**
+ * Provide the ipAddress to the AddressPair's Builder.
+ *
+ * @return the Builder.
+ * @see AddressPair#getIpAddress()
+ */
+ public Builder ipAddress(String ipAddress) {
+ addressPair.ipAddress = ipAddress;
+ return this;
+ }
+
+ /**
+ * @return a AddressPair constructed with this Builder.
+ */
+ public AddressPair build() {
+ // Use the copy constructor to copy the builder's state (config) object and pass back to the user.
+ // Immutability is preserved, and fields are defined only once.
+ return new AddressPair(addressPair);
+ }
+
+ /**
+ * @return a Builder from another AddressPair.
+ */
+ public Builder fromAddressPair(AddressPair in) {
+ return this.macAddress(in.getMacAddress()).ipAddress(in.getIpAddress());
+ }
+ }
+}
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/AllocationPool.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
new file mode 100644
index 0000000..6d20999
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.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.domain;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron Subnet Allocation Pool
+ * Contains a start and an end IP address describing the pool.
+ *
+ * @see <a
+ * href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api
+ * doc</a>
+ */
+public class AllocationPool {
+
+ protected final String start;
+ protected final String end;
+
+ @ConstructorProperties({"start", "end"})
+ protected AllocationPool(String start, String end) {
+ this.start = start;
+ this.end = end;
+ }
+
+ /**
+ * @return the start of the AllocationPool
+ */
+ @Nullable
+ public String getStart() {
+ return start;
+ }
+
+ /**
+ * @return the end of the AllocationPool
+ */
+ @Nullable
+ public String getEnd() {
+ return end;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(start, end);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ AllocationPool that = AllocationPool.class.cast(obj);
+ return Objects.equal(this.start, that.start) && Objects.equal(this.end, that.end);
+ }
+
+ protected Objects.ToStringHelper string() {
+ return Objects.toStringHelper(this).add("start", start).add("end", end);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ /**
+ * @return the Builder for AllocationPool
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromAllocationPool(this);
+ }
+
+ public static class Builder {
+ protected String start;
+ protected String end;
+
+ /**
+ * Provide the start to the AllocationPool's Builder.
+ *
+ * @return the Builder.
+ * @see AllocationPool#getStart()
+ */
+ public Builder start(String start) {
+ this.start = start;
+ return this;
+ }
+
+ /**
+ * Provide the end to the AllocationPool's Builder.
+ *
+ * @return the Builder.
+ * @see AllocationPool#getEnd()
+ */
+ public Builder end(String end) {
+ this.end = end;
+ return this;
+ }
+
+ /**
+ * @return a AllocationPool constructed with this Builder.
+ */
+ public AllocationPool build() {
+ return new AllocationPool(start, end);
+ }
+
+ /**
+ * @return a Builder from another AllocationPool.
+ */
+ public Builder fromAllocationPool(AllocationPool in) {
+ return this.start(in.getStart()).end(in.getEnd());
+ }
+ }
+}
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/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
new file mode 100644
index 0000000..4dd6505
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
@@ -0,0 +1,137 @@
+/*
+ * 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;
+
+import com.google.common.base.Objects;
+import org.jclouds.javax.annotation.Nullable;
+
+import javax.inject.Named;
+import java.beans.ConstructorProperties;
+
+/**
+ * Information on the external gateway for the router
+ */
+public class ExternalGatewayInfo {
+
+ @Named("network_id")
+ protected final String networkId;
+ @Named("enable_snat")
+ protected final Boolean enableSnat;
+
+ @ConstructorProperties({"network_id", "enable_snat"})
+ protected ExternalGatewayInfo(String networkId, Boolean enableSnat) {
+ this.networkId = networkId;
+ this.enableSnat = enableSnat;
+ }
+
+ /**
+ * @return the networkId of the ExternalGatewayInfo
+ */
+ @Nullable
+ public String getNetworkId() {
+ return networkId;
+ }
+
+ /**
+ * @return the enableSnat status of the ExternalGatewayInfo
+ */
+ @Nullable
+ public Boolean getEnableSnat() {
+ return enableSnat;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(networkId, enableSnat);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ ExternalGatewayInfo that = (ExternalGatewayInfo) o;
+
+ return Objects.equal(this.networkId, that.networkId) &&
+ Objects.equal(this.enableSnat, that.enableSnat);
+ }
+
+ /**
+ * @return the Builder for ExternalGatewayInfo
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromExternalGatewayInfo(this);
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(this)
+ .add("networkId", networkId)
+ .add("enableSnat", enableSnat)
+ .toString();
+ }
+
+ public static class Builder {
+ protected String networkId;
+ protected Boolean enableSnat;
+
+ /**
+ * Provide the networkId to the ExternalGatewayInfo's Builder.
+ *
+ * @return the Builder.
+ * @see ExternalGatewayInfo#getNetworkId()
+ */
+ public Builder networkId(String networkId) {
+ this.networkId = networkId;
+ return this;
+ }
+
+ /**
+ * Provide the enableSnat status to the ExternalGatewayInfo's Builder.
+ *
+ * @return the Builder.
+ * @see ExternalGatewayInfo#getEnableSnat()
+ */
+ public Builder enableSnat(Boolean enableSnat) {
+ this.enableSnat = enableSnat;
+ return this;
+ }
+
+ /**
+ * @return a ExternalGatewayInfo constructed with this Builder.
+ */
+ public ExternalGatewayInfo build() {
+ return new ExternalGatewayInfo(networkId, enableSnat);
+ }
+
+ /**
+ * @return a Builder from another ExternalGatewayInfo.
+ */
+ public Builder fromExternalGatewayInfo(ExternalGatewayInfo in) {
+ return this.networkId(in.getNetworkId()).enableSnat(in.getEnableSnat());
+ }
+ }
+}
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/ExtraDhcpOption.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
new file mode 100644
index 0000000..89060f7
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
@@ -0,0 +1,165 @@
+/*
+ * 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;
+
+import com.google.common.base.Objects;
+import org.jclouds.javax.annotation.Nullable;
+
+import javax.inject.Named;
+import java.beans.ConstructorProperties;
+
+/**
+ * This is used to provide additional DHCP-related options to Subnet. This is
+ * based on a neutron extension.
+ * For example PXE boot options to DHCP clients can be specified (e.g. tftp-server,
+ * server-ip-address, bootfile-name)
+ *
+ * @see <a
+ * href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api
+ * doc</a>
+ */
+public class ExtraDhcpOption {
+
+ protected final String id;
+ @Named("opt_name")
+ protected final String optionName;
+ @Named("opt_value")
+ protected final String optionValue;
+
+ @ConstructorProperties({"id", "opt_name", "opt_value"})
+ protected ExtraDhcpOption(String id, String optionName, String optionValue) {
+ this.id = id;
+ this.optionName = optionName;
+ this.optionValue = optionValue;
+ }
+
+ /**
+ * @return the id of the ExtraDhcpOption
+ */
+ @Nullable
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return the optionName of the ExtraDhcpOption
+ */
+ @Nullable
+ public String getOptionName() {
+ return optionName;
+ }
+
+ /**
+ * @return the optionValue of the ExtraDhcpOption
+ */
+ @Nullable
+ public String getOptionValue() {
+ return optionValue;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id, optionName, optionValue);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ ExtraDhcpOption that = ExtraDhcpOption.class.cast(obj);
+ return Objects.equal(this.id, that.id) && Objects.equal(this.optionName, that.optionName)
+ && Objects.equal(this.optionValue, that.optionValue);
+ }
+
+ protected Objects.ToStringHelper string() {
+ return Objects.toStringHelper(this).add("id", id).add("optionName", optionName).add("optionValue", optionValue);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ /**
+ * @return the Builder for ExtraDhcpOption
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromExtraDhcpOption(this);
+ }
+
+ public static class Builder {
+ protected String id;
+ protected String optionName;
+ protected String optionValue;
+
+ /**
+ * Provide the id to the ExtraDhcpOption's Builder.
+ *
+ * @return the Builder.
+ * @see ExtraDhcpOption#getId()
+ */
+ public Builder id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Provide the optionName to the ExtraDhcpOption's Builder.
+ *
+ * @return the Builder.
+ * @see ExtraDhcpOption#getOptionName()
+ */
+ public Builder optionName(String optionName) {
+ this.optionName = optionName;
+ return this;
+ }
+
+ /**
+ * Provide the optionValue to the ExtraDhcpOption's Builder.
+ *
+ * @return the Builder.
+ * @see ExtraDhcpOption#getOptionValue()
+ */
+ public Builder optionValue(String optionValue) {
+ this.optionValue = optionValue;
+ return this;
+ }
+
+ /**
+ * @return a ExtraDhcpOption constructed with this Builder.
+ */
+ public ExtraDhcpOption build() {
+ return new ExtraDhcpOption(id, optionName, optionValue);
+ }
+
+ /**
+ * @return a Builder from another ExtraDhcpOption.
+ */
+ public Builder fromExtraDhcpOption(ExtraDhcpOption in) {
+ return this.id(in.getId()).optionName(in.getOptionName()).optionValue(in.getOptionValue());
+ }
+ }
+}
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/FloatingIP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
new file mode 100644
index 0000000..fa5a8b5
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
@@ -0,0 +1,315 @@
+/*
+ * 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;
+
+import java.beans.ConstructorProperties;
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron Floating IP
+ *
+ */
+public class FloatingIP {
+
+ private String id;
+ @Named("router_id")
+ private String routerId;
+ @Named("tenant_id")
+ private String tenantId;
+ // Only mandatory attribute when creating
+ @Named("floating_network_id")
+ private String floatingNetworkId;
+ @Named("fixed_ip_address")
+ private String fixedIpAddress;
+ @Named("floating_ip_address")
+ private String floatingIpAddress;
+ @Named("port_id")
+ private String portId;
+
+ /**
+ * Deserialization constructor
+ */
+ @ConstructorProperties({"id", "router_id", "tenant_id", "floating_network_id", "fixed_ip_address",
+ "floating_ip_address", "port_id"})
+ private FloatingIP(String id, String routerId, String tenantId, String floatingNetworkId, String fixedIpAddress,
+ String floatingIpAddress, String portId) {
+ this.id = id;
+ this.routerId = routerId;
+ this.tenantId = tenantId;
+ this.floatingNetworkId = floatingNetworkId;
+ this.fixedIpAddress = fixedIpAddress;
+ this.floatingIpAddress = floatingIpAddress;
+ this.portId = portId;
+ }
+
+ private FloatingIP() {}
+
+ /**
+ * @param floatingIP The floating IP to copy from
+ */
+ private FloatingIP(FloatingIP floatingIP) {
+ this(floatingIP.id, floatingIP.routerId, floatingIP.tenantId, floatingIP.floatingNetworkId,
+ floatingIP.fixedIpAddress, floatingIP.floatingIpAddress, floatingIP.portId);
+ }
+
+ /**
+ * @return the id of the floating IP
+ */
+ @Nullable
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return the router id of this floating IP
+ */
+ @Nullable
+ public String getRouterId() {
+ return routerId;
+ }
+
+ /**
+ * @return the tenant id of the Floating IP
+ */
+ @Nullable
+ public String getTenantId() {
+ return tenantId;
+ }
+
+ /**
+ * @return the floating network id for this floating IP
+ */
+ @Nullable
+ public String getFloatingNetworkId() {
+ return floatingNetworkId;
+ }
+
+ /**
+ * @return the fixed IP address for this floating IP
+ */
+ @Nullable
+ public String getFixedIpAddress() {
+ return fixedIpAddress;
+ }
+
+ /**
+ * @return the floating IP address for this floating IP
+ */
+ @Nullable
+ public String getFloatingIpAddress() {
+ return floatingIpAddress;
+ }
+
+ /**
+ * @return the port id for this floating IP
+ */
+ @Nullable
+ public String getPortId() {
+ return portId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ FloatingIP that = (FloatingIP) o;
+
+ return Objects.equal(this.id, that.id) &&
+ Objects.equal(this.routerId, that.routerId) &&
+ Objects.equal(this.tenantId, that.tenantId) &&
+ Objects.equal(this.floatingNetworkId, that.floatingNetworkId) &&
+ Objects.equal(this.fixedIpAddress, that.fixedIpAddress) &&
+ Objects.equal(this.floatingIpAddress, that.floatingIpAddress) &&
+ Objects.equal(this.portId, that.portId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id, routerId, tenantId, floatingNetworkId, fixedIpAddress, floatingIpAddress,
+ portId);
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(this)
+ .add("id", id)
+ .add("routerId", routerId)
+ .add("tenantId", tenantId)
+ .add("floatingNetworkId", floatingNetworkId)
+ .add("fixedIpAddress", fixedIpAddress)
+ .add("floatingIpAddress", floatingIpAddress)
+ .add("portId", portId)
+ .toString();
+ }
+
+ /**
+ * @return the Builder for creating a new floating IP
+ */
+ public static CreateBuilder createBuilder(String floatingNetworkId) {
+ return new CreateBuilder(floatingNetworkId);
+ }
+
+ /**
+ * @return the Builder for updating a floating IP
+ */
+ public static UpdateBuilder updateBuilder() {
+ return new UpdateBuilder();
+ }
+
+ private abstract static class Builder<ParameterizedBuilderType> {
+ protected FloatingIP floatingIP;
+
+ /**
+ * No-parameters constructor.
+ * */
+ private Builder() {
+ floatingIP = new FloatingIP();
+ }
+
+ protected abstract ParameterizedBuilderType self();
+
+ /**
+ * Provide the tenantId for this Floating IP. 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 FloatingIP#getTenantId()
+ */
+ public ParameterizedBuilderType tenantId(String tenantId) {
+ floatingIP.tenantId = tenantId;
+ return self();
+ }
+
+ /**
+ * Provides the floating network id for this Floating IP.
+ * Mandatory when creating a floating IP.
+ * Floating IPs can only be created on external networks. If the network specified by floating_network_id is not
+ * external (for example, router:external=false), a 400 error is returned.
+ *
+ * @return the Builder.
+ * @see FloatingIP#getFloatingNetworkId() ()
+ */
+ public ParameterizedBuilderType floatingNetworkId(String floatingNetworkId) {
+ floatingIP.floatingNetworkId = floatingNetworkId;
+ return self();
+ }
+
+ /**
+ * Provides the fixed ip address for this Floating IP.
+ * As an OpenStack Networking port might be associated with multiple IP addresses, the particular IP address to
+ * associate with the floating IP can be specified using the fixed_ip_address request body parameter. The default
+ * logic of this operation is to associate the floating IP with a single IP address configured on a port; hence,
+ * if a port has multiple IP addresses, it is mandatory to specify the fixed_ip_address attribute. If an invalid
+ * IP address is specified in fixed_ip_address a 400 error will be returned.
+ *
+ * @return the Builder.
+ * @see FloatingIP#getFixedIpAddress()
+ */
+ public ParameterizedBuilderType fixedIpAddress(String fixedIpAddress) {
+ floatingIP.fixedIpAddress = fixedIpAddress;
+ return self();
+ }
+
+ /**
+ * Provides the port id for this Floating IP.
+ * Users can associate the floating IP with an internal port using the port_id attribute in the request body.
+ * If an invalid port identifier is specified, a 404 error will be returned. The internal OpenStack Networking
+ * port associated with the Floating IP must have at least an IP address configured, otherwise a 400 error will
+ * be returned.
+ *
+ * @return the Builder.
+ * @see FloatingIP#getPortId()
+ */
+ public ParameterizedBuilderType portId(String portId) {
+ floatingIP.portId = portId;
+ return self();
+ }
+ }
+
+ public static class CreateBuilder extends Builder<CreateBuilder> {
+ /**
+ * Supply required properties for creating a Builder
+ */
+ private CreateBuilder(String floatingNetworkId) {
+ floatingIP.floatingNetworkId = floatingNetworkId;
+ }
+
+ /**
+ * @return a CreateFloatingIP constructed with this Builder.
+ */
+ public CreateFloatingIP build() {
+ return new CreateFloatingIP(floatingIP);
+ }
+
+ protected CreateBuilder self() {
+ return this;
+ }
+ }
+
+ public static class UpdateBuilder extends Builder<UpdateBuilder> {
+ /**
+ * Supply required properties for updating a Builder
+ */
+ private UpdateBuilder() {
+ }
+
+ /**
+ * Provide the floating ip address for this Floating IP.
+ * An address for the floating ip will be automatically allocated, unless the floating_ip_address attribute is
+ * specified in the request body. If the requested floating IP address does not fall in the external network's
+ * subnet range, a 400 error will be returned. If the requested floating IP address is already in use, a 409
+ * error code will be returned.
+ *
+ * @return the Builder.
+ * @see FloatingIP#getFloatingIpAddress()
+ */
+ public UpdateBuilder floatingIpAddress(String floatingIpAddress) {
+ floatingIP.floatingIpAddress = floatingIpAddress;
+ return this;
+ }
+
+ /**
+ * @return a UpdateFloatingIP constructed with this Builder.
+ */
+ public UpdateFloatingIP build() {
+ return new UpdateFloatingIP(floatingIP);
+ }
+
+ protected UpdateBuilder self() {
+ return this;
+ }
+ }
+
+ public static class CreateFloatingIP extends FloatingIP {
+ private CreateFloatingIP(FloatingIP floatingIP) {
+ super(floatingIP);
+ }
+ }
+ public static class UpdateFloatingIP extends FloatingIP {
+ private UpdateFloatingIP(FloatingIP floatingIP) {
+ super(floatingIP);
+ }
+ }
+}
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/FloatingIPs.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIPs.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIPs.java
new file mode 100644
index 0000000..8befa3e
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIPs.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;
+
+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 Floating IPs
+ */
+public class FloatingIPs extends PaginatedCollection<FloatingIP> {
+ public static final FloatingIPs EMPTY = new FloatingIPs(ImmutableSet.<FloatingIP> of(), ImmutableSet.<Link> of());
+
+ @ConstructorProperties({"floatingips", "floatingips_links"})
+ protected FloatingIPs(Iterable<FloatingIP> floatingIPs, Iterable<Link> floatingIPsLinks) {
+ super(floatingIPs, floatingIPsLinks);
+ }
+}
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/HostRoute.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
new file mode 100644
index 0000000..6ff0ddc
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
@@ -0,0 +1,123 @@
+/*
+ * 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;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+
+/**
+ * A Neutron Subnet Host Route
+ *
+ * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
+ */
+public class HostRoute {
+
+ @Named("destination")
+ private final String destinationCidr;
+ @Named("nexthop")
+ private final String nextHop;
+
+ @ConstructorProperties({"destination", "nexthop"})
+ protected HostRoute(String destinationCidr, String nextHop) {
+ this.destinationCidr = destinationCidr;
+ this.nextHop = nextHop;
+ }
+
+ /**
+ * @return the destination CIDR for this route.
+ */
+ @Nullable
+ public String getDestinationCidr() {
+ return destinationCidr;
+ }
+
+ /**
+ * @return the IP of the next hop to forward traffic to.
+ */
+ @Nullable
+ public String getNextHop() {
+ return nextHop;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(destinationCidr, nextHop);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ HostRoute that = HostRoute.class.cast(obj);
+ return Objects.equal(this.destinationCidr, that.destinationCidr) && Objects.equal(this.nextHop, that.nextHop);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper(this)
+ .add("destinationCidr", destinationCidr).add("nextHop", nextHop);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().fromHostRoute(this);
+ }
+
+ public static class Builder {
+ protected String destinationCidr;
+ protected String nextHop;
+
+ /**
+ * This should be a valid CIDR.
+ * @see HostRoute#getDestinationCidr()
+ */
+ public Builder destinationCidr(String destinationCidr) {
+ this.destinationCidr = destinationCidr;
+ return this;
+ }
+
+ /**
+ * This should be a valid IP address.
+ * @see HostRoute#getNextHop()
+ */
+ public Builder nextHop(String nextHop) {
+ this.nextHop = nextHop;
+ return this;
+ }
+
+ public HostRoute build() {
+ return new HostRoute(destinationCidr, nextHop);
+ }
+
+ public Builder fromHostRoute(HostRoute in) {
+ return this.destinationCidr(in.getDestinationCidr()).nextHop(in.getNextHop());
+ }
+ }
+}
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/IP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
new file mode 100644
index 0000000..9c64604
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
@@ -0,0 +1,135 @@
+/*
+ * 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;
+
+import com.google.common.base.Objects;
+import org.jclouds.javax.annotation.Nullable;
+
+import javax.inject.Named;
+import java.beans.ConstructorProperties;
+
+/**
+ * Describes an IP address
+ */
+public class IP {
+
+ @Named("ip_address")
+ protected final String ipAddress;
+ @Named("subnet_id")
+ protected final String subnetId;
+
+ @ConstructorProperties({"ip_address", "subnet_id"})
+ protected IP(String ipAddress, String subnetId) {
+ this.ipAddress = ipAddress;
+ this.subnetId = subnetId;
+ }
+
+ /**
+ * @return the ipAddress of the IP
+ */
+ @Nullable
+ public String getIpAddress() {
+ return ipAddress;
+ }
+
+ /**
+ * @return the subnetId of the IP
+ */
+ @Nullable
+ public String getSubnetId() {
+ return subnetId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(ipAddress, subnetId);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ IP that = IP.class.cast(obj);
+ return Objects.equal(this.ipAddress, that.ipAddress) && Objects.equal(this.subnetId, that.subnetId);
+ }
+
+ protected Objects.ToStringHelper string() {
+ return Objects.toStringHelper(this).add("ipAddress", ipAddress).add("subnetId", subnetId);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ /**
+ * @return the Builder for IP
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromIP(this);
+ }
+
+ public static class Builder {
+ protected String ipAddress;
+ protected String subnetId;
+
+ /**
+ * Provide the ipAddress to the IP's Builder.
+ *
+ * @return the Builder.
+ * @see IP#getIpAddress()
+ */
+ public Builder ipAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ return this;
+ }
+
+ /**
+ * Provide the subnetId to the IP's Builder.
+ *
+ * @return the Builder.
+ * @see IP#getSubnetId()
+ */
+ public Builder subnetId(String subnetId) {
+ this.subnetId = subnetId;
+ return this;
+ }
+
+ /**
+ * @return a IP constructed with this Builder.
+ */
+ public IP build() {
+ return new IP(ipAddress, subnetId);
+ }
+
+ /**
+ * @return a Builder from another IP.
+ */
+ public Builder fromIP(IP in) {
+ return this.ipAddress(in.getIpAddress()).subnetId(in.getSubnetId());
+ }
+ }
+}
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/IPv6DHCPMode.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
new file mode 100644
index 0000000..654e053
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
@@ -0,0 +1,57 @@
+/*
+ * 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;
+
+/**
+ * Enumerates DHCP modes for UPv6
+ */
+public enum IPv6DHCPMode {
+ OFF("off"),
+ SLAAC("slaac"),
+ DHCPV6_STATEFUL("dhcpv6-stateful"),
+ DHCPV6_STATELESS("dhcpv6-stateless"),
+ /**
+ * Used by jclouds when the service returns an unknown value other than null.
+ */
+ UNRECOGNIZED("unrecognized");
+
+ private String name;
+
+ private IPv6DHCPMode(String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return name;
+ }
+
+ /*
+ * This provides GSON enum support in jclouds.
+ * */
+ public static IPv6DHCPMode fromValue(String name){
+ if (name != null) {
+ for (IPv6DHCPMode value : IPv6DHCPMode.values()) {
+ if (name.equalsIgnoreCase(value.name)) {
+ return value;
+ }
+ }
+ return UNRECOGNIZED;
+ }
+ return null;
+ }
+}
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/Network.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
new file mode 100644
index 0000000..ac40019
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -0,0 +1,646 @@
+/*
+ * 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;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A Neutron network
+ *
+ * @see <a
+ * href="http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api
+ * doc</a>
+ */
+public class Network {
+
+ private String id;
+ private NetworkStatus status;
+ private ImmutableSet<String> subnets;
+
+ private String name;
+ @Named("admin_state_up")
+ private Boolean adminStateUp;
+ private Boolean shared;
+ @Named("tenant_id")
+ private String tenantId;
+
+ // providernet.py: Provider Networks Extension
+ @Named("provider:network_type")
+ private NetworkType networkType;
+ @Named("provider:physical_network")
+ private String physicalNetworkName;
+ @Named("provider:segmentation_id")
+ private Integer segmentationId;
+
+ // external_net.py: Configurable external gateway modes extension
+ @Named("router:external")
+ private Boolean external;
+
+ // portsecurity.py: VMWare port security
+ @Named("port_security_enabled")
+ private Boolean portSecurity;
+
+ // n1kv.py: Cisco plugin extension; admin rights might be needed
+ @Named("n1kv:profile_id")
+ // UUID
+ private String profileId;
+ @Named("n1kv:multicast_ip")
+ private String multicastIp;
+ @Named("n1kv:segment_add")
+ private String segmentAdd;
+ @Named("n1kv:segment_del")
+ private String segmentDel;
+ @Named("n1kv:member_segments")
+ private String memberSegments;
+
+ // multiprovidernet.py: Multiprovider net extension; Segments and provider
+ // values cannot both be set.
+ private ImmutableSet<NetworkSegment> segments;
+
+ // flavor.py: Flavor support for network and router
+ @Named("flavor:network")
+ private String networkFlavor;
+
+ @ConstructorProperties({"id", "status", "subnets", "name", "admin_state_up", "shared", "tenant_id",
+ "provider:network_type", "provider:physical_network", "provider:segmentation_id", "router:external",
+ "port_security_enabled", "n1kv:profile_id", "n1kv:multicast_ip", "n1kv:segment_add", "n1kv:segment_del",
+ "n1kv:member_segments", "segments", "flavor:network"})
+ private Network(String id, NetworkStatus status, ImmutableSet<String> subnets, String name, Boolean adminStateUp,
+ Boolean shared, String tenantId, NetworkType networkType, String physicalNetworkName, Integer segmentationId,
+ Boolean external, Boolean portSecurity, String profileId, String multicastIp, String segmentAdd,
+ String segmentDel, String memberSegments, ImmutableSet<NetworkSegment> segments, String networkFlavor) {
+ // No checkNotNulls. With Neutron, any of these properties can be left null when used in an update.
+ this.id = id;
+ this.status = status;
+ this.subnets = subnets;
+ this.name = name;
+ this.adminStateUp = adminStateUp;
+ this.shared = shared;
+ this.tenantId = tenantId;
+ this.networkType = networkType;
+ this.physicalNetworkName = physicalNetworkName;
+ this.segmentationId = segmentationId;
+ this.external = external;
+ this.portSecurity = portSecurity;
+ this.profileId = profileId;
+ this.multicastIp = multicastIp;
+ this.segmentAdd = segmentAdd;
+ this.segmentDel = segmentDel;
+ this.memberSegments = memberSegments;
+ this.segments = segments;
+ this.networkFlavor = networkFlavor;
+ }
+
+ /**
+ * Default constructor.
+ */
+ private Network() {}
+
+ /**
+ * Copy constructor
+ * @param network
+ */
+ private Network(Network network) {
+ this(network.id,
+ network.status,
+ network.subnets,
+ network.name,
+ network.adminStateUp,
+ network.shared,
+ network.tenantId,
+ network.networkType,
+ network.physicalNetworkName,
+ network.segmentationId,
+ network.external,
+ network.portSecurity,
+ network.profileId,
+ network.multicastIp,
+ network.segmentAdd,
+ network.segmentDel,
+ network.memberSegments,
+ network.segments,
+ network.networkFlavor);
+ }
+
+ /**
+ * @return the id of the Network
+ */
+ @Nullable
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return the status of the Network
+ */
+ @Nullable
+ public NetworkStatus getStatus() {
+ return status;
+ }
+
+ /**
+ * @return the subnets of the Network
+ */
+ @Nullable
+ public ImmutableSet<String> getSubnets() {
+ return subnets;
+ }
+
+ /**
+ * @return the name of the Network
+ */
+ @Nullable
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return the adminStateUp of the Network
+ */
+ @Nullable
+ public Boolean getAdminStateUp() {
+ return adminStateUp;
+ }
+
+ /**
+ * The shared attribute can be used to create a public network, i.e.: a network which is shared with all other tenants.
+ * Control of the shared attribute could be reserved to particular users only, such as administrators.
+ * In this case, regular users trying to create a shared network will receive a 403 - Forbidden error.
+ * @return true if the network resource can be accessed by any tenant or not, false if not
+ */
+ @Nullable
+ public Boolean getShared() {
+ return shared;
+ }
+
+ /**
+ * @return the tenantId of the Network
+ */
+ @Nullable
+ public String getTenantId() {
+ return tenantId;
+ }
+
+ /**
+ * @return the networkType of the Network
+ */
+ @Nullable
+ public NetworkType getNetworkType() {
+ return networkType;
+ }
+
+ /**
+ * @return the physicalNetworkName of the Network
+ */
+ @Nullable
+ public String getPhysicalNetworkName() {
+ return physicalNetworkName;
+ }
+
+ /**
+ * @return the segmentationId of the Network
+ */
+ @Nullable
+ public Integer getSegmentationId() {
+ return segmentationId;
+ }
+
+ /**
+ * Adds external network attribute to network resource.
+ * @return the external of the Network
+ */
+ @Nullable
+ public Boolean getExternal() {
+ return external;
+ }
+
+ /**
+ * @return the portSecurity of the Network
+ */
+ @Nullable
+ public Boolean getPortSecurity() {
+ return portSecurity;
+ }
+
+ /**
+ * @return the profileId of the Network
+ */
+ @Nullable
+ public String getProfileId() {
+ return profileId;
+ }
+
+ /**
+ * @return the multicastIp of the Network
+ */
+ @Nullable
+ public String getMulticastIp() {
+ return multicastIp;
+ }
+
+ /**
+ * @return the segmentAdd of the Network
+ */
+ @Nullable
+ public String getSegmentAdd() {
+ return segmentAdd;
+ }
+
+ /**
+ * @return the segmentDel of the Network
+ */
+ @Nullable
+ public String getSegmentDel() {
+ return segmentDel;
+ }
+
+ /**
+ * @return the memberSegments of the Network
+ */
+ @Nullable
+ public String getMemberSegments() {
+ return memberSegments;
+ }
+
+ /**
+ * @return the segments of the Network
+ */
+ @Nullable
+ public ImmutableSet<NetworkSegment> getSegments() {
+ return segments;
+ }
+
+ /**
+ * @return the networkFlavor of the Network
+ */
+ @Nullable
+ public String getNetworkFlavor() {
+ return networkFlavor;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id, status, subnets, name, adminStateUp, shared, tenantId, networkType,
+ physicalNetworkName, segmentationId, external, portSecurity, profileId, multicastIp, segmentAdd, segmentDel,
+ memberSegments, segments, networkFlavor);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ Network that = Network.class.cast(obj);
+ return Objects.equal(this.id, that.id)
+ && Objects.equal(this.status, that.status)
+ && Objects.equal(this.subnets, that.subnets)
+ && Objects.equal(this.name, that.name)
+ && Objects.equal(this.adminStateUp, that.adminStateUp)
+ && Objects.equal(this.shared, that.shared)
+ && Objects.equal(this.tenantId, that.tenantId)
+ && Objects.equal(this.networkType, that.networkType)
+ && Objects.equal(this.physicalNetworkName, that.physicalNetworkName)
+ && Objects.equal(this.segmentationId, that.segmentationId)
+ && Objects.equal(this.external, that.external)
+ && Objects.equal(this.portSecurity, that.portSecurity)
+ && Objects.equal(this.profileId, that.profileId)
+ && Objects.equal(this.multicastIp, that.multicastIp)
+ && Objects.equal(this.segmentAdd, that.segmentAdd)
+ && Objects.equal(this.segmentDel, that.segmentDel)
+ && Objects.equal(this.memberSegments, that.memberSegments)
+ && Objects.equal(this.segments, that.segments)
+ && Objects.equal(this.networkFlavor, that.networkFlavor);
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(this)
+ .add("id", id)
+ .add("status", status)
+ .add("subnets", subnets)
+ .add("name", name)
+ .add("adminStateUp", adminStateUp)
+ .add("shared", shared)
+ .add("tenantId", tenantId)
+ .add("networkType", networkType)
+ .add("physicalNetworkName", physicalNetworkName)
+ .add("segmentationId", segmentationId)
+ .add("external", external)
+ .add("portSecurity", portSecurity)
+ .add("profileId", profileId)
+ .add("multicastIp", multicastIp)
+ .add("segmentAdd", segmentAdd)
+ .add("segmentDel", segmentDel)
+ .add("memberSegments", memberSegments)
+ .add("segments", segments)
+ .add("networkFlavor", networkFlavor)
+ .toString();
+ }
+
+ /*
+ * Methods to get the Create and Update builders follow
+ */
+
+ /**
+ * @return the Builder for creating a new Router
+ */
+ public static CreateBuilder createBuilder(String name) {
+ return new CreateBuilder(name);
+ }
+
+ /**
+ * @return the Builder for updating a Router
+ */
+ public static UpdateBuilder updateBuilder() {
+ return new UpdateBuilder();
+ }
+
+ private abstract static class Builder<ParameterizedBuilderType> {
+ protected Network network;
+
+ /**
+ * No-parameters constructor used when updating.
+ * */
+ private Builder() {
+ network = new Network();
+ }
+
+ protected abstract ParameterizedBuilderType self();
+
+ /**
+ * Provide the name to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getName()
+ */
+ public ParameterizedBuilderType name(String name) {
+ network.name = name;
+ return self();
+ }
+
+ /**
+ * Provide the adminStateUp to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#isAdminStateUp()
+ */
+ public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+ network.adminStateUp = adminStateUp;
+ return self();
+ }
+
+ /**
+ * Provide the shared to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#isShared()
+ */
+ public ParameterizedBuilderType shared(Boolean shared) {
+ network.shared = shared;
+ return self();
+ }
+
+ /**
+ * Provide the tenantId to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getTenantId()
+ */
+ public ParameterizedBuilderType tenantId(String tenantId) {
+ network.tenantId = tenantId;
+ return self();
+ }
+
+ /**
+ * Provide the networkType to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getNetworkType()
+ */
+ public ParameterizedBuilderType networkType(NetworkType networkType) {
+ network.networkType = networkType;
+ return self();
+ }
+
+ /**
+ * Provide the physicalNetworkName to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getPhysicalNetworkName()
+ */
+ public ParameterizedBuilderType physicalNetworkName(String physicalNetworkName) {
+ network.physicalNetworkName = physicalNetworkName;
+ return self();
+ }
+
+ /**
+ * Provide the segmentationId to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getSegmentationId()
+ */
+ public ParameterizedBuilderType segmentationId(Integer segmentationId) {
+ network.segmentationId = segmentationId;
+ return self();
+ }
+
+ /**
+ * Adds external network attribute to network resource.
+ *
+ * @return the Builder.
+ * @see Network#isExternal()
+ */
+ public ParameterizedBuilderType external(Boolean external) {
+ network.external = external;
+ return self();
+ }
+
+ /**
+ * Provide the portSecurity to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#isPortSecurity()
+ */
+ public ParameterizedBuilderType portSecurity(Boolean portSecurity) {
+ network.portSecurity = portSecurity;
+ return self();
+ }
+
+ /**
+ * Provide the profileId to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getProfileId()
+ */
+ public ParameterizedBuilderType profileId(String profileId) {
+ network.profileId = profileId;
+ return self();
+ }
+
+ /**
+ * Provide the multicastIp to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getMulticastIp()
+ */
+ public ParameterizedBuilderType multicastIp(String multicastIp) {
+ network.multicastIp = multicastIp;
+ return self();
+ }
+
+ /**
+ * Provide the segmentAdd to the Network's Builder.
+ * Cisco plugin extension; admin right might be needed to use this.
+ *
+ * @return the Builder.
+ * @see Network#getSegmentAdd()
+ */
+ public ParameterizedBuilderType segmentAdd(String segmentAdd) {
+ network.segmentAdd = segmentAdd;
+ return self();
+ }
+
+ /**
+ * Provide the segmentDel to the Network's Builder.
+ * Cisco plugin extension; admin right might be needed to use this.
+ *
+ * @return the Builder.
+ * @see Network#getSegmentDel()
+ */
+ public ParameterizedBuilderType segmentDel(String segmentDel) {
+ network.segmentDel = segmentDel;
+ return self();
+ }
+
+ /**
+ * Provide the memberSegments to the Network's Builder.
+ * Cisco plugin extension; admin right might be needed to use this.
+ *
+ * @return the Builder.
+ * @see Network#getMemberSegments()
+ */
+ public ParameterizedBuilderType memberSegments(String memberSegments) {
+ network.memberSegments = memberSegments;
+ return self();
+ }
+
+ /**
+ * Provide the segments to the Network's Builder.
+ * Multiprovider extension.
+ *
+ * @return the Builder.
+ * @see Network#getSegments()
+ */
+ public ParameterizedBuilderType segments(ImmutableSet<NetworkSegment> segments) {
+ network.segments = segments;
+ return self();
+ }
+
+ /**
+ * Provide the networkFlavor to the Network's Builder.
+ *
+ * @return the Builder.
+ * @see Network#getNetworkFlavor()
+ */
+ public ParameterizedBuilderType networkFlavor(String networkFlavor) {
+ network.networkFlavor = networkFlavor;
+ return self();
+ }
+ }
+
+ /**
+ * Create and Update builders (inheriting from Builder)
+ */
+ public static class CreateBuilder extends Builder<CreateBuilder> {
+ /**
+ * Supply required properties for creating a Builder
+ */
+ private CreateBuilder(String name) {
+ network.name = name;
+ }
+
+ /**
+ * @return a CreateNetwork constructed with this Builder.
+ */
+ public CreateNetwork build() {
+ return new CreateNetwork(network);
+ }
+
+ protected CreateBuilder self() {
+ return this;
+ }
+ }
+
+ /**
+ * Create and Update builders (inheriting from Builder)
+ */
+ public static class UpdateBuilder extends Builder<UpdateBuilder> {
+ /**
+ * Supply required properties for updating a Builder
+ */
+ private UpdateBuilder() {
+ }
+
+ /**
+ * @return a UpdateNetwork constructed with this Builder.
+ */
+ public UpdateNetwork build() {
+ return new UpdateNetwork(network);
+ }
+
+ protected UpdateBuilder self() {
+ return this;
+ }
+ }
+
+ /**
+ * Create and Update options - extend the domain class, passed to API update and create calls.
+ * Essentially the same as the domain class. Ensure validation and safe typing.
+ */
+ public static class CreateNetwork extends Network {
+ /**
+ * Copy constructor
+ */
+ private CreateNetwork(Network network) {
+ super(network);
+ checkNotNull(network.name, "name should not be null");
+ }
+ }
+
+ /**
+ * Create and Update options - extend the domain class, passed to API update and create calls.
+ * Essentially the same as the domain class. Ensure validation and safe typing.
+ */
+ public static class UpdateNetwork extends Network {
+ /**
+ * Copy constructor
+ */
+ private UpdateNetwork(Network network) {
+ super(network);
+ }
+ }
+}
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/NetworkSegment.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
new file mode 100644
index 0000000..aacd5c1
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
@@ -0,0 +1,167 @@
+/*
+ * 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;
+
+import com.google.common.base.Objects;
+import org.jclouds.javax.annotation.Nullable;
+
+import javax.inject.Named;
+import java.beans.ConstructorProperties;
+
+/**
+ * A Neutron Network Segment
+ * Segments and provider values cannot both be set.
+ *
+ * @see <a
+ * href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api
+ * doc</a>
+ */
+public class NetworkSegment {
+
+ @Named("provider:network_type")
+ protected final NetworkType networkType;
+ @Named("provider:physical_network")
+ protected final String physicalNetwork;
+ @Named("provider:segmentation_id")
+ protected final Integer segmentationId;
+
+ @ConstructorProperties({"provider:network_type", "provider:physical_network", "provider:segmentation_id"})
+ protected NetworkSegment(NetworkType networkType, String physicalNetwork, Integer segmentationId) {
+ this.networkType = networkType;
+ this.physicalNetwork = physicalNetwork;
+ this.segmentationId = segmentationId;
+ }
+
+ /**
+ * @return the networkType of the NetworkSegment
+ */
+ @Nullable
+ public NetworkType getNetworkType() {
+ return networkType;
+ }
+
+ /**
+ * @return the physicalNetwork of the NetworkSegment
+ */
+ @Nullable
+ public String getPhysicalNetwork() {
+ return physicalNetwork;
+ }
+
+ /**
+ * @return the segmentationId of the NetworkSegment
+ */
+ @Nullable
+ public Integer getSegmentationId() {
+ return segmentationId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(networkType, physicalNetwork, segmentationId);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null || getClass() != obj.getClass())
+ return false;
+ NetworkSegment that = NetworkSegment.class.cast(obj);
+ return Objects.equal(this.networkType, that.networkType)
+ && Objects.equal(this.physicalNetwork, that.physicalNetwork)
+ && Objects.equal(this.segmentationId, that.segmentationId);
+ }
+
+ protected Objects.ToStringHelper string() {
+ return Objects.toStringHelper(this).add("networkType", networkType).add("physicalNetwork", physicalNetwork)
+ .add("segmentationId", segmentationId);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+ /**
+ * @return the Builder for NetworkSegment
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Gets a Builder configured as this object.
+ */
+ public Builder toBuilder() {
+ return new Builder().fromNetworkSegment(this);
+ }
+
+ public static class Builder {
+ protected NetworkType networkType;
+ protected String physicalNetwork;
+ protected Integer segmentationId;
+
+ /**
+ * Provide the networkType to the NetworkSegment's Builder.
+ *
+ * @return the Builder.
+ * @see NetworkSegment#getNetworkType()
+ */
+ public Builder networkType(NetworkType networkType) {
+ this.networkType = networkType;
+ return this;
+ }
+
+ /**
+ * Provide the physicalNetwork to the NetworkSegment's Builder.
+ *
+ * @return the Builder.
+ * @see NetworkSegment#getPhysicalNetwork()
+ */
+ public Builder physicalNetwork(String physicalNetwork) {
+ this.physicalNetwork = physicalNetwork;
+ return this;
+ }
+
+ /**
+ * Provide the segmentationId to the NetworkSegment's Builder.
+ *
+ * @return the Builder.
+ * @see NetworkSegment#getSegmentationId()
+ */
+ public Builder segmentationId(int segmentationId) {
+ this.segmentationId = segmentationId;
+ return this;
+ }
+
+ /**
+ * @return a NetworkSegment constructed with this Builder.
+ */
+ public NetworkSegment build() {
+ return new NetworkSegment(networkType, physicalNetwork, segmentationId);
+ }
+
+ /**
+ * @return a Builder from another NetworkSegment.
+ */
+ public Builder fromNetworkSegment(NetworkSegment in) {
+ return this.networkType(in.getNetworkType()).physicalNetwork(in.getPhysicalNetwork())
+ .segmentationId(in.getSegmentationId());
+ }
+ }
+}
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/NetworkStatus.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
new file mode 100644
index 0000000..04334d0
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
@@ -0,0 +1,60 @@
+/*
+ * 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;
+
+/**
+ * Enumerates Network Status.
+ */
+public enum NetworkStatus {
+ ACTIVE("active"),
+ DOWN("down"),
+ BUILD("build"),
+ ERROR("error"),
+ /**
+ * Used by jclouds when the service returns an unknown value other than null.
+ */
+ UNRECOGNIZED("unrecognized");
+
+ private final String name;
+
+ private NetworkStatus(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name();
+ }
+
+ /*
+ * This provides GSON enum support in jclouds.
+ * @param name The string representation of this enum value.
+ * @return The corresponding enum value.
+ */
+ public static NetworkStatus fromValue(String name) {
+ if (name != null) {
+ for (NetworkStatus value : NetworkStatus.values()) {
+ if (name.equalsIgnoreCase(value.name)) {
+ return value;
+ }
+ }
+ return UNRECOGNIZED;
+ }
+ return null;
+ }
+}
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/NetworkType.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
new file mode 100644
index 0000000..89c3e9a
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
@@ -0,0 +1,81 @@
+/*
+ * 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;
+
+/**
+ * Enumerates supported Network types.
+ */
+public enum NetworkType {
+ /**
+ * Used to describe a local network.
+ */
+ LOCAL("local"),
+ /**
+ * Used to describe a flat network.
+ */
+ FLAT("flat"),
+ /**
+ * Used to describe a VLAN network. NetworkSegment might have to be set.
+ */
+ VLAN("vlan"),
+ /**
+ * Used to describe a Virtual Extensible LAN (VXLAN) network.
+ * It uses a VLAN-like encapsulation technique to encapsulate MAC-based
+ * OSI layer 2 Ethernet frames within layer 4 UDP packets.
+ */
+ VXLAN("vxlan"),
+ /**
+ * Used to describe a GRE tunnel network. A virtual network realized as
+ * packets encapsulated using Generic Routing Encapsulation. GRE tunnel
+ * packets are routed by the compute node hosts, so GRE tunnels are not
+ * associated by the openvswitch plugin with specific physical networks.
+ */
+ GRE("gre"),
+ /**
+ * Used by jclouds when the service returns an unknown value other than null.
+ */
+ UNRECOGNIZED("unrecognized");
+
+ private String name;
+
+ private NetworkType(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ /*
+ * This provides GSON enum support in jclouds.
+ * @param name The string representation of this enum value.
+ * @return The corresponding enum value.
+ */
+ public static NetworkType fromValue(String name) {
+ if (name != null) {
+ for (NetworkType value : NetworkType.values()) {
+ if (name.equalsIgnoreCase(value.name)) {
+ return value;
+ }
+ }
+ return UNRECOGNIZED;
+ }
+ return null;
+ }
+}
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/Networks.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Networks.java b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Networks.java
new file mode 100644
index 0000000..9b3bf10
--- /dev/null
+++ b/dependencies/jclouds/apis/openstack-neutron/1.8.1-stratos/src/main/java/org/jclouds/openstack/neutron/v2/domain/Networks.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;
+
+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 Networks
+ */
+public class Networks extends PaginatedCollection<Network> {
+ public static final Networks EMPTY = new Networks(ImmutableSet.<Network> of(), ImmutableSet.<Link> of());
+
+ @ConstructorProperties({"networks", "networks_links"})
+ protected Networks(Iterable<Network> networks, Iterable<Link> networksLinks) {
+ super(networks, networksLinks);
+ }
+}