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 2014/11/27 07:46:22 UTC

[73/79] stratos git commit: adding cloudstack dependancy

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IPForwardingRule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IPForwardingRule.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IPForwardingRule.java
new file mode 100644
index 0000000..6703c80
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IPForwardingRule.java
@@ -0,0 +1,396 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Class IPForwardingRule
+ */
+public class IPForwardingRule implements Comparable<IPForwardingRule> {
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromIPForwardingRule(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String id;
+      protected String IPAddress;
+      protected String IPAddressId;
+      protected int startPort;
+      protected String protocol;
+      protected int endPort;
+      protected String state;
+      protected String virtualMachineDisplayName;
+      protected String virtualMachineId;
+      protected String virtualMachineName;
+      protected int publicPort;
+      protected Set<String> CIDRs = ImmutableSet.of();
+      protected int privateEndPort;
+      protected int publicEndPort;
+
+      /**
+       * @see IPForwardingRule#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getIPAddress()
+       */
+      public T IPAddress(String IPAddress) {
+         this.IPAddress = IPAddress;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getIPAddressId()
+       */
+      public T IPAddressId(String IPAddressId) {
+         this.IPAddressId = IPAddressId;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getStartPort()
+       */
+      public T startPort(int startPort) {
+         this.startPort = startPort;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getProtocol()
+       */
+      public T protocol(String protocol) {
+         this.protocol = protocol;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getEndPort()
+       */
+      public T endPort(int endPort) {
+         this.endPort = endPort;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getState()
+       */
+      public T state(String state) {
+         this.state = state;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getVirtualMachineDisplayName()
+       */
+      public T virtualMachineDisplayName(String virtualMachineDisplayName) {
+         this.virtualMachineDisplayName = virtualMachineDisplayName;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getVirtualMachineId()
+       */
+      public T virtualMachineId(String virtualMachineId) {
+         this.virtualMachineId = virtualMachineId;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getVirtualMachineName()
+       */
+      public T virtualMachineName(String virtualMachineName) {
+         this.virtualMachineName = virtualMachineName;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getPublicPort()
+       */
+      public T publicPort(int publicPort) {
+         this.publicPort = publicPort;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getCIDRs()
+       */
+      public T CIDRs(Set<String> CIDRs) {
+         this.CIDRs = ImmutableSet.copyOf(checkNotNull(CIDRs, "CIDRs"));
+         return self();
+      }
+
+      public T CIDRs(String... in) {
+         return CIDRs(ImmutableSet.copyOf(in));
+      }
+
+      /**
+       * @see IPForwardingRule#getPrivateEndPort()
+       */
+      public T privateEndPort(int privateEndPort) {
+         this.privateEndPort = privateEndPort;
+         return self();
+      }
+
+      /**
+       * @see IPForwardingRule#getPublicEndPort()
+       */
+      public T publicEndPort(int publicEndPort) {
+         this.publicEndPort = publicEndPort;
+         return self();
+      }
+
+      public IPForwardingRule build() {
+         return new IPForwardingRule(id, IPAddress, IPAddressId, startPort, protocol, endPort, state, virtualMachineDisplayName,
+               virtualMachineId, virtualMachineName, publicPort, CIDRs, privateEndPort, publicEndPort);
+      }
+
+      public T fromIPForwardingRule(IPForwardingRule in) {
+         return this
+               .id(in.getId())
+               .IPAddress(in.getIPAddress())
+               .IPAddressId(in.getIPAddressId())
+               .startPort(in.getStartPort())
+               .protocol(in.getProtocol())
+               .endPort(in.getEndPort())
+               .state(in.getState())
+               .virtualMachineDisplayName(in.getVirtualMachineDisplayName())
+               .virtualMachineId(in.getVirtualMachineId())
+               .virtualMachineName(in.getVirtualMachineName())
+               .publicPort(in.getPublicPort())
+               .CIDRs(in.getCIDRs())
+               .privateEndPort(in.getPrivateEndPort())
+               .publicEndPort(in.getPublicEndPort());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String IPAddress;
+   private final String IPAddressId;
+   private final int startPort;
+   private final String protocol;
+   private final int endPort;
+   private final String state;
+   private final String virtualMachineDisplayName;
+   private final String virtualMachineId;
+   private final String virtualMachineName;
+   private final int publicPort;
+   private final Set<String> CIDRs;
+   private final int privateEndPort;
+   private final int publicEndPort;
+
+   @ConstructorProperties({
+         "id", "ipaddress", "ipaddressid", "startport", "protocol", "endport", "state", "virtualmachinedisplayname",
+         "virtualmachineid", "virtualmachinename", "publicport", "cidrlist", "privateendport", "publicendport"
+   })
+   protected IPForwardingRule(String id, String IPAddress, String IPAddressId, int startPort, @Nullable String protocol,
+                              int endPort, @Nullable String state, @Nullable String virtualMachineDisplayName,
+                              @Nullable String virtualMachineId, @Nullable String virtualMachineName, int publicPort,
+                              @Nullable Set<String> CIDRs, int privateEndPort, int publicEndPort) {
+      this.id = checkNotNull(id, "id");
+      this.IPAddress = IPAddress;
+      this.IPAddressId = IPAddressId;
+      this.startPort = startPort;
+      this.protocol = protocol;
+      this.endPort = endPort;
+      this.state = state;
+      this.virtualMachineDisplayName = virtualMachineDisplayName;
+      this.virtualMachineId = virtualMachineId;
+      this.virtualMachineName = virtualMachineName;
+      this.publicPort = publicPort;
+      this.CIDRs = CIDRs == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(CIDRs);
+      this.privateEndPort = privateEndPort;
+      this.publicEndPort = publicEndPort;
+   }
+
+   /**
+    * @return the ID of the ip forwarding rule
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return the public ip address for the ip forwarding rule
+    */
+   @Nullable
+   public String getIPAddress() {
+      return this.IPAddress;
+   }
+
+   /**
+    * @return the public ip address id for the ip forwarding rule
+    */
+   @Nullable
+   public String getIPAddressId() {
+      return this.IPAddressId;
+   }
+
+   /**
+    * @return the private port for the ip forwarding rule
+    */
+   public int getStartPort() {
+      return this.startPort;
+   }
+
+   /**
+    * @return the protocol of the ip forwarding rule
+    */
+   @Nullable
+   public String getProtocol() {
+      return this.protocol;
+   }
+
+   /**
+    * @return the public port for the ip forwarding rule
+    */
+   public int getEndPort() {
+      return this.endPort;
+   }
+
+   /**
+    * @return the state of the rule
+    */
+   @Nullable
+   public String getState() {
+      return this.state;
+   }
+
+   /**
+    * @return the VM display name for the ip forwarding rule
+    */
+   @Nullable
+   public String getVirtualMachineDisplayName() {
+      return this.virtualMachineDisplayName;
+   }
+
+   /**
+    * @return the VM ID for the ip forwarding rule
+    */
+   @Nullable
+   public String getVirtualMachineId() {
+      return this.virtualMachineId;
+   }
+
+   /**
+    * @return the VM name for the ip forwarding rule
+    */
+   @Nullable
+   public String getVirtualMachineName() {
+      return this.virtualMachineName;
+   }
+
+   /**
+    * @return the starting port of port forwarding rule's public port range
+    */
+   public int getPublicPort() {
+      return this.publicPort;
+   }
+
+   /**
+    * @return the cidr list to forward traffic from
+    */
+   public Set<String> getCIDRs() {
+      return this.CIDRs;
+   }
+
+   /**
+    * @return the ending port of port forwarding rule's private port range
+    */
+   public int getPrivateEndPort() {
+      return this.privateEndPort;
+   }
+
+   /**
+    * @return the ending port of port forwarding rule's private port range
+    */
+   public int getPublicEndPort() {
+      return this.publicEndPort;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, IPAddress, IPAddressId, startPort, protocol, endPort, state, virtualMachineDisplayName, virtualMachineId, virtualMachineName, publicPort, CIDRs, privateEndPort, publicEndPort);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      IPForwardingRule that = IPForwardingRule.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+            && Objects.equal(this.IPAddress, that.IPAddress)
+            && Objects.equal(this.IPAddressId, that.IPAddressId)
+            && Objects.equal(this.startPort, that.startPort)
+            && Objects.equal(this.protocol, that.protocol)
+            && Objects.equal(this.endPort, that.endPort)
+            && Objects.equal(this.state, that.state)
+            && Objects.equal(this.virtualMachineDisplayName, that.virtualMachineDisplayName)
+            && Objects.equal(this.virtualMachineId, that.virtualMachineId)
+            && Objects.equal(this.virtualMachineName, that.virtualMachineName)
+            && Objects.equal(this.publicPort, that.publicPort)
+            && Objects.equal(this.CIDRs, that.CIDRs)
+            && Objects.equal(this.privateEndPort, that.privateEndPort)
+            && Objects.equal(this.publicEndPort, that.publicEndPort);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("id", id).add("IPAddress", IPAddress).add("IPAddressId", IPAddressId).add("startPort", startPort)
+            .add("protocol", protocol).add("endPort", endPort).add("state", state).add("virtualMachineDisplayName", virtualMachineDisplayName)
+            .add("virtualMachineId", virtualMachineId).add("virtualMachineName", virtualMachineName).add("publicPort", publicPort)
+            .add("CIDRs", CIDRs).add("privateEndPort", privateEndPort).add("publicEndPort", publicEndPort);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   @Override
+   public int compareTo(IPForwardingRule o) {
+      return id.compareTo(o.getId());
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISO.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISO.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISO.java
new file mode 100644
index 0000000..3e79b04
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISO.java
@@ -0,0 +1,767 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+
+/**
+ * Class ISO
+ */
+public class ISO {
+
+   /**
+    */
+   public static enum ISOFilter {
+
+      featured, self, self_executable, executable, community, UNRECOGNIZED;
+
+      public static ISOFilter fromValue(String format) {
+         try {
+            return valueOf(checkNotNull(format, "format"));
+         } catch (IllegalArgumentException e) {
+            return UNRECOGNIZED;
+         }
+      }
+   }
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromISO(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String id;
+      protected String account;
+      protected String accountId;
+      protected boolean bootable;
+      protected String checksum;
+      protected Date created;
+      protected boolean crossZones;
+      protected String displayText;
+      protected String domain;
+      protected String domainid;
+      protected String format;
+      protected String hostId;
+      protected String hostName;
+      protected String hypervisor;
+      protected boolean isExtractable;
+      protected boolean isFeatured;
+      protected boolean isPublic;
+      protected boolean isReady;
+      protected String jobId;
+      protected String jobStatus;
+      protected String name;
+      protected String osTypeId;
+      protected String osTypeName;
+      protected boolean passwordEnabled;
+      protected Date removed;
+      protected long size;
+      protected String sourceTemplateId;
+      protected String status;
+      protected String templateTag;
+      protected String templateType;
+      protected String zoneId;
+      protected String zoneName;
+
+      /**
+       * @see ISO#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see ISO#getAccount()
+       */
+      public T account(String account) {
+         this.account = account;
+         return self();
+      }
+
+      /**
+       * @see ISO#getAccountId()
+       */
+      public T accountId(String accountId) {
+         this.accountId = accountId;
+         return self();
+      }
+
+      /**
+       * @see ISO#isBootable()
+       */
+      public T bootable(boolean bootable) {
+         this.bootable = bootable;
+         return self();
+      }
+
+      /**
+       * @see ISO#getChecksum()
+       */
+      public T checksum(String checksum) {
+         this.checksum = checksum;
+         return self();
+      }
+
+      /**
+       * @see ISO#getCreated()
+       */
+      public T created(Date created) {
+         this.created = created;
+         return self();
+      }
+
+      /**
+       * @see ISO#isCrossZones()
+       */
+      public T crossZones(boolean crossZones) {
+         this.crossZones = crossZones;
+         return self();
+      }
+
+      /**
+       * @see ISO#getDisplayText()
+       */
+      public T displayText(String displayText) {
+         this.displayText = displayText;
+         return self();
+      }
+
+      /**
+       * @see ISO#getDomain()
+       */
+      public T domain(String domain) {
+         this.domain = domain;
+         return self();
+      }
+
+      /**
+       * @see ISO#getDomainid()
+       */
+      public T domainid(String domainid) {
+         this.domainid = domainid;
+         return self();
+      }
+
+      /**
+       * @see ISO#getFormat()
+       */
+      public T format(String format) {
+         this.format = format;
+         return self();
+      }
+
+      /**
+       * @see ISO#getHostId()
+       */
+      public T hostId(String hostId) {
+         this.hostId = hostId;
+         return self();
+      }
+
+      /**
+       * @see ISO#getHostName()
+       */
+      public T hostName(String hostName) {
+         this.hostName = hostName;
+         return self();
+      }
+
+      /**
+       * @see ISO#getHypervisor()
+       */
+      public T hypervisor(String hypervisor) {
+         this.hypervisor = hypervisor;
+         return self();
+      }
+
+      /**
+       * @see ISO#isExtractable()
+       */
+      public T isExtractable(boolean isExtractable) {
+         this.isExtractable = isExtractable;
+         return self();
+      }
+
+      /**
+       * @see ISO#isFeatured()
+       */
+      public T isFeatured(boolean isFeatured) {
+         this.isFeatured = isFeatured;
+         return self();
+      }
+
+      /**
+       * @see ISO#isPublic()
+       */
+      public T isPublic(boolean isPublic) {
+         this.isPublic = isPublic;
+         return self();
+      }
+
+      /**
+       * @see ISO#isReady()
+       */
+      public T isReady(boolean isReady) {
+         this.isReady = isReady;
+         return self();
+      }
+
+      /**
+       * @see ISO#getJobId()
+       */
+      public T jobId(String jobId) {
+         this.jobId = jobId;
+         return self();
+      }
+
+      /**
+       * @see ISO#getJobStatus()
+       */
+      public T jobStatus(String jobStatus) {
+         this.jobStatus = jobStatus;
+         return self();
+      }
+
+      /**
+       * @see ISO#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /**
+       * @see ISO#getOsTypeId()
+       */
+      public T osTypeId(String osTypeId) {
+         this.osTypeId = osTypeId;
+         return self();
+      }
+
+      /**
+       * @see ISO#getOsTypeName()
+       */
+      public T osTypeName(String osTypeName) {
+         this.osTypeName = osTypeName;
+         return self();
+      }
+
+      /**
+       * @see ISO#isPasswordEnabled()
+       */
+      public T passwordEnabled(boolean passwordEnabled) {
+         this.passwordEnabled = passwordEnabled;
+         return self();
+      }
+
+      /**
+       * @see ISO#getRemoved()
+       */
+      public T removed(Date removed) {
+         this.removed = removed;
+         return self();
+      }
+
+      /**
+       * @see ISO#getSize()
+       */
+      public T size(long size) {
+         this.size = size;
+         return self();
+      }
+
+      /**
+       * @see ISO#getSourceTemplateId()
+       */
+      public T sourceTemplateId(String sourceTemplateId) {
+         this.sourceTemplateId = sourceTemplateId;
+         return self();
+      }
+
+      /**
+       * @see ISO#getStatus()
+       */
+      public T status(String status) {
+         this.status = status;
+         return self();
+      }
+
+      /**
+       * @see ISO#getTemplateTag()
+       */
+      public T templateTag(String templateTag) {
+         this.templateTag = templateTag;
+         return self();
+      }
+
+      /**
+       * @see ISO#getTemplateType()
+       */
+      public T templateType(String templateType) {
+         this.templateType = templateType;
+         return self();
+      }
+
+      /**
+       * @see ISO#getZoneId()
+       */
+      public T zoneId(String zoneId) {
+         this.zoneId = zoneId;
+         return self();
+      }
+
+      /**
+       * @see ISO#getZoneName()
+       */
+      public T zoneName(String zoneName) {
+         this.zoneName = zoneName;
+         return self();
+      }
+
+      public ISO build() {
+         return new ISO(id, account, accountId, bootable, checksum, created, crossZones, displayText, domain, domainid,
+               format, hostId, hostName, hypervisor, isExtractable, isFeatured, isPublic, isReady, jobId, jobStatus, name,
+               osTypeId, osTypeName, passwordEnabled, removed, size, sourceTemplateId, status, templateTag, templateType,
+               zoneId, zoneName);
+      }
+
+      public T fromISO(ISO in) {
+         return this
+               .id(in.getId())
+               .account(in.getAccount())
+               .accountId(in.getAccountId())
+               .bootable(in.isBootable())
+               .checksum(in.getChecksum())
+               .created(in.getCreated())
+               .crossZones(in.isCrossZones())
+               .displayText(in.getDisplayText())
+               .domain(in.getDomain())
+               .domainid(in.getDomainid())
+               .format(in.getFormat())
+               .hostId(in.getHostId())
+               .hostName(in.getHostName())
+               .hypervisor(in.getHypervisor())
+               .isExtractable(in.isExtractable())
+               .isFeatured(in.isFeatured())
+               .isPublic(in.isPublic())
+               .isReady(in.isReady())
+               .jobId(in.getJobId())
+               .jobStatus(in.getJobStatus())
+               .name(in.getName())
+               .osTypeId(in.getOsTypeId())
+               .osTypeName(in.getOsTypeName())
+               .passwordEnabled(in.isPasswordEnabled())
+               .removed(in.getRemoved())
+               .size(in.getSize())
+               .sourceTemplateId(in.getSourceTemplateId())
+               .status(in.getStatus())
+               .templateTag(in.getTemplateTag())
+               .templateType(in.getTemplateType())
+               .zoneId(in.getZoneId())
+               .zoneName(in.getZoneName());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String account;
+   private final String accountId;
+   private final boolean bootable;
+   private final String checksum;
+   private final Date created;
+   private final boolean crossZones;
+   private final String displayText;
+   private final String domain;
+   private final String domainid;
+   private final String format;
+   private final String hostId;
+   private final String hostName;
+   private final String hypervisor;
+   private final boolean isExtractable;
+   private final boolean isFeatured;
+   private final boolean isPublic;
+   private final boolean isReady;
+   private final String jobId;
+   private final String jobStatus;
+   private final String name;
+   private final String osTypeId;
+   private final String osTypeName;
+   private final boolean passwordEnabled;
+   private final Date removed;
+   private final long size;
+   private final String sourceTemplateId;
+   private final String status;
+   private final String templateTag;
+   private final String templateType;
+   private final String zoneId;
+   private final String zoneName;
+
+   @ConstructorProperties({
+         "id", "account", "accountid", "bootable", "checksum", "created", "crossZones", "displaytext", "domain", "domainid", "format", "hostid", "hostname", "hypervisor", "isextractable", "isfeatured", "ispublic", "isready", "jobid", "jobstatus", "name", "ostypeid", "ostypename", "passwordenabled", "removed", "size", "sourcetemplateid", "status", "templatetag", "templatetype", "zoneid", "zonename"
+   })
+   protected ISO(String id, @Nullable String account, @Nullable String accountId, boolean bootable, @Nullable String checksum,
+                 @Nullable Date created, boolean crossZones, @Nullable String displayText, @Nullable String domain,
+                 @Nullable String domainid, @Nullable String format, @Nullable String hostId, @Nullable String hostName,
+                 @Nullable String hypervisor, boolean isExtractable, boolean isFeatured, boolean isPublic, boolean isReady,
+                 @Nullable String jobId, @Nullable String jobStatus, @Nullable String name, @Nullable String osTypeId,
+                 @Nullable String osTypeName, boolean passwordEnabled, @Nullable Date removed, long size, @Nullable String sourceTemplateId,
+                 @Nullable String status, @Nullable String templateTag, @Nullable String templateType, @Nullable String zoneId, @Nullable String zoneName) {
+      this.id = checkNotNull(id, "id");
+      this.account = account;
+      this.accountId = accountId;
+      this.bootable = bootable;
+      this.checksum = checksum;
+      this.created = created;
+      this.crossZones = crossZones;
+      this.displayText = displayText;
+      this.domain = domain;
+      this.domainid = domainid;
+      this.format = format;
+      this.hostId = hostId;
+      this.hostName = hostName;
+      this.hypervisor = hypervisor;
+      this.isExtractable = isExtractable;
+      this.isFeatured = isFeatured;
+      this.isPublic = isPublic;
+      this.isReady = isReady;
+      this.jobId = jobId;
+      this.jobStatus = jobStatus;
+      this.name = name;
+      this.osTypeId = osTypeId;
+      this.osTypeName = osTypeName;
+      this.passwordEnabled = passwordEnabled;
+      this.removed = removed;
+      this.size = size;
+      this.sourceTemplateId = sourceTemplateId;
+      this.status = status;
+      this.templateTag = templateTag;
+      this.templateType = templateType;
+      this.zoneId = zoneId;
+      this.zoneName = zoneName;
+   }
+
+   /**
+    * @return the template ID
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return the account name to which the template belongs
+    */
+   @Nullable
+   public String getAccount() {
+      return this.account;
+   }
+
+   /**
+    * @return the account id to which the template belongs
+    */
+   @Nullable
+   public String getAccountId() {
+      return this.accountId;
+   }
+
+   public boolean isBootable() {
+      return this.bootable;
+   }
+
+   /**
+    * @return checksum of the template
+    */
+   @Nullable
+   public String getChecksum() {
+      return this.checksum;
+   }
+
+   /**
+    * @return the date this template was created
+    */
+   @Nullable
+   public Date getCreated() {
+      return this.created;
+   }
+
+   public boolean isCrossZones() {
+      return this.crossZones;
+   }
+
+   /**
+    * @return the template display text
+    */
+   @Nullable
+   public String getDisplayText() {
+      return this.displayText;
+   }
+
+   /**
+    * @return the name of the domain to which the template belongs
+    */
+   @Nullable
+   public String getDomain() {
+      return this.domain;
+   }
+
+   /**
+    * @return the ID of the domain to which the template belongs
+    */
+   @Nullable
+   public String getDomainid() {
+      return this.domainid;
+   }
+
+   /**
+    * @return the format of the template.
+    */
+   @Nullable
+   public String getFormat() {
+      return this.format;
+   }
+
+   /**
+    * @return the ID of the secondary storage host for the template
+    */
+   @Nullable
+   public String getHostId() {
+      return this.hostId;
+   }
+
+   /**
+    * @return the name of the secondary storage host for the template
+    */
+   @Nullable
+   public String getHostName() {
+      return this.hostName;
+   }
+
+   /**
+    * @return the hypervisor on which the template runs
+    */
+   @Nullable
+   public String getHypervisor() {
+      return this.hypervisor;
+   }
+
+   public boolean isExtractable() {
+      return this.isExtractable;
+   }
+
+   public boolean isFeatured() {
+      return this.isFeatured;
+   }
+
+   public boolean isPublic() {
+      return this.isPublic;
+   }
+
+   public boolean isReady() {
+      return this.isReady;
+   }
+
+   /**
+    * @return shows the current pending asynchronous job ID. This tag is not returned if no current pending jobs are acting on the template
+    */
+   @Nullable
+   public String getJobId() {
+      return this.jobId;
+   }
+
+   /**
+    * @return shows the current pending asynchronous job status
+    */
+   @Nullable
+   public String getJobStatus() {
+      return this.jobStatus;
+   }
+
+   /**
+    * @return the template name
+    */
+   @Nullable
+   public String getName() {
+      return this.name;
+   }
+
+   /**
+    * @return the ID of the OS type for this template.
+    */
+   @Nullable
+   public String getOsTypeId() {
+      return this.osTypeId;
+   }
+
+   /**
+    * @return the name of the OS type for this template.
+    */
+   @Nullable
+   public String getOsTypeName() {
+      return this.osTypeName;
+   }
+
+   public boolean isPasswordEnabled() {
+      return this.passwordEnabled;
+   }
+
+   /**
+    * @return the date this template was removed
+    */
+   @Nullable
+   public Date getRemoved() {
+      return this.removed;
+   }
+
+   /**
+    * @return the size of the template
+    */
+   public long getSize() {
+      return this.size;
+   }
+
+   /**
+    * @return the template ID of the parent template if present
+    */
+   @Nullable
+   public String getSourceTemplateId() {
+      return this.sourceTemplateId;
+   }
+
+   /**
+    * @return the status of the template
+    */
+   @Nullable
+   public String getStatus() {
+      return this.status;
+   }
+
+   /**
+    * @return the tag of this template
+    */
+   @Nullable
+   public String getTemplateTag() {
+      return this.templateTag;
+   }
+
+   /**
+    * @return the type of the template
+    */
+   @Nullable
+   public String getTemplateType() {
+      return this.templateType;
+   }
+
+   /**
+    * @return the ID of the zone for this template
+    */
+   @Nullable
+   public String getZoneId() {
+      return this.zoneId;
+   }
+
+   /**
+    * @return the name of the zone for this template
+    */
+   @Nullable
+   public String getZoneName() {
+      return this.zoneName;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, account, accountId, bootable, checksum, created, crossZones, displayText, domain,
+            domainid, format, hostId, hostName, hypervisor, isExtractable, isFeatured, isPublic, isReady, jobId, jobStatus,
+            name, osTypeId, osTypeName, passwordEnabled, removed, size, sourceTemplateId, status, templateTag, templateType, zoneId, zoneName);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      ISO that = ISO.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+            && Objects.equal(this.account, that.account)
+            && Objects.equal(this.accountId, that.accountId)
+            && Objects.equal(this.bootable, that.bootable)
+            && Objects.equal(this.checksum, that.checksum)
+            && Objects.equal(this.created, that.created)
+            && Objects.equal(this.crossZones, that.crossZones)
+            && Objects.equal(this.displayText, that.displayText)
+            && Objects.equal(this.domain, that.domain)
+            && Objects.equal(this.domainid, that.domainid)
+            && Objects.equal(this.format, that.format)
+            && Objects.equal(this.hostId, that.hostId)
+            && Objects.equal(this.hostName, that.hostName)
+            && Objects.equal(this.hypervisor, that.hypervisor)
+            && Objects.equal(this.isExtractable, that.isExtractable)
+            && Objects.equal(this.isFeatured, that.isFeatured)
+            && Objects.equal(this.isPublic, that.isPublic)
+            && Objects.equal(this.isReady, that.isReady)
+            && Objects.equal(this.jobId, that.jobId)
+            && Objects.equal(this.jobStatus, that.jobStatus)
+            && Objects.equal(this.name, that.name)
+            && Objects.equal(this.osTypeId, that.osTypeId)
+            && Objects.equal(this.osTypeName, that.osTypeName)
+            && Objects.equal(this.passwordEnabled, that.passwordEnabled)
+            && Objects.equal(this.removed, that.removed)
+            && Objects.equal(this.size, that.size)
+            && Objects.equal(this.sourceTemplateId, that.sourceTemplateId)
+            && Objects.equal(this.status, that.status)
+            && Objects.equal(this.templateTag, that.templateTag)
+            && Objects.equal(this.templateType, that.templateType)
+            && Objects.equal(this.zoneId, that.zoneId)
+            && Objects.equal(this.zoneName, that.zoneName);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("id", id).add("account", account).add("accountId", accountId).add("bootable", bootable)
+            .add("checksum", checksum).add("created", created).add("crossZones", crossZones).add("displayText", displayText)
+            .add("domain", domain).add("domainid", domainid).add("format", format).add("hostId", hostId).add("hostName", hostName)
+            .add("hypervisor", hypervisor).add("isExtractable", isExtractable).add("isFeatured", isFeatured).add("isPublic", isPublic)
+            .add("isReady", isReady).add("jobId", jobId).add("jobStatus", jobStatus).add("name", name).add("osTypeId", osTypeId)
+            .add("osTypeName", osTypeName).add("passwordEnabled", passwordEnabled).add("removed", removed).add("size", size)
+            .add("sourceTemplateId", sourceTemplateId).add("status", status).add("templateTag", templateTag).add("templateType", templateType)
+            .add("zoneId", zoneId).add("zoneName", zoneName);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOExtraction.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOExtraction.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOExtraction.java
new file mode 100644
index 0000000..e6706e5
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOExtraction.java
@@ -0,0 +1,368 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+
+/**
+ * Class ISOExtraction
+ */
+public class ISOExtraction {
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromISOExtraction(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String id;
+      protected String accountId;
+      protected Date created;
+      protected String extractId;
+      protected ExtractMode extractMode;
+      protected String name;
+      protected String state;
+      protected String status;
+      protected String storageType;
+      protected int uploadPercentage;
+      protected String url;
+      protected String zoneId;
+      protected String zoneName;
+
+      /**
+       * @see ISOExtraction#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getAccountId()
+       */
+      public T accountId(String accountId) {
+         this.accountId = accountId;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getCreated()
+       */
+      public T created(Date created) {
+         this.created = created;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getExtractId()
+       */
+      public T extractId(String extractId) {
+         this.extractId = extractId;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getExtractMode()
+       */
+      public T extractMode(ExtractMode extractMode) {
+         this.extractMode = extractMode;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getState()
+       */
+      public T state(String state) {
+         this.state = state;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getStatus()
+       */
+      public T status(String status) {
+         this.status = status;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getStorageType()
+       */
+      public T storageType(String storageType) {
+         this.storageType = storageType;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getUploadPercentage()
+       */
+      public T uploadPercentage(int uploadPercentage) {
+         this.uploadPercentage = uploadPercentage;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getUrl()
+       */
+      public T url(String url) {
+         this.url = url;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getZoneId()
+       */
+      public T zoneId(String zoneId) {
+         this.zoneId = zoneId;
+         return self();
+      }
+
+      /**
+       * @see ISOExtraction#getZoneName()
+       */
+      public T zoneName(String zoneName) {
+         this.zoneName = zoneName;
+         return self();
+      }
+
+      public ISOExtraction build() {
+         return new ISOExtraction(id, accountId, created, extractId, extractMode, name, state, status, storageType, uploadPercentage, url, zoneId, zoneName);
+      }
+
+      public T fromISOExtraction(ISOExtraction in) {
+         return this
+               .id(in.getId())
+               .accountId(in.getAccountId())
+               .created(in.getCreated())
+               .extractId(in.getExtractId())
+               .extractMode(in.getExtractMode())
+               .name(in.getName())
+               .state(in.getState())
+               .status(in.getStatus())
+               .storageType(in.getStorageType())
+               .uploadPercentage(in.getUploadPercentage())
+               .url(in.getUrl())
+               .zoneId(in.getZoneId())
+               .zoneName(in.getZoneName());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String accountId;
+   private final Date created;
+   private final String extractId;
+   private final ExtractMode extractMode;
+   private final String name;
+   private final String state;
+   private final String status;
+   private final String storageType;
+   private final int uploadPercentage;
+   private final String url;
+   private final String zoneId;
+   private final String zoneName;
+
+   @ConstructorProperties({
+         "id", "accountid", "created", "extractId", "extractMode", "name", "state", "status", "storagetype", "uploadpercentage", "url", "zoneid", "zonename"
+   })
+   protected ISOExtraction(String id, @Nullable String accountId, @Nullable Date created, @Nullable String extractId,
+                           @Nullable ExtractMode extractMode, @Nullable String name, @Nullable String state, @Nullable String status,
+                           @Nullable String storageType, int uploadPercentage, @Nullable String url, @Nullable String zoneId,
+                           @Nullable String zoneName) {
+      this.id = checkNotNull(id, "id");
+      this.accountId = accountId;
+      this.created = created;
+      this.extractId = extractId;
+      this.extractMode = extractMode;
+      this.name = name;
+      this.state = state;
+      this.status = status;
+      this.storageType = storageType;
+      this.uploadPercentage = uploadPercentage;
+      this.url = url;
+      this.zoneId = zoneId;
+      this.zoneName = zoneName;
+   }
+
+   /**
+    * @return the id of extracted object
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return the account id to which the extracted object belongs
+    */
+   @Nullable
+   public String getAccountId() {
+      return this.accountId;
+   }
+
+   /**
+    * @return the time and date the object was created
+    */
+   @Nullable
+   public Date getCreated() {
+      return this.created;
+   }
+
+   /**
+    * @return the upload id of extracted object
+    */
+   @Nullable
+   public String getExtractId() {
+      return this.extractId;
+   }
+
+   /**
+    * @return the mode of extraction - upload or download
+    */
+   @Nullable
+   public ExtractMode getExtractMode() {
+      return this.extractMode;
+   }
+
+   /**
+    * @return the name of the extracted object
+    */
+   @Nullable
+   public String getName() {
+      return this.name;
+   }
+
+   /**
+    * @return the state of the extracted object
+    */
+   @Nullable
+   public String getState() {
+      return this.state;
+   }
+
+   /**
+    * @return the status of the extraction
+    */
+   @Nullable
+   public String getStatus() {
+      return this.status;
+   }
+
+   /**
+    * @return type of the storage
+    */
+   @Nullable
+   public String getStorageType() {
+      return this.storageType;
+   }
+
+   /**
+    * @return the percentage of the entity uploaded to the specified location
+    */
+   public int getUploadPercentage() {
+      return this.uploadPercentage;
+   }
+
+   /**
+    * @return if mode = upload then url of the uploaded entity. if mode = download the url from which the entity can be downloaded
+    */
+   @Nullable
+   public String getUrl() {
+      return this.url;
+   }
+
+   /**
+    * @return zone ID the object was extracted from
+    */
+   @Nullable
+   public String getZoneId() {
+      return this.zoneId;
+   }
+
+   /**
+    * @return zone name the object was extracted from
+    */
+   @Nullable
+   public String getZoneName() {
+      return this.zoneName;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, accountId, created, extractId, extractMode, name, state, status, storageType, uploadPercentage, url, zoneId, zoneName);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      ISOExtraction that = ISOExtraction.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+            && Objects.equal(this.accountId, that.accountId)
+            && Objects.equal(this.created, that.created)
+            && Objects.equal(this.extractId, that.extractId)
+            && Objects.equal(this.extractMode, that.extractMode)
+            && Objects.equal(this.name, that.name)
+            && Objects.equal(this.state, that.state)
+            && Objects.equal(this.status, that.status)
+            && Objects.equal(this.storageType, that.storageType)
+            && Objects.equal(this.uploadPercentage, that.uploadPercentage)
+            && Objects.equal(this.url, that.url)
+            && Objects.equal(this.zoneId, that.zoneId)
+            && Objects.equal(this.zoneName, that.zoneName);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("id", id).add("accountId", accountId).add("created", created).add("extractId", extractId).add("extractMode", extractMode)
+            .add("name", name).add("state", state).add("status", status).add("storageType", storageType).add("uploadPercentage", uploadPercentage)
+            .add("url", url).add("zoneId", zoneId).add("zoneName", zoneName);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOPermissions.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOPermissions.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOPermissions.java
new file mode 100644
index 0000000..b85e741
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/ISOPermissions.java
@@ -0,0 +1,178 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Class ISOPermissions
+ */
+public class ISOPermissions {
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromISOPermissions(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String id;
+      protected Set<String> accounts = ImmutableSet.of();
+      protected String domainId;
+      protected boolean isPublic;
+
+      /**
+       * @see ISOPermissions#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see ISOPermissions#getAccounts()
+       */
+      public T accounts(Set<String> accounts) {
+         this.accounts = ImmutableSet.copyOf(checkNotNull(accounts, "accounts"));
+         return self();
+      }
+
+      public T accounts(String... in) {
+         return accounts(ImmutableSet.copyOf(in));
+      }
+
+      /**
+       * @see ISOPermissions#getDomainId()
+       */
+      public T domainId(String domainId) {
+         this.domainId = domainId;
+         return self();
+      }
+
+      /**
+       * @see ISOPermissions#isPublic()
+       */
+      public T isPublic(boolean isPublic) {
+         this.isPublic = isPublic;
+         return self();
+      }
+
+      public ISOPermissions build() {
+         return new ISOPermissions(id, accounts, domainId, isPublic);
+      }
+
+      public T fromISOPermissions(ISOPermissions in) {
+         return this
+               .id(in.getId())
+               .accounts(in.getAccounts())
+               .domainId(in.getDomainId())
+               .isPublic(in.isPublic());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final Set<String> accounts;
+   private final String domainId;
+   private final boolean isPublic;
+
+   @ConstructorProperties({
+         "id", "account", "domainid", "ispublic"
+   })
+   protected ISOPermissions(String id, @Nullable Set<String> accounts, @Nullable String domainId, boolean isPublic) {
+      this.id = checkNotNull(id, "id");
+      this.accounts = accounts == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(accounts);
+      this.domainId = domainId;
+      this.isPublic = isPublic;
+   }
+
+   /**
+    * @return the template ID
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return the list of accounts the template is available for
+    */
+   public Set<String> getAccounts() {
+      return this.accounts;
+   }
+
+   /**
+    * @return the ID of the domain to which the template belongs
+    */
+   @Nullable
+   public String getDomainId() {
+      return this.domainId;
+   }
+
+   /**
+    * @return true if this template is a public template, false otherwise
+    */
+   public boolean isPublic() {
+      return this.isPublic;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, accounts, domainId, isPublic);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      ISOPermissions that = ISOPermissions.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+            && Objects.equal(this.accounts, that.accounts)
+            && Objects.equal(this.domainId, that.domainId)
+            && Objects.equal(this.isPublic, that.isPublic);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("id", id).add("accounts", accounts).add("domainId", domainId).add("isPublic", isPublic);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IngressRule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IngressRule.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IngressRule.java
new file mode 100644
index 0000000..efb5ff9
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/IngressRule.java
@@ -0,0 +1,278 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+
+public class IngressRule implements Comparable<IngressRule> {
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromIngressRule(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String account;
+      protected String CIDR;
+      protected int endPort;
+      protected int ICMPCode;
+      protected int ICMPType;
+      protected String protocol;
+      protected String id;
+      protected String securityGroupName;
+      protected int startPort;
+
+      /**
+       * @see IngressRule#getAccount()
+       */
+      public T account(String account) {
+         this.account = account;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getCIDR()
+       */
+      public T CIDR(String CIDR) {
+         this.CIDR = CIDR;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getEndPort()
+       */
+      public T endPort(int endPort) {
+         this.endPort = endPort;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getICMPCode()
+       */
+      public T ICMPCode(int ICMPCode) {
+         this.ICMPCode = ICMPCode;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getICMPType()
+       */
+      public T ICMPType(int ICMPType) {
+         this.ICMPType = ICMPType;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getProtocol()
+       */
+      public T protocol(String protocol) {
+         this.protocol = protocol;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getSecurityGroupName()
+       */
+      public T securityGroupName(String securityGroupName) {
+         this.securityGroupName = securityGroupName;
+         return self();
+      }
+
+      /**
+       * @see IngressRule#getStartPort()
+       */
+      public T startPort(int startPort) {
+         this.startPort = startPort;
+         return self();
+      }
+
+      public IngressRule build() {
+         return new IngressRule(account, CIDR, endPort, ICMPCode, ICMPType, protocol, id, securityGroupName, startPort);
+      }
+
+      public T fromIngressRule(IngressRule in) {
+         return this
+               .account(in.getAccount())
+               .CIDR(in.getCIDR())
+               .endPort(in.getEndPort())
+               .ICMPCode(in.getICMPCode())
+               .ICMPType(in.getICMPType())
+               .protocol(in.getProtocol())
+               .id(in.getId())
+               .securityGroupName(in.getSecurityGroupName())
+               .startPort(in.getStartPort());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String account;
+   private final String CIDR;
+   private final int endPort;
+   private final int ICMPCode;
+   private final int ICMPType;
+   private final String protocol;
+   private final String id;
+   private final String securityGroupName;
+   private final int startPort;
+
+   @ConstructorProperties({
+         "account", "cidr", "endport", "icmpcode", "icmptype", "protocol", "ruleid", "securitygroupname", "startport"
+   })
+   protected IngressRule(@Nullable String account, @Nullable String CIDR, int endPort, int ICMPCode, int ICMPType,
+                         @Nullable String protocol, String id, @Nullable String securityGroupName, int startPort) {
+      this.account = account;
+      this.CIDR = CIDR;
+      this.endPort = endPort;
+      this.ICMPCode = ICMPCode;
+      this.ICMPType = ICMPType;
+      this.protocol = protocol;
+      this.id = checkNotNull(id, "id");
+      this.securityGroupName = securityGroupName;
+      this.startPort = startPort;
+   }
+
+   /**
+    * @return account owning the ingress rule
+    */
+   @Nullable
+   public String getAccount() {
+      return this.account;
+   }
+
+   /**
+    * @return the CIDR notation for the base IP address of the ingress rule
+    */
+   @Nullable
+   public String getCIDR() {
+      return this.CIDR;
+   }
+
+   /**
+    * @return the ending IP of the ingress rule
+    */
+   public int getEndPort() {
+      return this.endPort;
+   }
+
+   /**
+    * @return the code for the ICMP message response
+    */
+   public int getICMPCode() {
+      return this.ICMPCode;
+   }
+
+   /**
+    * @return the type of the ICMP message response
+    */
+   public int getICMPType() {
+      return this.ICMPType;
+   }
+
+   /**
+    * @return the protocol of the ingress rule
+    */
+   @Nullable
+   public String getProtocol() {
+      return this.protocol;
+   }
+
+   /**
+    * @return the id of the ingress rule
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return security group name
+    */
+   @Nullable
+   public String getSecurityGroupName() {
+      return this.securityGroupName;
+   }
+
+   /**
+    * @return the starting IP of the ingress rule
+    */
+   public int getStartPort() {
+      return this.startPort;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(account, CIDR, endPort, ICMPCode, ICMPType, protocol, id, securityGroupName, startPort);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      IngressRule that = IngressRule.class.cast(obj);
+      return Objects.equal(this.account, that.account)
+            && Objects.equal(this.CIDR, that.CIDR)
+            && Objects.equal(this.endPort, that.endPort)
+            && Objects.equal(this.ICMPCode, that.ICMPCode)
+            && Objects.equal(this.ICMPType, that.ICMPType)
+            && Objects.equal(this.protocol, that.protocol)
+            && Objects.equal(this.id, that.id)
+            && Objects.equal(this.securityGroupName, that.securityGroupName)
+            && Objects.equal(this.startPort, that.startPort);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("account", account).add("CIDR", CIDR).add("endPort", endPort).add("ICMPCode", ICMPCode)
+            .add("ICMPType", ICMPType).add("protocol", protocol).add("id", id).add("securityGroupName", securityGroupName).add("startPort", startPort);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   @Override
+   public int compareTo(IngressRule o) {
+      return id.compareTo(o.getId());
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/JobResult.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/JobResult.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/JobResult.java
new file mode 100644
index 0000000..7df671e
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/JobResult.java
@@ -0,0 +1,126 @@
+/*
+ * 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.cloudstack.domain;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+
+/**
+ * The result of an operation.
+ * <p/>
+ * A handful of Cloudstack API calls return this structure when there is no domain model data to return - for example,
+ * when deleting an object.
+ */
+public class JobResult {
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromJobResult(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected boolean success;
+      protected String displayText;
+
+      /**
+       * @see JobResult#isSuccess()
+       */
+      public T success(boolean success) {
+         this.success = success;
+         return self();
+      }
+
+      /**
+       * @see JobResult#getDisplayText()
+       */
+      public T displayText(String displayText) {
+         this.displayText = displayText;
+         return self();
+      }
+
+      public JobResult build() {
+         return new JobResult(success, displayText);
+      }
+
+      public T fromJobResult(JobResult in) {
+         return this
+               .success(in.isSuccess())
+               .displayText(in.getDisplayText());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final boolean success;
+   private final String displayText;
+
+   @ConstructorProperties({
+         "success", "displaytext"
+   })
+   protected JobResult(boolean success, @Nullable String displayText) {
+      this.success = success;
+      this.displayText = displayText;
+   }
+
+   public boolean isSuccess() {
+      return this.success;
+   }
+
+   @Nullable
+   public String getDisplayText() {
+      return this.displayText;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(success, displayText);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      JobResult that = JobResult.class.cast(obj);
+      return Objects.equal(this.success, that.success)
+            && Objects.equal(this.displayText, that.displayText);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("success", success).add("displayText", displayText);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/LoadBalancerRule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/LoadBalancerRule.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/LoadBalancerRule.java
new file mode 100644
index 0000000..d0e9f10
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/domain/LoadBalancerRule.java
@@ -0,0 +1,444 @@
+/*
+ * 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.cloudstack.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.CaseFormat;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Class LoadBalancerRule
+ */
+public class LoadBalancerRule {
+
+   /**
+    */
+   public static enum State {
+      ADD, ACTIVE, UNRECOGNIZED;
+
+      @Override
+      public String toString() {
+         return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name());
+      }
+
+      public static State fromValue(String state) {
+         try {
+            return valueOf(CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(state, "state")));
+         } catch (IllegalArgumentException e) {
+            return UNRECOGNIZED;
+         }
+      }
+
+   }
+
+   public static enum Algorithm {
+      SOURCE, ROUNDROBIN, LEASTCONN, UNRECOGNIZED;
+
+      @Override
+      public String toString() {
+         return name().toLowerCase();
+      }
+
+      public static Algorithm fromValue(String algorithm) {
+         try {
+            return Algorithm.valueOf(checkNotNull(algorithm, "algorithm").toUpperCase());
+         } catch (IllegalArgumentException e) {
+            return UNRECOGNIZED;
+         }
+      }
+
+   }
+
+   public static Builder<?> builder() {
+      return new ConcreteBuilder();
+   }
+
+   public Builder<?> toBuilder() {
+      return new ConcreteBuilder().fromLoadBalancerRule(this);
+   }
+
+   public abstract static class Builder<T extends Builder<T>> {
+      protected abstract T self();
+
+      protected String id;
+      protected String account;
+      protected LoadBalancerRule.Algorithm algorithm;
+      protected String description;
+      protected String domain;
+      protected String domainId;
+      protected String name;
+      protected int privatePort;
+      protected String publicIP;
+      protected String publicIPId;
+      protected int publicPort;
+      protected LoadBalancerRule.State state;
+      protected Set<String> CIDRs = ImmutableSet.of();
+      protected String zoneId;
+
+      /**
+       * @see LoadBalancerRule#getId()
+       */
+      public T id(String id) {
+         this.id = id;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getAccount()
+       */
+      public T account(String account) {
+         this.account = account;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getAlgorithm()
+       */
+      public T algorithm(LoadBalancerRule.Algorithm algorithm) {
+         this.algorithm = algorithm;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getDescription()
+       */
+      public T description(String description) {
+         this.description = description;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getDomain()
+       */
+      public T domain(String domain) {
+         this.domain = domain;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getDomainId()
+       */
+      public T domainId(String domainId) {
+         this.domainId = domainId;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getName()
+       */
+      public T name(String name) {
+         this.name = name;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getPrivatePort()
+       */
+      public T privatePort(int privatePort) {
+         this.privatePort = privatePort;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getPublicIP()
+       */
+      public T publicIP(String publicIP) {
+         this.publicIP = publicIP;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getPublicIPId()
+       */
+      public T publicIPId(String publicIPId) {
+         this.publicIPId = publicIPId;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getPublicPort()
+       */
+      public T publicPort(int publicPort) {
+         this.publicPort = publicPort;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getState()
+       */
+      public T state(LoadBalancerRule.State state) {
+         this.state = state;
+         return self();
+      }
+
+      /**
+       * @see LoadBalancerRule#getCIDRs()
+       */
+      public T CIDRs(Set<String> CIDRs) {
+         this.CIDRs = ImmutableSet.copyOf(checkNotNull(CIDRs, "CIDRs"));
+         return self();
+      }
+
+      public T CIDRs(String... in) {
+         return CIDRs(ImmutableSet.copyOf(in));
+      }
+
+      /**
+       * @see LoadBalancerRule#getZoneId()
+       */
+      public T zoneId(String zoneId) {
+         this.zoneId = zoneId;
+         return self();
+      }
+
+      public LoadBalancerRule build() {
+         return new LoadBalancerRule(id, account, algorithm, description, domain, domainId, name, privatePort, publicIP, publicIPId, publicPort, state, CIDRs, zoneId);
+      }
+
+      public T fromLoadBalancerRule(LoadBalancerRule in) {
+         return this
+               .id(in.getId())
+               .account(in.getAccount())
+               .algorithm(in.getAlgorithm())
+               .description(in.getDescription())
+               .domain(in.getDomain())
+               .domainId(in.getDomainId())
+               .name(in.getName())
+               .privatePort(in.getPrivatePort())
+               .publicIP(in.getPublicIP())
+               .publicIPId(in.getPublicIPId())
+               .publicPort(in.getPublicPort())
+               .state(in.getState())
+               .CIDRs(in.getCIDRs())
+               .zoneId(in.getZoneId());
+      }
+   }
+
+   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
+      @Override
+      protected ConcreteBuilder self() {
+         return this;
+      }
+   }
+
+   private final String id;
+   private final String account;
+   private final LoadBalancerRule.Algorithm algorithm;
+   private final String description;
+   private final String domain;
+   private final String domainId;
+   private final String name;
+   private final int privatePort;
+   private final String publicIP;
+   private final String publicIPId;
+   private final int publicPort;
+   private final LoadBalancerRule.State state;
+   private final Set<String> CIDRs;
+   private final String zoneId;
+
+
+   @ConstructorProperties({
+         "id", "account", "algorithm", "description", "domain", "domainid", "name", "privateport", "publicip",
+         "publicipid", "publicport", "state", "cidrlist", "zoneId"
+   })
+   private LoadBalancerRule(String id, @Nullable String account, @Nullable Algorithm algorithm,
+                            @Nullable String description, @Nullable String domain, @Nullable String domainId,
+                            @Nullable String name, int privatePort, @Nullable String publicIP,
+                            @Nullable String publicIPId, int publicPort, @Nullable State state,
+                            @Nullable String CIDRs, @Nullable String zoneId) {
+      this(id, account, algorithm, description, domain, domainId, name, privatePort, publicIP, publicIPId, publicPort, state,
+            splitStringOnCommas(CIDRs), zoneId);
+   }
+
+   private static Set<String> splitStringOnCommas(String in) {
+      return in == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(in.split(","));
+   }
+
+   protected LoadBalancerRule(String id, @Nullable String account, @Nullable LoadBalancerRule.Algorithm algorithm,
+                              @Nullable String description, @Nullable String domain, @Nullable String domainId, @Nullable String name,
+                              int privatePort, @Nullable String publicIP, @Nullable String publicIPId, int publicPort,
+                              @Nullable LoadBalancerRule.State state, @Nullable Iterable<String> CIDRs, @Nullable String zoneId) {
+      this.id = checkNotNull(id, "id");
+      this.account = account;
+      this.algorithm = algorithm;
+      this.description = description;
+      this.domain = domain;
+      this.domainId = domainId;
+      this.name = name;
+      this.privatePort = privatePort;
+      this.publicIP = publicIP;
+      this.publicIPId = publicIPId;
+      this.publicPort = publicPort;
+      this.state = state;
+      this.CIDRs = CIDRs == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(CIDRs);
+      this.zoneId = zoneId;
+   }
+
+   /**
+    * @return the load balancer rule ID
+    */
+   public String getId() {
+      return this.id;
+   }
+
+   /**
+    * @return the account of the load balancer rule
+    */
+   @Nullable
+   public String getAccount() {
+      return this.account;
+   }
+
+   /**
+    * @return the load balancer algorithm (source, roundrobin, leastconn)
+    */
+   @Nullable
+   public LoadBalancerRule.Algorithm getAlgorithm() {
+      return this.algorithm;
+   }
+
+   /**
+    * @return the description of the load balancer
+    */
+   @Nullable
+   public String getDescription() {
+      return this.description;
+   }
+
+   /**
+    * @return the domain of the load balancer rule
+    */
+   @Nullable
+   public String getDomain() {
+      return this.domain;
+   }
+
+   /**
+    * @return the domain ID of the load balancer rule
+    */
+   @Nullable
+   public String getDomainId() {
+      return this.domainId;
+   }
+
+   /**
+    * @return the name of the load balancer
+    */
+   @Nullable
+   public String getName() {
+      return this.name;
+   }
+
+   /**
+    * @return the private port
+    */
+   public int getPrivatePort() {
+      return this.privatePort;
+   }
+
+   /**
+    * @return the public ip address
+    */
+   @Nullable
+   public String getPublicIP() {
+      return this.publicIP;
+   }
+
+   /**
+    * @return the public ip address id
+    */
+   @Nullable
+   public String getPublicIPId() {
+      return this.publicIPId;
+   }
+
+   /**
+    * @return the public port
+    */
+   public int getPublicPort() {
+      return this.publicPort;
+   }
+
+   /**
+    * @return the state of the rule
+    */
+   @Nullable
+   public LoadBalancerRule.State getState() {
+      return this.state;
+   }
+
+   /**
+    * @return the cidr list to forward traffic from
+    */
+   public Set<String> getCIDRs() {
+      return this.CIDRs;
+   }
+
+   /**
+    * @return the id of the zone the rule beStrings to
+    */
+   @Nullable
+   public String getZoneId() {
+      return this.zoneId;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, account, algorithm, description, domain, domainId, name, privatePort, publicIP, publicIPId, publicPort, state, CIDRs, zoneId);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj) return true;
+      if (obj == null || getClass() != obj.getClass()) return false;
+      LoadBalancerRule that = LoadBalancerRule.class.cast(obj);
+      return Objects.equal(this.id, that.id)
+            && Objects.equal(this.account, that.account)
+            && Objects.equal(this.algorithm, that.algorithm)
+            && Objects.equal(this.description, that.description)
+            && Objects.equal(this.domain, that.domain)
+            && Objects.equal(this.domainId, that.domainId)
+            && Objects.equal(this.name, that.name)
+            && Objects.equal(this.privatePort, that.privatePort)
+            && Objects.equal(this.publicIP, that.publicIP)
+            && Objects.equal(this.publicIPId, that.publicIPId)
+            && Objects.equal(this.publicPort, that.publicPort)
+            && Objects.equal(this.state, that.state)
+            && Objects.equal(this.CIDRs, that.CIDRs)
+            && Objects.equal(this.zoneId, that.zoneId);
+   }
+
+   protected ToStringHelper string() {
+      return MoreObjects.toStringHelper(this)
+            .add("id", id).add("account", account).add("algorithm", algorithm).add("description", description).add("domain", domain).add("domainId", domainId).add("name", name).add("privatePort", privatePort).add("publicIP", publicIP).add("publicIPId", publicIPId).add("publicPort", publicPort).add("state", state).add("CIDRs", CIDRs).add("zoneId", zoneId);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}