You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/03/18 03:52:10 UTC

[17/20] fixing https://issues.apache.org/jira/browse/STRATOS-520 - adding Openstack-nova module to dependencies

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Flavor.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Flavor.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Flavor.java
new file mode 100644
index 0000000..c353ab0
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Flavor.java
@@ -0,0 +1,211 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.Resource;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.base.Optional;
+
+/**
+ * A flavor is an available hardware configuration for a server. Each flavor has
+ * a unique combination of disk space and memory capacity.
+ * 
+ * @author Jeremy Daggett, Ilja Bobkevic
+ * @see <a href=
+      "http://docs.openstack.org/api/openstack-compute/2/content/List_Flavors-d1e4188.html"
+      />
+*/
+public class Flavor extends Resource {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromFlavor(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> extends Resource.Builder<T>  {
+      protected int ram;
+      protected int disk;
+      protected int vcpus;
+      protected String swap;
+      protected Double rxtxFactor;
+      protected Integer ephemeral;
+   
+      /** 
+       * @see Flavor#getRam()
+       */
+      public T ram(int ram) {
+         this.ram = ram;
+         return self();
+      }
+
+      /** 
+       * @see Flavor#getDisk()
+       */
+      public T disk(int disk) {
+         this.disk = disk;
+         return self();
+      }
+
+      /** 
+       * @see Flavor#getVcpus()
+       */
+      public T vcpus(int vcpus) {
+         this.vcpus = vcpus;
+         return self();
+      }
+
+      /** 
+       * @see Flavor#getSwap()
+       */
+      public T swap(String swap) {
+         this.swap = swap;
+         return self();
+      }
+
+      /** 
+       * @see Flavor#getRxtxFactor()
+       */
+      public T rxtxFactor(Double rxtxFactor) {
+         this.rxtxFactor = rxtxFactor;
+         return self();
+      }
+
+      /** 
+       * @see Flavor#getEphemeral()
+       */
+      public T ephemeral(Integer ephemeral) {
+         this.ephemeral = ephemeral;
+         return self();
+      }
+
+      public Flavor build() {
+         return new Flavor(id, name, links, ram, disk, vcpus, swap, rxtxFactor, ephemeral);
+      }
+      
+      public T fromFlavor(Flavor in) {
+         return super.fromResource(in)
+                  .ram(in.getRam())
+                  .disk(in.getDisk())
+                  .vcpus(in.getVcpus())
+                  .swap(in.getSwap().orNull())
+                  .rxtxFactor(in.getRxtxFactor().orNull())
+                  .ephemeral(in.getEphemeral().orNull());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final int ram;
+   private final int disk;
+   private final int vcpus;
+   private final Optional<String> swap;
+   @Named("rxtx_factor")
+   private final Optional<Double> rxtxFactor;
+   @Named("OS-FLV-EXT-DATA:ephemeral")
+   private final Optional<Integer> ephemeral;
+
+   @ConstructorProperties({
+      "id", "name", "links", "ram", "disk", "vcpus", "swap", "rxtx_factor", "OS-FLV-EXT-DATA:ephemeral"
+   })
+   protected Flavor(String id, String name, java.util.Set<Link> links, int ram, int disk, int vcpus,
+                    @Nullable String swap, @Nullable Double rxtxFactor, @Nullable Integer ephemeral) {
+      super(id, checkNotNull(name, "name"), links);
+      checkArgument(ram > 0, "Value of ram has to greater than 0");
+      checkArgument(vcpus > 0,  "Value of vcpus has to greater than 0");
+      this.ram = ram;
+      this.disk = disk;
+      this.vcpus = vcpus;
+      this.swap = Optional.fromNullable(swap);
+      this.rxtxFactor = Optional.fromNullable(rxtxFactor);
+      this.ephemeral = Optional.fromNullable(ephemeral);
+   }
+   
+   public int getRam() {
+      return this.ram;
+   }
+
+   public int getDisk() {
+      return this.disk;
+   }
+
+   public int getVcpus() {
+      return this.vcpus;
+   }
+
+   public Optional<String> getSwap() {
+      return this.swap;
+   }
+
+   public Optional<Double> getRxtxFactor() {
+      return this.rxtxFactor;
+   }
+
+   /**
+    * Retrieves ephemeral disk space in GB
+    * <p/>
+    * NOTE: This field is only present if the Flavor Extra Data extension is installed (alias "OS-FLV-EXT-DATA").
+    * 
+    * @see org.jclouds.openstack.nova.v2_0.features.ExtensionApi#getExtensionByAlias
+    * @see org.jclouds.openstack.nova.v2_0.extensions.ExtensionNamespaces#FLAVOR_EXTRA_DATA
+    */
+   public Optional<Integer> getEphemeral() {
+      return this.ephemeral;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(ram, disk, vcpus, swap, rxtxFactor, ephemeral);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      Flavor that = Flavor.class.cast(obj);
+      return super.equals(that) && Objects.equal(this.ram, that.ram)
+               && Objects.equal(this.disk, that.disk)
+               && Objects.equal(this.vcpus, that.vcpus)
+               && Objects.equal(this.swap, that.swap)
+               && Objects.equal(this.rxtxFactor, that.rxtxFactor)
+               && Objects.equal(this.ephemeral, that.ephemeral);
+   }
+   
+   protected ToStringHelper string() {
+      return super.string()
+            .add("ram", ram).add("disk", disk).add("vcpus", vcpus).add("swap", swap).add("rxtxFactor", rxtxFactor).add("ephemeral", ephemeral);
+   }
+   
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/FloatingIP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/FloatingIP.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/FloatingIP.java
new file mode 100644
index 0000000..203b2da
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/FloatingIP.java
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.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.base.Objects.ToStringHelper;
+
+/**
+ * A Floating IP is an IP address that can be created and associated with a
+ * Server instance. Floating IPs can also be disassociated and deleted from a
+ * Server instance.
+ * 
+ * @author Jeremy Daggett
+ * @author chamerling
+*/
+public class FloatingIP implements Comparable<FloatingIP> {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromFloatingIP(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String id;
+      protected String ip;
+      protected String fixedIp;
+      protected String instanceId;
+   
+      /** 
+       * @see FloatingIP#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /** 
+       * @see FloatingIP#getIp()
+       */
+      public T ip(String ip) {
+         this.ip = ip;
+         return self();
+      }
+
+      /** 
+       * @see FloatingIP#getFixedIp()
+       */
+      public T fixedIp(String fixedIp) {
+         this.fixedIp = fixedIp;
+         return self();
+      }
+
+      /** 
+       * @see FloatingIP#getInstanceId()
+       */
+      public T instanceId(String instanceId) {
+         this.instanceId = instanceId;
+         return self();
+      }
+
+      public FloatingIP build() {
+         return new FloatingIP(id, ip, fixedIp, instanceId);
+      }
+      
+      public T fromFloatingIP(FloatingIP in) {
+         return this
+                  .id(in.getId())
+                  .ip(in.getIp())
+                  .fixedIp(in.getFixedIp())
+                  .instanceId(in.getInstanceId());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String ip;
+   @Named("fixed_ip")
+   private final String fixedIp;
+   @Named("instance_id")
+   private final String instanceId;
+
+   @ConstructorProperties({
+      "id", "ip", "fixed_ip", "instance_id"
+   })
+   protected FloatingIP(String id, String ip, @Nullable String fixedIp, @Nullable String instanceId) {
+      this.id = checkNotNull(id, "id");
+      this.ip = checkNotNull(ip, "ip");
+      this.fixedIp = fixedIp;
+      this.instanceId = instanceId;
+   }
+
+   public String getId() {
+      return this.id;
+   }
+
+   public String getIp() {
+      return this.ip;
+   }
+
+   @Nullable
+   public String getFixedIp() {
+      return this.fixedIp;
+   }
+
+   @Nullable
+   public String getInstanceId() {
+      return this.instanceId;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, ip, fixedIp, instanceId);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      FloatingIP that = FloatingIP.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+               && Objects.equal(this.ip, that.ip)
+               && Objects.equal(this.fixedIp, that.fixedIp)
+               && Objects.equal(this.instanceId, that.instanceId);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("id", id).add("ip", ip).add("fixedIp", fixedIp).add("instanceId", instanceId);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   @Override
+   public int compareTo(FloatingIP o) {
+      return this.id.compareTo(o.getId());
+   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Host.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Host.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Host.java
new file mode 100644
index 0000000..72df77d
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Host.java
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.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;
+
+/**
+ * Class Host
+*/
+public class Host {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromHost(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String name;
+      protected String service;
+   
+      /** 
+       * @see Host#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /** 
+       * @see Host#getService()
+       */
+      public T service(String service) {
+         this.service = service;
+         return self();
+      }
+
+      public Host build() {
+         return new Host(name, service);
+      }
+      
+      public T fromHost(Host in) {
+         return this
+                  .name(in.getName())
+                  .service(in.getService());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   @Named("host_name")
+   private final String name;
+   private final String service;
+
+   @ConstructorProperties({
+      "host_name", "service"
+   })
+   protected Host(@Nullable String name, @Nullable String service) {
+      this.name = name;
+      this.service = service;
+   }
+
+   @Nullable
+   public String getName() {
+      return this.name;
+   }
+
+   @Nullable
+   public String getService() {
+      return this.service;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(name, service);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      Host that = Host.class.cast(obj);
+      return Objects.equal(this.name, that.name)
+               && Objects.equal(this.service, that.service);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("name", name).add("service", service);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostAggregate.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostAggregate.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostAggregate.java
new file mode 100644
index 0000000..fc6744c
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostAggregate.java
@@ -0,0 +1,250 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Aggregates can be manipulated using the Aggregate Extension to Nova (alias "OS-AGGREGATES")
+ * 
+ * @see org.jclouds.openstack.nova.v2_0.extensions.HostAggregateApi
+*/
+public class HostAggregate {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromHostAggregate(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String id;
+      protected String name;
+      protected String availabilityZone;
+      protected Set<String> hosts = ImmutableSet.of();
+      protected String state;
+      protected Date created;
+      protected Date updated;
+      protected Map<String, String> metadata = ImmutableMap.of();
+   
+      /** 
+       * @see HostAggregate#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getAvailabilityZone()
+       */
+      public T availabilityZone(String availabilityZone) {
+         this.availabilityZone = availabilityZone;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getHosts()
+       */
+      public T hosts(Set<String> hosts) {
+         this.hosts = ImmutableSet.copyOf(checkNotNull(hosts, "hosts"));      
+         return self();
+      }
+
+      public T hosts(String... in) {
+         return hosts(ImmutableSet.copyOf(in));
+      }
+
+      /** 
+       * @see HostAggregate#getState()
+       */
+      public T state(String state) {
+         this.state = state;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getCreated()
+       */
+      public T created(Date created) {
+         this.created = created;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getUpdated()
+       */
+      public T updated(Date updated) {
+         this.updated = updated;
+         return self();
+      }
+
+      /** 
+       * @see HostAggregate#getMetadata()
+       */
+      public T metadata(Map<String, String> metadata) {
+         this.metadata = ImmutableMap.copyOf(checkNotNull(metadata, "metadata"));     
+         return self();
+      }
+
+      public HostAggregate build() {
+         return new HostAggregate(id, name, availabilityZone, hosts, state, created, updated, metadata);
+      }
+      
+      public T fromHostAggregate(HostAggregate in) {
+         return this
+                  .id(in.getId())
+                  .name(in.getName())
+                  .availabilityZone(in.getAvailabilityZone())
+                  .hosts(in.getHosts())
+                  .state(in.getState())
+                  .created(in.getCreated())
+                  .updated(in.getUpdated().get())
+                  .metadata(in.getMetadata());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String name;
+   @Named("availability_zone")
+   private final String availabilityZone;
+   private final Set<String> hosts;
+   @Named("operational_state")
+   private final String state;
+   @Named("created_at")
+   private final Date created;
+   @Named("updated_at")
+   private final Optional<Date> updated;
+   private final Map<String, String> metadata;
+
+   @ConstructorProperties({
+      "id", "name", "availability_zone", "hosts", "operational_state", "created_at", "updated_at", "metadata"
+   })
+   protected HostAggregate(String id, String name, String availabilityZone, @Nullable Set<String> hosts, String state, Date created,
+                           @Nullable Date updated, @Nullable Map<String, String> metadata) {
+      this.id = checkNotNull(id, "id");
+      this.name = checkNotNull(name, "name");
+      this.availabilityZone = checkNotNull(availabilityZone, "availabilityZone");
+      this.hosts = hosts == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(hosts);      
+      this.state = checkNotNull(state, "state");
+      this.created = checkNotNull(created, "created");
+      this.updated = Optional.fromNullable(updated);
+      this.metadata = metadata == null ? ImmutableMap.<String,String>of() : ImmutableMap.copyOf(metadata);     
+   }
+
+   public String getId() {
+      return this.id;
+   }
+
+   public String getName() {
+      return this.name;
+   }
+
+   /**
+    * note: an "Availability Zone" is different from a Nova "Zone"
+    * 
+    * @return the availability zone this aggregate is in
+    */
+   public String getAvailabilityZone() {
+      return this.availabilityZone;
+   }
+
+   public Set<String> getHosts() {
+      return this.hosts;
+   }
+
+   public String getState() {
+      return this.state;
+   }
+
+   public Date getCreated() {
+      return this.created;
+   }
+
+   public Optional<Date> getUpdated() {
+      return this.updated;
+   }
+
+   public Map<String, String> getMetadata() {
+      return this.metadata;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, name, availabilityZone, hosts, state, created, updated, metadata);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      HostAggregate that = HostAggregate.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+               && Objects.equal(this.name, that.name)
+               && Objects.equal(this.availabilityZone, that.availabilityZone)
+               && Objects.equal(this.hosts, that.hosts)
+               && Objects.equal(this.state, that.state)
+               && Objects.equal(this.created, that.created)
+               && Objects.equal(this.updated, that.updated)
+               && Objects.equal(this.metadata, that.metadata);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("id", id).add("name", name).add("availabilityZone", availabilityZone).add("hosts", hosts).add("state", state).add("created", created).add("updated", updated).add("metadata", metadata);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostResourceUsage.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostResourceUsage.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostResourceUsage.java
new file mode 100644
index 0000000..186fb33
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/HostResourceUsage.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.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.base.Objects.ToStringHelper;
+
+/**
+ * Class HostResourceUsage
+*/
+public class HostResourceUsage {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromHostResourceUsage(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String host;
+      protected String project;
+      protected int memoryMb;
+      protected int cpu;
+      protected int diskGb;
+   
+      /** 
+       * @see HostResourceUsage#getHost()
+       */
+      public T host(String host) {
+         this.host = host;
+         return self();
+      }
+
+      /** 
+       * @see HostResourceUsage#getProject()
+       */
+      public T project(String project) {
+         this.project = project;
+         return self();
+      }
+
+      /** 
+       * @see HostResourceUsage#getMemoryMb()
+       */
+      public T memoryMb(int memoryMb) {
+         this.memoryMb = memoryMb;
+         return self();
+      }
+
+      /** 
+       * @see HostResourceUsage#getCpu()
+       */
+      public T cpu(int cpu) {
+         this.cpu = cpu;
+         return self();
+      }
+
+      /** 
+       * @see HostResourceUsage#getDiskGb()
+       */
+      public T diskGb(int diskGb) {
+         this.diskGb = diskGb;
+         return self();
+      }
+
+      public HostResourceUsage build() {
+         return new HostResourceUsage(host, project, memoryMb, cpu, diskGb);
+      }
+      
+      public T fromHostResourceUsage(HostResourceUsage in) {
+         return this
+                  .host(in.getHost())
+                  .project(in.getProject())
+                  .memoryMb(in.getMemoryMb())
+                  .cpu(in.getCpu())
+                  .diskGb(in.getDiskGb());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String host;
+   private final String project;
+   @Named("memory_mb")
+   private final int memoryMb;
+   private final int cpu;
+   @Named("disk_gb")
+   private final int diskGb;
+
+   @ConstructorProperties({
+      "host", "project", "memory_mb", "cpu", "disk_gb"
+   })
+   protected HostResourceUsage(String host, @Nullable String project, int memoryMb, int cpu, int diskGb) {
+      this.host = checkNotNull(host, "host");
+      this.project = project;
+      this.memoryMb = memoryMb;
+      this.cpu = cpu;
+      this.diskGb = diskGb;
+   }
+
+   public String getHost() {
+      return this.host;
+   }
+
+   @Nullable
+   public String getProject() {
+      return this.project;
+   }
+
+   public int getMemoryMb() {
+      return this.memoryMb;
+   }
+
+   public int getCpu() {
+      return this.cpu;
+   }
+
+   public int getDiskGb() {
+      return this.diskGb;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(host, project, memoryMb, cpu, diskGb);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      HostResourceUsage that = HostResourceUsage.class.cast(obj);
+      return Objects.equal(this.host, that.host)
+               && Objects.equal(this.project, that.project)
+               && Objects.equal(this.memoryMb, that.memoryMb)
+               && Objects.equal(this.cpu, that.cpu)
+               && Objects.equal(this.diskGb, that.diskGb);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("host", host).add("project", project).add("memoryMb", memoryMb).add("cpu", cpu).add("diskGb", diskGb);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Image.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Image.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Image.java
new file mode 100644
index 0000000..65cc81d
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Image.java
@@ -0,0 +1,303 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Date;
+import java.util.Map;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.Resource;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.ImmutableMap;
+
+/**
+ * An image is a collection of files you use to create or rebuild a server. Operators provide
+ * pre-built OS images by default. You may also create custom images.
+ * 
+ * @author Jeremy Daggett
+ * @see <a href= "http://docs.openstack.org/api/openstack-compute/1.1/content/Images-d1e4427.html"
+      />
+*/
+public class Image extends Resource {
+
+   /**
+    * In-flight images will have the status attribute set to SAVING and the conditional progress
+    * element (0-100% completion) will also be returned. Other possible values for the status
+    * attribute include: UNKNOWN, ACTIVE, SAVING, ERROR, and DELETED. Images with an ACTIVE status
+    * are available for install. The optional minDisk and minRam attributes set the minimum disk and
+    * RAM requirements needed to create a server with the image.
+    * 
+    * @author Adrian Cole
+    */
+   public static enum Status {
+      
+      UNRECOGNIZED, UNKNOWN, ACTIVE, SAVING, ERROR, DELETED;
+      
+      public String value() {
+      return name();
+      }
+      
+      public static Status fromValue(String v) {
+      try {
+      return valueOf(v);
+      } catch (IllegalArgumentException e) {
+      return UNRECOGNIZED;
+      }
+      }
+      
+   }
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromImage(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> extends Resource.Builder<T>  {
+      protected Date updated;
+      protected Date created;
+      protected String tenantId;
+      protected String userId;
+      protected Image.Status status;
+      protected int progress;
+      protected int minDisk;
+      protected int minRam;
+      protected Resource server;
+      protected Map<String, String> metadata = ImmutableMap.of();
+   
+      /** 
+       * @see Image#getUpdated()
+       */
+      public T updated(Date updated) {
+         this.updated = updated;
+         return self();
+      }
+
+      /** 
+       * @see Image#getCreated()
+       */
+      public T created(Date created) {
+         this.created = created;
+         return self();
+      }
+
+      /** 
+       * @see Image#getTenantId()
+       */
+      public T tenantId(String tenantId) {
+         this.tenantId = tenantId;
+         return self();
+      }
+
+      /** 
+       * @see Image#getUserId()
+       */
+      public T userId(String userId) {
+         this.userId = userId;
+         return self();
+      }
+
+      /** 
+       * @see Image#getStatus()
+       */
+      public T status(Image.Status status) {
+         this.status = status;
+         return self();
+      }
+
+      /** 
+       * @see Image#getProgress()
+       */
+      public T progress(int progress) {
+         this.progress = progress;
+         return self();
+      }
+
+      /** 
+       * @see Image#getMinDisk()
+       */
+      public T minDisk(int minDisk) {
+         this.minDisk = minDisk;
+         return self();
+      }
+
+      /** 
+       * @see Image#getMinRam()
+       */
+      public T minRam(int minRam) {
+         this.minRam = minRam;
+         return self();
+      }
+
+      /** 
+       * @see Image#getServer()
+       */
+      public T server(Resource server) {
+         this.server = server;
+         return self();
+      }
+
+      /** 
+       * @see Image#getMetadata()
+       */
+      public T metadata(Map<String, String> metadata) {
+         this.metadata = ImmutableMap.copyOf(checkNotNull(metadata, "metadata"));     
+         return self();
+      }
+
+      public Image build() {
+         return new Image(id, name, links, updated, created, tenantId, userId, status, progress, minDisk, minRam, server, metadata);
+      }
+      
+      public T fromImage(Image in) {
+         return super.fromResource(in)
+                  .updated(in.getUpdated())
+                  .created(in.getCreated())
+                  .tenantId(in.getTenantId())
+                  .userId(in.getUserId())
+                  .status(in.getStatus())
+                  .progress(in.getProgress())
+                  .minDisk(in.getMinDisk())
+                  .minRam(in.getMinRam())
+                  .server(in.getServer())
+                  .metadata(in.getMetadata());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final Date updated;
+   private final Date created;
+   @Named("tenant_id")
+   private final String tenantId;
+   @Named("user_id")
+   private final String userId;
+   private final Image.Status status;
+   private final int progress;
+   private final int minDisk;
+   private final int minRam;
+   private final Resource server;
+   private final Map<String, String> metadata;
+
+   @ConstructorProperties({
+      "id", "name", "links", "updated", "created", "tenant_id", "user_id", "status", "progress", "minDisk", "minRam", "server", "metadata"
+   })
+   protected Image(String id, @Nullable String name, java.util.Set<Link> links, @Nullable Date updated, @Nullable Date created,
+                   String tenantId, @Nullable String userId, @Nullable Status status, int progress, int minDisk, int minRam,
+                   @Nullable Resource server, @Nullable Map<String, String> metadata) {
+      super(id, name, links);
+      this.updated = updated;
+      this.created = created;
+      this.tenantId = tenantId;
+      this.userId = userId;
+      this.status = status;
+      this.progress = progress;
+      this.minDisk = minDisk;
+      this.minRam = minRam;
+      this.server = server;
+      this.metadata = metadata == null ? ImmutableMap.<String, String>of() : ImmutableMap.copyOf(metadata);
+   }
+
+   @Nullable
+   public Date getUpdated() {
+      return this.updated;
+   }
+
+   @Nullable
+   public Date getCreated() {
+      return this.created;
+   }
+
+   @Nullable
+   public String getTenantId() {
+      return this.tenantId;
+   }
+
+   @Nullable
+   public String getUserId() {
+      return this.userId;
+   }
+
+   @Nullable
+   public Status getStatus() {
+      return this.status;
+   }
+
+   public int getProgress() {
+      return this.progress;
+   }
+
+   public int getMinDisk() {
+      return this.minDisk;
+   }
+
+   public int getMinRam() {
+      return this.minRam;
+   }
+
+   @Nullable
+   public Resource getServer() {
+      return this.server;
+   }
+
+   public Map<String, String> getMetadata() {
+      return this.metadata;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(updated, created, tenantId, userId, status, progress, minDisk, minRam, server, metadata);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      Image that = Image.class.cast(obj);
+      return super.equals(that) && Objects.equal(this.updated, that.updated)
+               && Objects.equal(this.created, that.created)
+               && Objects.equal(this.tenantId, that.tenantId)
+               && Objects.equal(this.userId, that.userId)
+               && Objects.equal(this.status, that.status)
+               && Objects.equal(this.progress, that.progress)
+               && Objects.equal(this.minDisk, that.minDisk)
+               && Objects.equal(this.minRam, that.minRam)
+               && Objects.equal(this.server, that.server)
+               && Objects.equal(this.metadata, that.metadata);
+   }
+   
+   protected ToStringHelper string() {
+      return super.string()
+            .add("updated", updated).add("created", created).add("tenantId", tenantId).add("userId", userId).add("status", status).add("progress", progress).add("minDisk", minDisk).add("minRam", minRam).add("server", server).add("metadata", metadata);
+   }
+   
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Ingress.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Ingress.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Ingress.java
new file mode 100644
index 0000000..3a9322d
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Ingress.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.net.domain.IpProtocol;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+
+/**
+ * Ingress access to a destination protocol on particular ports
+ * 
+ * @author Adrian Cole
+*/
+@Beta
+public class Ingress {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromIngress(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected IpProtocol ipProtocol;
+      protected int fromPort;
+      protected int toPort;
+   
+      /** 
+       * @see Ingress#getIpProtocol()
+       */
+      public T ipProtocol(IpProtocol ipProtocol) {
+         this.ipProtocol = ipProtocol;
+         return self();
+      }
+
+      /** 
+       * @see Ingress#getFromPort()
+       */
+      public T fromPort(int fromPort) {
+         this.fromPort = fromPort;
+         return self();
+      }
+
+      /** 
+       * @see Ingress#getToPort()
+       */
+      public T toPort(int toPort) {
+         this.toPort = toPort;
+         return self();
+      }
+
+      public Ingress build() {
+         return new Ingress(ipProtocol, fromPort, toPort);
+      }
+      
+      public T fromIngress(Ingress in) {
+         return this
+                  .ipProtocol(in.getIpProtocol())
+                  .fromPort(in.getFromPort())
+                  .toPort(in.getToPort());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   @Named("ip_protocol")
+   private final IpProtocol ipProtocol;
+   @Named("from_port")
+   private final int fromPort;
+   @Named("to_port")
+   private final int toPort;
+
+   @ConstructorProperties({
+      "ip_protocol", "from_port", "to_port"
+   })
+   protected Ingress(@Nullable IpProtocol ipProtocol, int fromPort, int toPort) {
+      this.ipProtocol = ipProtocol == null ? IpProtocol.UNRECOGNIZED : ipProtocol;
+      this.fromPort = fromPort;
+      this.toPort = toPort;
+   }
+
+   /**
+    * destination IP protocol
+    */
+   public IpProtocol getIpProtocol() {
+      return this.ipProtocol;
+   }
+
+   /**
+    * Start of destination port range for the TCP and UDP protocols, or an ICMP type number. An ICMP
+    * type number of -1 indicates a wildcard (i.e., any ICMP type number).
+    */
+   public int getFromPort() {
+      return this.fromPort;
+   }
+
+   /**
+    * End of destination port range for the TCP and UDP protocols, or an ICMP code. An ICMP code of
+    * -1 indicates a wildcard (i.e., any ICMP code).
+    */
+   public int getToPort() {
+      return this.toPort;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(ipProtocol, fromPort, toPort);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      Ingress that = Ingress.class.cast(obj);
+      return Objects.equal(this.ipProtocol, that.ipProtocol)
+               && Objects.equal(this.fromPort, that.fromPort)
+               && Objects.equal(this.toPort, that.toPort);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("ipProtocol", ipProtocol).add("fromPort", fromPort).add("toPort", toPort);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/KeyPair.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/KeyPair.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/KeyPair.java
new file mode 100644
index 0000000..aded550
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/KeyPair.java
@@ -0,0 +1,189 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.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.base.Objects.ToStringHelper;
+
+/**
+ * Class KeyPair
+*/
+public class KeyPair {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromKeyPair(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String publicKey;
+      protected String privateKey;
+      protected String userId;
+      protected String name;
+      protected String fingerprint;
+   
+      /** 
+       * @see KeyPair#getPublicKey()
+       */
+      public T publicKey(String publicKey) {
+         this.publicKey = publicKey;
+         return self();
+      }
+
+      /** 
+       * @see KeyPair#getPrivateKey()
+       */
+      public T privateKey(String privateKey) {
+         this.privateKey = privateKey;
+         return self();
+      }
+
+      /** 
+       * @see KeyPair#getUserId()
+       */
+      public T userId(String userId) {
+         this.userId = userId;
+         return self();
+      }
+
+      /** 
+       * @see KeyPair#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /** 
+       * @see KeyPair#getFingerprint()
+       */
+      public T fingerprint(String fingerprint) {
+         this.fingerprint = fingerprint;
+         return self();
+      }
+
+      public KeyPair build() {
+         return new KeyPair(publicKey, privateKey, userId, name, fingerprint);
+      }
+      
+      public T fromKeyPair(KeyPair in) {
+         return this
+                  .publicKey(in.getPublicKey())
+                  .privateKey(in.getPrivateKey())
+                  .userId(in.getUserId())
+                  .name(in.getName())
+                  .fingerprint(in.getFingerprint());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   @Named("public_key")
+   private final String publicKey;
+   @Named("private_key")
+   private final String privateKey;
+   @Named("user_id")
+   private final String userId;
+   private final String name;
+   private final String fingerprint;
+
+   @ConstructorProperties({
+      "public_key", "private_key", "user_id", "name", "fingerprint"
+   })
+   protected KeyPair(@Nullable String publicKey, @Nullable String privateKey, @Nullable String userId, String name, @Nullable String fingerprint) {
+      this.publicKey = publicKey;
+      this.privateKey = privateKey;
+      this.userId = userId;
+      this.name = checkNotNull(name, "name");
+      this.fingerprint = fingerprint;
+   }
+
+   @Nullable
+   public String getPublicKey() {
+      return this.publicKey;
+   }
+
+   @Nullable
+   public String getPrivateKey() {
+      return this.privateKey;
+   }
+
+   @Nullable
+   public String getUserId() {
+      return this.userId;
+   }
+
+   public String getName() {
+      return this.name;
+   }
+
+   @Nullable
+   public String getFingerprint() {
+      return this.fingerprint;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(publicKey, privateKey, userId, name, fingerprint);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      KeyPair that = KeyPair.class.cast(obj);
+      return Objects.equal(this.publicKey, that.publicKey)
+               && Objects.equal(this.privateKey, that.privateKey)
+               && Objects.equal(this.userId, that.userId)
+               && Objects.equal(this.name, that.name)
+               && Objects.equal(this.fingerprint, that.fingerprint);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper("")
+            .omitNullValues()
+            .add("public_key", publicKey)
+            .add("private_key", privateKey)
+            .add("user_id", userId)
+            .add("name", name)
+            .add("fingerprint", fingerprint);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Network.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Network.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Network.java
new file mode 100644
index 0000000..516f6e1
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Network.java
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import java.beans.ConstructorProperties;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+
+import static com.google.common.base.Preconditions.checkArgument;
+
+/**
+ * Nova (or Neutron) network definition
+ * Used to provide support for network, port, and fixed_ip when booting Nova servers.
+ * OpenStack will support either a Nova Network or Neutron, but not both at the same time.
+ * Specifying a port is only possible with Neutron.
+ * @author Zack Shoylev
+ */
+public class Network implements Comparable<Network> {
+   private final String networkUuid;
+   private final String portUuid;
+   private final String fixedIp;
+
+   @ConstructorProperties({
+      "networkUuid", "portUuid", "fixedIp"
+   })
+   protected Network(String networkUuid, String portUuid, String fixedIp) {
+      checkArgument(networkUuid != null || portUuid != null, "At least one of networkUuid or portUuid should be specified");
+      this.networkUuid = networkUuid;
+      this.portUuid = portUuid;
+      this.fixedIp = fixedIp;
+   }
+
+   /**
+    * @return the network uuid - Neutron or Nova
+    */
+   public String getNetworkUuid() {
+      return this.networkUuid;
+   }
+
+   /**
+    * @return the port uuid - Neutron only
+    */
+   public String getPortUuid() {
+      return this.portUuid;
+   }
+   
+   /**
+    * @return the fixed IP address - Neutron or Nova
+    */
+   public String getFixedIp() {
+      return this.fixedIp;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(networkUuid, portUuid, fixedIp);
+   }
+
+   @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.networkUuid, that.networkUuid) && 
+            Objects.equal(this.portUuid, that.portUuid) &&
+            Objects.equal(this.fixedIp, that.fixedIp);
+   }
+
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("networkUuid", networkUuid)
+            .add("portUuid", portUuid)
+            .add("fixedIp", fixedIp);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   /**
+    * @return A new builder object
+    */
+   public static Builder builder() { 
+      return new Builder();
+   }
+
+   /**
+    * @return A new Builder object from another Network
+    */
+   public Builder toBuilder() { 
+      return new Builder().fromNetwork(this);
+   }
+
+   /**
+    * Implements the Builder pattern for this class
+    */
+   public static class Builder {
+      protected String networkUuid;
+      protected String portUuid;
+      protected String fixedIp;
+
+      /** 
+       * @param networkUuid The UUID for the Nova network or Neutron subnet to be attached. 
+       * @return The builder object.
+       * @see Network#getNetworkUuid()
+       */
+      public Builder networkUuid(String networkUuid) {
+         this.networkUuid = networkUuid;
+         return this;
+      }
+
+      /** 
+       * @param portUuid The port UUID for this Neutron Network.
+       * @return The builder object.
+       * @see Network#getPortUuid()
+       */
+      public Builder portUuid(String portUuid) {
+         this.portUuid = portUuid;
+         return this;
+      }
+      
+      /** 
+       * @param fixedIp The fixed IP address for this Network (if any). 
+       * Service automatically assigns IP address if this is not provided.
+       * Fixed IP is compatible with both Nova Network and Neutron.
+       * @return The builder object.
+       * @see Network#getFixedIp()
+       */
+      public Builder fixedIp(String fixedIp) {
+         this.fixedIp = fixedIp;
+         return this;
+      }
+
+      /**
+       * @return A new Network object.
+       */
+      public Network build() {
+         return new Network(networkUuid, portUuid, fixedIp);
+      }
+
+      /**
+       * @param in The target Network
+       * @return A Builder from the provided Network
+       */
+      public Builder fromNetwork(Network in) {
+         return this
+               .networkUuid(in.getNetworkUuid())
+               .portUuid(in.getPortUuid())
+               .fixedIp(in.getFixedIp());
+      }        
+   }
+
+   @Override
+   public int compareTo(Network that) {
+      return this.toString().compareTo(that.toString());
+   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Quota.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Quota.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Quota.java
new file mode 100644
index 0000000..c16693e
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Quota.java
@@ -0,0 +1,356 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+
+/**
+ * Represents the set of limits (quotas) returned by the Quota Extension
+ * 
+ * @see org.jclouds.openstack.nova.v2_0.extensions.QuotaApi
+*/
+public class Quota {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromQuotas(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String id;
+      protected int metadataItems;
+      protected int injectedFileContentBytes;
+      protected int volumes;
+      protected int gigabytes;
+      protected int ram;
+      protected int floatingIps;
+      protected int instances;
+      protected int injectedFiles;
+      protected int cores;
+      protected int securityGroups;
+      protected int securityGroupRules;
+      protected int keyPairs;
+   
+      /** 
+       * @see Quota#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getMetadatas()
+       */
+      public T metadataItems(int metadataItems) {
+         this.metadataItems = metadataItems;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getInjectedFileContentBytes()
+       */
+      public T injectedFileContentBytes(int injectedFileContentBytes) {
+         this.injectedFileContentBytes = injectedFileContentBytes;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getVolumes()
+       */
+      public T volumes(int volumes) {
+         this.volumes = volumes;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getGigabytes()
+       */
+      public T gigabytes(int gigabytes) {
+         this.gigabytes = gigabytes;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getRam()
+       */
+      public T ram(int ram) {
+         this.ram = ram;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getFloatingIps()
+       */
+      public T floatingIps(int floatingIps) {
+         this.floatingIps = floatingIps;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getInstances()
+       */
+      public T instances(int instances) {
+         this.instances = instances;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getInjectedFiles()
+       */
+      public T injectedFiles(int injectedFiles) {
+         this.injectedFiles = injectedFiles;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getCores()
+       */
+      public T cores(int cores) {
+         this.cores = cores;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getSecurityGroups()
+       */
+      public T securityGroups(int securityGroups) {
+         this.securityGroups = securityGroups;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getSecurityGroupRules()
+       */
+      public T securityGroupRules(int securityGroupRules) {
+         this.securityGroupRules = securityGroupRules;
+         return self();
+      }
+
+      /** 
+       * @see Quota#getKeyPairs()
+       */
+      public T keyPairs(int keyPairs) {
+         this.keyPairs = keyPairs;
+         return self();
+      }
+
+      public Quota build() {
+         return new Quota(id, metadataItems, injectedFileContentBytes, volumes, gigabytes, ram, floatingIps, instances, injectedFiles, cores, securityGroups, securityGroupRules, keyPairs);
+      }
+      
+      public T fromQuotas(Quota in) {
+         return this
+                  .id(in.getId())
+                  .metadataItems(in.getMetadatas())
+                  .injectedFileContentBytes(in.getInjectedFileContentBytes())
+                  .volumes(in.getVolumes())
+                  .gigabytes(in.getGigabytes())
+                  .ram(in.getRam())
+                  .floatingIps(in.getFloatingIps())
+                  .instances(in.getInstances())
+                  .injectedFiles(in.getInjectedFiles())
+                  .cores(in.getCores())
+                  .securityGroups(in.getSecurityGroups())
+                  .securityGroupRules(in.getSecurityGroupRules())
+                  .keyPairs(in.getKeyPairs());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   @Named("metadata_items")
+   private final int metadataItems;
+   @Named("injected_file_content_bytes")
+   private final int injectedFileContentBytes;
+   private final int volumes;
+   private final int gigabytes;
+   private final int ram;
+   @Named("floating_ips")
+   private final int floatingIps;
+   private final int instances;
+   @Named("injected_files")
+   private final int injectedFiles;
+   private final int cores;
+   @Named("security_groups")
+   private final int securityGroups;
+   @Named("security_group_rules")
+   private final int securityGroupRules;
+   @Named("key_pairs")
+   private final int keyPairs;
+
+   @ConstructorProperties({
+      "id", "metadata_items", "injected_file_content_bytes", "volumes", "gigabytes", "ram", "floating_ips", "instances", "injected_files", "cores", "security_groups", "security_group_rules", "key_pairs"
+   })
+   protected Quota(String id, int metadataItems, int injectedFileContentBytes, int volumes, int gigabytes, int ram, int floatingIps, int instances, int injectedFiles, int cores, int securityGroups, int securityGroupRules, int keyPairs) {
+      this.id = checkNotNull(id, "id");
+      this.metadataItems = metadataItems;
+      this.injectedFileContentBytes = injectedFileContentBytes;
+      this.volumes = volumes;
+      this.gigabytes = gigabytes;
+      this.ram = ram;
+      this.floatingIps = floatingIps;
+      this.instances = instances;
+      this.injectedFiles = injectedFiles;
+      this.cores = cores;
+      this.securityGroups = securityGroups;
+      this.securityGroupRules = securityGroupRules;
+      this.keyPairs = keyPairs;
+   }
+
+   /**
+    * The id of the tenant this set of limits applies to
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * The limit of the number of metadata items for the tenant
+    */
+   public int getMetadatas() {
+      return this.metadataItems;
+   }
+
+   public int getInjectedFileContentBytes() {
+      return this.injectedFileContentBytes;
+   }
+
+   /**
+    * The limit of the number of volumes that can be created for the tenant
+    */
+   public int getVolumes() {
+      return this.volumes;
+   }
+
+   /**
+    * The limit of the total size of all volumes for the tenant
+    */
+   public int getGigabytes() {
+      return this.gigabytes;
+   }
+
+   /**
+    * The limit of total ram available to the tenant
+    */
+   public int getRam() {
+      return this.ram;
+   }
+
+   /**
+    * The limit of the number of floating ips for the tenant
+    */
+   public int getFloatingIps() {
+      return this.floatingIps;
+   }
+
+   /**
+    * The limit of the number of instances that can be created for the tenant
+    */
+   public int getInstances() {
+      return this.instances;
+   }
+
+   public int getInjectedFiles() {
+      return this.injectedFiles;
+   }
+
+   /**
+    * The limit of the number of cores that can be used by the tenant
+    */
+   public int getCores() {
+      return this.cores;
+   }
+
+   /**
+    * @return the limit of the number of security groups that can be created for the tenant
+    * @see org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupApi
+    */
+   public int getSecurityGroups() {
+      return this.securityGroups;
+   }
+
+   /**
+    * @return the limit of the number of security group rules that can be created for the tenant
+    * @see org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupApi
+    */
+   public int getSecurityGroupRules() {
+      return this.securityGroupRules;
+   }
+
+   /**
+    * @return the limit of the number of key pairs that can be created for the tenant
+    * @see org.jclouds.openstack.nova.v2_0.extensions.KeyPairApi
+    */
+   public int getKeyPairs() {
+      return this.keyPairs;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, metadataItems, injectedFileContentBytes, volumes, gigabytes, ram, floatingIps, instances, injectedFiles, cores, securityGroups, securityGroupRules, keyPairs);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      Quota that = Quota.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+               && Objects.equal(this.metadataItems, that.metadataItems)
+               && Objects.equal(this.injectedFileContentBytes, that.injectedFileContentBytes)
+               && Objects.equal(this.volumes, that.volumes)
+               && Objects.equal(this.gigabytes, that.gigabytes)
+               && Objects.equal(this.ram, that.ram)
+               && Objects.equal(this.floatingIps, that.floatingIps)
+               && Objects.equal(this.instances, that.instances)
+               && Objects.equal(this.injectedFiles, that.injectedFiles)
+               && Objects.equal(this.cores, that.cores)
+               && Objects.equal(this.securityGroups, that.securityGroups)
+               && Objects.equal(this.securityGroupRules, that.securityGroupRules)
+               && Objects.equal(this.keyPairs, that.keyPairs);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("id", id).add("metadataItems", metadataItems).add("injectedFileContentBytes", injectedFileContentBytes).add("volumes", volumes).add("gigabytes", gigabytes).add("ram", ram).add("floatingIps", floatingIps).add("instances", instances).add("injectedFiles", injectedFiles).add("cores", cores).add("securityGroups", securityGroups).add("securityGroupRules", securityGroupRules).add("keyPairs", keyPairs);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/QuotaClass.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/QuotaClass.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/QuotaClass.java
new file mode 100644
index 0000000..27199ef
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/QuotaClass.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import java.beans.ConstructorProperties;
+
+/**
+ * Represents the set of limits (quota class) returned by the Quota Class Extension
+ * 
+ * @see org.jclouds.openstack.nova.v2_0.extensions.QuotaClassApi
+*/
+public class QuotaClass extends Quota {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromQuotaClass(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> extends Quota.Builder<T>  {
+   
+      public QuotaClass build() {
+         return new QuotaClass(id, metadataItems, injectedFileContentBytes, volumes, gigabytes, ram, floatingIps, instances, injectedFiles, cores, securityGroups, securityGroupRules, keyPairs);
+      }
+      
+      public T fromQuotaClass(QuotaClass in) {
+         return super.fromQuotas(in);
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+
+   @ConstructorProperties({
+      "id", "metadata_items", "injected_file_content_bytes", "volumes", "gigabytes", "ram", "floating_ips", "instances", "injected_files", "cores", "security_groups", "security_group_rules", "key_pairs"
+   })
+   protected QuotaClass(String id, int metadataItems, int injectedFileContentBytes, int volumes, int gigabytes, int ram, int floatingIps, int instances, int injectedFiles, int cores, int securityGroups, int securityGroupRules, int keyPairs) {
+      super(id, metadataItems, injectedFileContentBytes, volumes, gigabytes, ram, floatingIps, instances, injectedFiles, cores, securityGroups, securityGroupRules, keyPairs);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/RebootType.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/RebootType.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/RebootType.java
new file mode 100644
index 0000000..453dd77
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/RebootType.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+/**
+ * 
+ * @author Adrian Cole
+ */
+public enum RebootType {
+
+   HARD, SOFT;
+
+   public String value() {
+      return name();
+   }
+
+   public static RebootType fromValue(String v) {
+      return valueOf(v);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroup.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroup.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroup.java
new file mode 100644
index 0000000..a0e2085
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroup.java
@@ -0,0 +1,188 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Defines a security group
+*/
+public class SecurityGroup {
+
+   public static Builder<?> builder() { 
+      return new ConcreteBuilder();
+   }
+   
+   public Builder<?> toBuilder() { 
+      return new ConcreteBuilder().fromSecurityGroup(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>>  {
+      protected abstract T self();
+
+      protected String id;
+      protected String tenantId;
+      protected String name;
+      protected String description;
+      protected Set<SecurityGroupRule> rules = ImmutableSet.of();
+   
+      /** 
+       * @see SecurityGroup#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /** 
+       * @see SecurityGroup#getTenantId()
+       */
+      public T tenantId(String tenantId) {
+         this.tenantId = tenantId;
+         return self();
+      }
+
+      /** 
+       * @see SecurityGroup#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /** 
+       * @see SecurityGroup#getDescription()
+       */
+      public T description(String description) {
+         this.description = description;
+         return self();
+      }
+
+      /** 
+       * @see SecurityGroup#getRules()
+       */
+      public T rules(Set<SecurityGroupRule> rules) {
+         this.rules = ImmutableSet.copyOf(checkNotNull(rules, "rules"));      
+         return self();
+      }
+
+      public T rules(SecurityGroupRule... in) {
+         return rules(ImmutableSet.copyOf(in));
+      }
+
+      public SecurityGroup build() {
+         return new SecurityGroup(id, tenantId, name, description, rules);
+      }
+      
+      public T fromSecurityGroup(SecurityGroup in) {
+         return this
+                  .id(in.getId())
+                  .tenantId(in.getTenantId())
+                  .name(in.getName())
+                  .description(in.getDescription())
+                  .rules(in.getRules());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   @Named("tenant_id")
+   private final String tenantId;
+   private final String name;
+   private final String description;
+   private final Set<SecurityGroupRule> rules;
+
+   @ConstructorProperties({
+      "id", "tenant_id", "name", "description", "rules"
+   })
+   protected SecurityGroup(String id, @Nullable String tenantId, @Nullable String name, @Nullable String description, Set<SecurityGroupRule> rules) {
+      this.id = checkNotNull(id, "id");
+      this.tenantId = tenantId;
+      this.name = name;
+      this.description = description;
+      // if empty, leave null so this doesn't serialize to json
+      this.rules = checkNotNull(rules, "rules").size() == 0 ? null : ImmutableSet.copyOf(rules);
+   }
+
+   public String getId() {
+      return this.id;
+   }
+
+   @Nullable
+   public String getTenantId() {
+      return this.tenantId;
+   }
+
+   @Nullable
+   public String getName() {
+      return this.name;
+   }
+
+   @Nullable
+   public String getDescription() {
+      return this.description;
+   }
+
+   public Set<SecurityGroupRule> getRules() {
+      return this.rules;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, tenantId, name, description, rules);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      SecurityGroup that = SecurityGroup.class.cast(obj);
+      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.rules, that.rules);
+   }
+   
+   protected ToStringHelper string() {
+      return Objects.toStringHelper(this)
+            .add("id", id).add("tenantId", tenantId).add("name", name).add("description", description).add("rules", rules);
+   }
+   
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5857efca/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroupRule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroupRule.java b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroupRule.java
new file mode 100644
index 0000000..92d58f7
--- /dev/null
+++ b/dependencies/jclouds/openstack-nova/1.7.1-stratos/src/main/java/org/jclouds/openstack/nova/v2_0/domain/SecurityGroupRule.java
@@ -0,0 +1,174 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.net.domain.IpProtocol;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.ForwardingObject;
+
+/**
+ * Defines a security group rule
+ */
+public class SecurityGroupRule extends Ingress {
+
+   public static class Cidr extends ForwardingObject {
+      private String cidr;
+
+      @ConstructorProperties("cidr")
+      protected Cidr(String cidr) {
+         this.cidr = checkNotNull(cidr);
+      }
+
+      @Override
+      protected Object delegate() {
+         return cidr;
+      }
+   }
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromSecurityGroupRule(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> extends Ingress.Builder<T> {
+      protected String id;
+      protected TenantIdAndName group;
+      protected String parentGroupId;
+      protected String ipRange;
+
+      /**
+       * @see SecurityGroupRule#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see SecurityGroupRule#getGroup()
+       */
+      public T group(TenantIdAndName group) {
+         this.group = group;
+         return self();
+      }
+
+      /**
+       * @see SecurityGroupRule#getParentGroupId()
+       */
+      public T parentGroupId(String parentGroupId) {
+         this.parentGroupId = parentGroupId;
+         return self();
+      }
+
+      /**
+       * @see SecurityGroupRule#getIpRange()
+       */
+      public T ipRange(String ipRange) {
+         this.ipRange = ipRange;
+         return self();
+      }
+
+      public SecurityGroupRule build() {
+         return new SecurityGroupRule(ipProtocol, fromPort, toPort, id, group, parentGroupId, ipRange == null ? null : new Cidr(ipRange));
+      }
+
+      public T fromSecurityGroupRule(SecurityGroupRule in) {
+         return super.fromIngress(in)
+               .id(in.getId())
+               .group(in.getGroup())
+               .parentGroupId(in.getParentGroupId())
+               .ipRange(in.getIpRange());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final TenantIdAndName group;
+   @Named("parent_group_id")
+   private final String parentGroupId;
+   @Named("ip_range")
+   private final SecurityGroupRule.Cidr ipRange;
+
+   @ConstructorProperties({
+         "ip_protocol", "from_port", "to_port", "id", "group", "parent_group_id", "ip_range"
+   })
+   protected SecurityGroupRule(IpProtocol ipProtocol, int fromPort, int toPort, String id, @Nullable TenantIdAndName group, String parentGroupId, @Nullable Cidr ipRange) {
+      super(ipProtocol, fromPort, toPort);
+      this.id = checkNotNull(id, "id");
+      this.group = group;
+      this.parentGroupId = checkNotNull(parentGroupId, "parentGroupId");
+      this.ipRange = ipRange;
+   }
+
+   public String getId() {
+      return this.id;
+   }
+
+   @Nullable
+   public TenantIdAndName getGroup() {
+      return this.group;
+   }
+
+   public String getParentGroupId() {
+      return this.parentGroupId;
+   }
+
+   @Nullable
+   public String getIpRange() {
+      return ipRange == null ? null : ipRange.cidr;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, group, parentGroupId, ipRange);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      SecurityGroupRule that = SecurityGroupRule.class.cast(obj);
+      return super.equals(that) && Objects.equal(this.id, that.id)
+            && Objects.equal(this.group, that.group)
+            && Objects.equal(this.parentGroupId, that.parentGroupId)
+            && Objects.equal(this.ipRange, that.ipRange);
+   }
+
+   protected ToStringHelper string() {
+      return super.string()
+            .add("id", id).add("group", group).add("parentGroupId", parentGroupId).add("ipRange", ipRange);
+   }
+
+}