You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/08/20 11:35:59 UTC

[13/51] [abbrv] [partial] stratos git commit: Revert "Upgrading to jclouds 1.9.1"

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
new file mode 100644
index 0000000..82585d6
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
@@ -0,0 +1,72 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.TaskImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * Whenever the result of a request cannot be returned immediately, the server creates a Task
+ * object. Tasks owned by an object such as a vApp or vDC are contained in the Tasks element of the
+ * object’s XML representation. This element is read‐only.
+ */
+@ImplementedBy(TaskImpl.class)
+public interface Task extends ReferenceType {
+   /**
+    * The current status of the task.
+    */
+   String getOperation();
+
+   /**
+    * The current status of the task.
+    */
+   TaskStatus getStatus();
+
+   /**
+    * date and time when the task was started.
+    */
+   Date getStartTime();
+
+   /**
+    * date and time when the task completed. Does not appear for running tasks.
+    */
+   Date getEndTime();
+
+   /**
+    * date and time at which the task expires. By default, tasks expire 24 hours after their start
+    * time. Expired tasks cannot be queried.
+    */
+   Date getExpiryTime();
+
+   /**
+    * A link to the object that owns the task. For copy operations, the owner is the copy that is
+    * being created. For delete operations, the owner is the deleted object, so this element is not
+    * included. For all other operations, the owner is the object to which the request was made.
+    */
+   ReferenceType getOwner();
+
+   /**
+    * error message or related information returned by the task
+    */
+   @Nullable
+   VCloudError getError();
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
new file mode 100644
index 0000000..68ee690
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
@@ -0,0 +1,68 @@
+/*
+ * 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.vcloud.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+public enum TaskStatus {
+   /**
+    * The task has completed and returned a value indicating success.
+    */
+   SUCCESS,
+   /**
+    * The task is running.
+    */
+   RUNNING,
+
+   /**
+    * The task has been queued for execution.
+    */
+   QUEUED,
+   /**
+    * The task has completed and returned a value indicating an error.
+    */
+   ERROR,
+   /**
+    * not an official status, temporarily in.
+    */
+   CANCELLED, UNRECOGNIZED;
+   public String value() {
+      return name().toLowerCase();
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static TaskStatus fromValue(String status) {
+      if ("CANCELED".equals(status.toUpperCase())) {
+         // TODO: ecloud hack
+         status = "CANCELLED";
+      } else if ("FAILED".equals(status.toUpperCase())) {
+         status = "ERROR";
+      } else if ("COMPLETED".equals(status.toUpperCase())) {
+         status = "SUCCESS";
+      }
+      try {
+         return valueOf(checkNotNull(status, "status").toUpperCase());
+      } catch (IllegalArgumentException e) {
+         return UNRECOGNIZED;
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
new file mode 100644
index 0000000..6405054
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
@@ -0,0 +1,34 @@
+/*
+ * 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.vcloud.domain;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.jclouds.vcloud.domain.internal.TasksListImpl;
+
+import com.google.inject.ImplementedBy;
+
+@org.jclouds.vcloud.endpoints.TasksList
+@ImplementedBy(TasksListImpl.class)
+public interface TasksList {
+
+   URI getLocation();
+
+   SortedSet<Task> getTasks();
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VApp.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VApp.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VApp.java
new file mode 100644
index 0000000..98efea2
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VApp.java
@@ -0,0 +1,85 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.List;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.ovf.VCloudNetworkSection;
+
+/**
+ * A VApp is the result of instantiation of a {@link VAppTemplate}. <h2>note</h2>
+ * <p/>
+ * When the {@link #getStatus} is {@link Status#UNRESOLVED}, there will be a task present for the
+ * instantiation of the VApp.
+ */
+public interface VApp extends ReferenceType {
+   /**
+    * Reference to the vdc containing this vApp.
+    * 
+    * @since vcloud api 1.0
+    * @return vdc, or null if this is a version before 1.0 where the org isn't present
+    */
+   ReferenceType getVDC();
+
+   /**
+    * The creation status of the vDC
+    * 
+    * @since vcloud api 1.0
+    */
+   Status getStatus();
+
+   /**
+    * optional description
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   String getDescription();
+
+   /**
+    * 
+    * @return true if the OVF descriptor for the template has been uploaded to the containing vDC.
+    * @since vcloud api 1.0
+    */
+   boolean isOvfDescriptorUploaded();
+
+   /**
+    * read‐only container for Task elements. Each element in the container represents a queued,
+    * running, or failed task owned by this object.
+    * 
+    * @since vcloud api 1.0
+    */
+   List<Task> getTasks();
+
+   /**
+    * container for Vm elements representing virtual machines
+    * 
+    * @since vcloud api 1.0
+    */
+   Set<Vm> getChildren();
+
+   /**
+    * description of the predefined vApp internal networks in this template
+    * 
+    * @return null if the vApp is not yet instantiated
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   VCloudNetworkSection getNetworkSection();
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VAppTemplate.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VAppTemplate.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VAppTemplate.java
new file mode 100644
index 0000000..8fdd6fb
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VAppTemplate.java
@@ -0,0 +1,95 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.List;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.VAppTemplateImpl;
+import org.jclouds.vcloud.domain.ovf.VCloudNetworkSection;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A VAppTemplate is an abstract description of a vApp. It is created when you upload an OVF package
+ * to a vDC.
+ */
+@ImplementedBy(VAppTemplateImpl.class)
+public interface VAppTemplate extends ReferenceType {
+   /**
+    * Reference to the VDC containing this template.
+    * 
+    * @since vcloud api 1.0
+    * @return org, or null if this is a version before 1.0 where the vdc isn't present
+    */
+   ReferenceType getVDC();
+
+   /**
+    * @return creation status of the VAppTemplate.
+    * 
+    * @since vcloud api 1.0
+    */
+   Status getStatus();
+
+   /**
+    * optional description
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   String getDescription();
+
+   /**
+    * read-only container for Task elements. Each element in the container represents a queued,
+    * running, or failed task owned by this object.
+    * 
+    * @since vcloud api 1.0
+    */
+   List<Task> getTasks();
+
+   /**
+    * 
+    * @return true if the OVF descriptor for the template has been uploaded to the containing vDC.
+    * @since vcloud api 1.0
+    */
+   boolean isOvfDescriptorUploaded();
+
+   /**
+    * read-only identifier created on import
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   String getVAppScopedLocalId();
+
+   /**
+    * container for Vm elements representing virtual machines
+    * 
+    * @since vcloud api 1.0
+    */
+   Set<Vm> getChildren();
+
+   /**
+    * description of the predefined vApp internal networks in this template
+    * 
+    * @return null if the vAppTemplate is still copying
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   VCloudNetworkSection getNetworkSection();
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudError.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudError.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudError.java
new file mode 100644
index 0000000..3fa88b6
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudError.java
@@ -0,0 +1,118 @@
+/*
+ * 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.vcloud.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.ErrorImpl;
+
+import com.google.inject.ImplementedBy;
+
+@ImplementedBy(ErrorImpl.class)
+public interface VCloudError {
+   public static enum MinorCode {
+      /**
+       * The request was made by a user who had insufficient rights to the object or operation.
+       */
+      ACCESS_TO_RESOURCE_IS_FORBIDDEN,
+      /**
+       * The request could not be validated or contained invalid XML.
+       */
+      BAD_REQUEST,
+      /**
+       * A conflict was detected between sections of an OVF descriptor.
+       */
+      CONFLICT,
+      /**
+       * The entity is busy
+       */
+      BUSY_ENTITY,
+      /**
+       * An attempt to instantiate a vAppTemplate or use a vAppTemplate or a Vm in a composition did
+       * not include an AllEULAsAccepted element with a value of true.
+       */
+      EULA_NOT_ACCEPTED,
+      /**
+       * Returned for any failure that cannot be matched to another minor error code.
+       */
+      INTERNAL_SERVER_ERROR,
+      /**
+       * One or more references (href attribute values) supplied in the request could not be
+       * resolved to an object.
+       */
+      INVALID_REFERENCE,
+      /**
+       * The HTTP method (GET, PUT, POST, DELETE) is not allowed for the request.
+       */
+      METHOD_NOT_ALLOWED,
+      /**
+       * One or more references (href attribute values) supplied in the request could not be
+       * resolved to an object, or the Content‐type of the request was incorrect.
+       */
+      RESOURCE_NOT_FOUND,
+      /**
+       * The request raised an exception that did not match any HTTP status code.
+       */
+      UNKNOWN,
+      /**
+       * The wrong content type was specified for the request.
+       */
+      UNSUPPORTED_MEDIA_TYPE, UNRECOGNIZED;
+
+      public static MinorCode fromValue(String minorCode) {
+         try {
+            return valueOf(checkNotNull(minorCode, "minorCode"));
+         } catch (IllegalArgumentException e) {
+            return UNRECOGNIZED;
+         }
+      }
+   }
+
+   /**
+    * 
+    * @return message describing the error
+    */
+   String getMessage();
+
+   /**
+    * 
+    * @return matches the HTTP status code
+    */
+   int getMajorErrorCode();
+
+   /**
+    * 
+    * @return error code specific to the failed operation or null if vcloud <0.9
+    */
+   @Nullable
+   MinorCode getMinorErrorCode();
+
+   /**
+    * 
+    * @return optional additional information about the source of the error
+    */
+   @Nullable
+   String getVendorSpecificErrorCode();
+
+   /**
+    * 
+    * @return stack trace of the error, if available. This attribute is returned only when a request
+    *         is made by the system administrator.
+    */
+   String getStackTrace();
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudSession.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudSession.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudSession.java
new file mode 100644
index 0000000..01acd91
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VCloudSession.java
@@ -0,0 +1,25 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.Map;
+
+public interface VCloudSession {
+   String getVCloudToken();
+
+   Map<String, ReferenceType> getOrgs();
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDC.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDC.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDC.java
new file mode 100644
index 0000000..c741d26
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDC.java
@@ -0,0 +1,144 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.VDCImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A vDC is a deployment environment for vApps. A Vdc element provides a user view of a vDC.
+ */
+@org.jclouds.vcloud.endpoints.VDC
+@ImplementedBy(VDCImpl.class)
+public interface VDC extends ReferenceType {
+   /**
+    * Reference to the org containing this vDC.
+    * 
+    * @since vcloud api 1.0
+    * @return org, or null if this is a version before 1.0 where the org isn't present
+    */
+   ReferenceType getOrg();
+
+   /**
+    * The creation status of the vDC
+    * 
+    * @since vcloud api 1.0
+    */
+   VDCStatus getStatus();
+
+   /**
+    * optional description
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   String getDescription();
+
+   /**
+    * read‐only container for Task elements. Each element in the container represents a queued,
+    * running, or failed task owned by this object.
+    * 
+    * @since vcloud api 1.0
+    */
+   List<Task> getTasks();
+
+   /**
+    * defines how resources are allocated by the vDC. The value of this element is set by the
+    * administrator who created the vDC. It is read‐only to users.
+    * 
+    * @since vcloud api 1.0
+    */
+   AllocationModel getAllocationModel();
+
+   /**
+    * defines the storage capacity available in the vDC
+    * 
+    * @since vcloud api 0.8
+    * @return null if the provider doesn't support storage capacity
+    */
+   @Nullable
+   Capacity getStorageCapacity();
+
+   /**
+    * reports CPU resource consumption in a vDC
+    * 
+    * @since vcloud api 0.8
+    * @return null if the provider doesn't support cpu capacity
+    */
+   @Nullable
+   Capacity getCpuCapacity();
+
+   /**
+    * reports memory resource consumption in a vDC
+    * 
+    * @since vcloud api 0.8
+    * @return null if the provider doesn't support memory capacity
+    */
+   @Nullable
+   Capacity getMemoryCapacity();
+
+   /**
+    * container for ResourceEntity elements
+    * 
+    * @since vcloud api 0.8
+    */
+   Map<String, ReferenceType> getResourceEntities();
+
+   /**
+    * container for OrgNetwork elements that represent organization networks contained by the vDC
+    * 
+    * @since vcloud api 0.8
+    */
+   Map<String, ReferenceType> getAvailableNetworks();
+
+   /**
+    * maximum number of virtual NICs allowed in this vDC. Defaults to 0, which specifies an
+    * unlimited number.
+    * 
+    * @since vcloud api 1.0
+    */
+   int getNicQuota();
+
+   /**
+    * maximum number of OrgNetwork objects that can be deployed in this vDC. Defaults to 0, which
+    * specifies an unlimited number.
+    * 
+    * @since vcloud api 1.0
+    */
+   int getNetworkQuota();
+
+   /**
+    * maximum number of virtual machines that can be deployed in this vDC. Defaults to 0, which
+    * specifies an unlimited number.
+    * 
+    * @since vcloud api 0.8
+    */
+   int getVmQuota();
+
+   /**
+    * true if this vDC is enabled
+    * 
+    * @since vcloud api 1.0
+    */
+   boolean isEnabled();
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDCStatus.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDCStatus.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDCStatus.java
new file mode 100644
index 0000000..81b25d9
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/VDCStatus.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.vcloud.domain;
+
+/**
+ * The creation status of the vDC
+ * 
+ * @see VDC#getStatus
+ */
+public enum VDCStatus {
+
+   CREATION_FAILED, NOT_READY, READY, UNKNOWN, UNRECOGNIZED;
+
+   public int value() {
+      switch (this) {
+         case CREATION_FAILED:
+            return -1;
+         case NOT_READY:
+            return 0;
+         case READY:
+            return 1;
+         case UNKNOWN:
+            return 2;
+         default:
+            return 3;
+      }
+   }
+
+   public static VDCStatus fromValue(int status) {
+      switch (status) {
+         case -1:
+            return CREATION_FAILED;
+         case 0:
+            return NOT_READY;
+         case 1:
+            return READY;
+         case 2:
+            return UNKNOWN;
+         default:
+            return UNRECOGNIZED;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Vm.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Vm.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Vm.java
new file mode 100644
index 0000000..79657b1
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/Vm.java
@@ -0,0 +1,106 @@
+/*
+ * 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.vcloud.domain;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.VmImpl;
+import org.jclouds.vcloud.domain.ovf.VCloudOperatingSystemSection;
+import org.jclouds.vcloud.domain.ovf.VCloudVirtualHardwareSection;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A Vm represents a virtual machine, a member of a vApp’s Children container. <h2>note</h2>
+ * <p/>
+ * When the {@link #getStatus} is {@link Status#UNRESOLVED}, there will be a task present for the
+ * instantiation of the VApp.
+ */
+@ImplementedBy(VmImpl.class)
+public interface Vm extends ReferenceType {
+   /**
+    * Reference to the {@link VApp} or {@link VAppTemplate} containing this vm.
+    * 
+    * @since vcloud api 1.0
+    */
+   ReferenceType getParent();
+
+   /**
+    * @return creation status of the Vm or null, if a part of a VAppTemplate
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   Status getStatus();
+
+   /**
+    * optional description
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   String getDescription();
+
+   /**
+    * read‐only container for Task elements. Each element in the container represents a queued,
+    * running, or failed task owned by this object.
+    * 
+    * @since vcloud api 1.0
+    */
+   List<Task> getTasks();
+
+   /**
+    * @return virtual hardware that comprises this VM, or null, if part of a vApp template
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   VCloudVirtualHardwareSection getVirtualHardwareSection();
+
+   /**
+    * @return operating system on this VM, or null, if part of a vApp template
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   VCloudOperatingSystemSection getOperatingSystemSection();
+
+   /**
+    * @return network connections for this VM, or null if it doesn't exist
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   NetworkConnectionSection getNetworkConnectionSection();
+
+   /**
+    * @return guest customization section for this VM, or null if it doesn't exist
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   GuestCustomizationSection getGuestCustomizationSection();
+
+   /**
+    * read-only identifier created on import
+    * 
+    * @since vcloud api 1.0
+    */
+   @Nullable
+   String getVAppScopedLocalId();
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java
new file mode 100644
index 0000000..03d1532
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.Catalog;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class CatalogImpl extends LinkedHashMap<String, ReferenceType> implements Catalog {
+
+   private final String name;
+   private final String type;
+   private final URI href;
+   private final ReferenceType org;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   private final boolean published;
+   private final boolean readOnly;
+
+   public CatalogImpl(String name, String type, URI href, ReferenceType org, @Nullable String description,
+            Map<String, ReferenceType> contents, Iterable<Task> tasks, boolean published, boolean readOnly) {
+      this.name = checkNotNull(name, "name");
+      this.type = checkNotNull(type, "type");
+      this.org = org;// TODO: once <1.0 is killed check not null
+      this.description = description;
+      this.href = checkNotNull(href, "href");
+      putAll(checkNotNull(contents, "contents"));
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.published = published;
+      this.readOnly = readOnly;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public URI getHref() {
+      return href;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getName() {
+      return name;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getOrg() {
+      return org;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getType() {
+      return type;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public boolean isPublished() {
+      return published;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public boolean isReadOnly() {
+      return readOnly;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + ((href == null) ? 0 : href.hashCode());
+      result = prime * result + ((name == null) ? 0 : name.hashCode());
+      result = prime * result + ((org == null) ? 0 : org.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      result = prime * result + ((type == null) ? 0 : type.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      CatalogImpl other = (CatalogImpl) obj;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (href == null) {
+         if (other.href != null)
+            return false;
+      } else if (!href.equals(other.href))
+         return false;
+      if (name == null) {
+         if (other.name != null)
+            return false;
+      } else if (!name.equals(other.name))
+         return false;
+      if (org == null) {
+         if (other.org != null)
+            return false;
+      } else if (!org.equals(other.org))
+         return false;
+      if (tasks == null) {
+         if (other.tasks != null)
+            return false;
+      } else if (!tasks.equals(other.tasks))
+         return false;
+      if (type == null) {
+         if (other.type != null)
+            return false;
+      } else if (!type.equals(other.type))
+         return false;
+      return true;
+   }
+
+   @Override
+   public int compareTo(ReferenceType o) {
+      return (this == o) ? 0 : getHref().compareTo(o.getHref());
+   }
+
+   @Override
+   public String getRelationship() {
+      throw new UnsupportedOperationException();
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogItemImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogItemImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogItemImpl.java
new file mode 100644
index 0000000..5cac6ab
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogItemImpl.java
@@ -0,0 +1,106 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.jclouds.vcloud.domain.CatalogItem;
+import org.jclouds.vcloud.domain.ReferenceType;
+
+import com.google.common.collect.Maps;
+
+public class CatalogItemImpl extends ReferenceTypeImpl implements CatalogItem {
+
+   private final String description;
+   private final ReferenceType entity;
+   private final Map<String, String> properties = Maps.newLinkedHashMap();
+
+   public CatalogItemImpl(String name, URI id, @Nullable String description, ReferenceType entity,
+         Map<String, String> properties) {
+      super(name, VCloudMediaType.CATALOGITEM_XML, id);
+      this.description = description;
+      this.entity = checkNotNull(entity, "entity");
+      this.properties.putAll(checkNotNull(properties, "properties"));
+   }
+
+   @Override
+   public String getType() {
+      return VCloudMediaType.CATALOGITEM_XML;
+   }
+
+   public ReferenceType getEntity() {
+      return entity;
+   }
+
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   public Map<String, String> getProperties() {
+      return properties;
+   }
+
+   @Override
+   public String toString() {
+      return "CatalogItemImpl [id=" + getHref() + ", name=" + getName() + ", type=" + getType() + ", description="
+            + getDescription() + ", entity=" + entity + ", properties=" + properties + "]";
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + ((entity == null) ? 0 : entity.hashCode());
+      result = prime * result + ((properties == null) ? 0 : properties.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      CatalogItemImpl other = (CatalogItemImpl) obj;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (entity == null) {
+         if (other.entity != null)
+            return false;
+      } else if (!entity.equals(other.entity))
+         return false;
+      if (properties == null) {
+         if (other.properties != null)
+            return false;
+      } else if (!properties.equals(other.properties))
+         return false;
+      return true;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ErrorImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ErrorImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ErrorImpl.java
new file mode 100644
index 0000000..2550f1b
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ErrorImpl.java
@@ -0,0 +1,114 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.VCloudError;
+
+public class ErrorImpl implements VCloudError {
+   private final String message;
+   private final int majorErrorCode;
+   private final MinorCode minorErrorCode;
+   @Nullable
+   private final String vendorSpecificErrorCode;
+   @Nullable
+   private final String stackTrace;
+
+   public ErrorImpl(String message, int majorErrorCode, @Nullable MinorCode minorErrorCode,
+            @Nullable String vendorSpecificErrorCode, @Nullable String stackTrace) {
+      this.message = checkNotNull(message, "message");
+      this.majorErrorCode = majorErrorCode;
+      this.minorErrorCode = minorErrorCode; // check null after 0.8 is gone
+      this.vendorSpecificErrorCode = vendorSpecificErrorCode;
+      this.stackTrace = stackTrace;
+   }
+
+   public String getMessage() {
+      return message;
+   }
+
+   public int getMajorErrorCode() {
+      return majorErrorCode;
+   }
+
+   public MinorCode getMinorErrorCode() {
+      return minorErrorCode;
+   }
+
+   public String getVendorSpecificErrorCode() {
+      return vendorSpecificErrorCode;
+   }
+
+   public String getStackTrace() {
+      return stackTrace;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + majorErrorCode;
+      result = prime * result + ((message == null) ? 0 : message.hashCode());
+      result = prime * result + ((minorErrorCode == null) ? 0 : minorErrorCode.hashCode());
+      result = prime * result + ((stackTrace == null) ? 0 : stackTrace.hashCode());
+      result = prime * result + ((vendorSpecificErrorCode == null) ? 0 : vendorSpecificErrorCode.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null)
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      ErrorImpl other = (ErrorImpl) obj;
+      if (majorErrorCode != other.majorErrorCode)
+         return false;
+      if (message == null) {
+         if (other.message != null)
+            return false;
+      } else if (!message.equals(other.message))
+         return false;
+      if (minorErrorCode == null) {
+         if (other.minorErrorCode != null)
+            return false;
+      } else if (!minorErrorCode.equals(other.minorErrorCode))
+         return false;
+      if (stackTrace == null) {
+         if (other.stackTrace != null)
+            return false;
+      } else if (!stackTrace.equals(other.stackTrace))
+         return false;
+      if (vendorSpecificErrorCode == null) {
+         if (other.vendorSpecificErrorCode != null)
+            return false;
+      } else if (!vendorSpecificErrorCode.equals(other.vendorSpecificErrorCode))
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[majorErrorCode=" + majorErrorCode + ", message=" + message + ", minorErrorCode=" + minorErrorCode
+               + ", stackTrace=" + stackTrace + ", vendorSpecificErrorCode=" + vendorSpecificErrorCode + "]";
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/OrgImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/OrgImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/OrgImpl.java
new file mode 100644
index 0000000..87327d1
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/OrgImpl.java
@@ -0,0 +1,168 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.Org;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class OrgImpl extends ReferenceTypeImpl implements Org {
+   private final String fullName;
+   @Nullable
+   private final String description;
+   private final Map<String, ReferenceType> catalogs = Maps.newLinkedHashMap();
+   private final Map<String, ReferenceType> vdcs = Maps.newLinkedHashMap();
+   private final Map<String, ReferenceType> networks = Maps.newLinkedHashMap();
+   private final ReferenceType tasksList;
+   private final List<Task> tasks = Lists.newArrayList();
+
+   public OrgImpl(String name, String type, URI id, String fullName, String description,
+            Map<String, ReferenceType> catalogs, Map<String, ReferenceType> vdcs, Map<String, ReferenceType> networks,
+            @Nullable ReferenceType tasksList, Iterable<Task> tasks) {
+      super(name, type, id);
+      this.fullName = checkNotNull(fullName, "fullName");
+      this.description = description;
+      this.catalogs.putAll(checkNotNull(catalogs, "catalogs"));
+      this.vdcs.putAll(checkNotNull(vdcs, "vdcs"));
+      this.networks.putAll(checkNotNull(networks, "networks"));
+      this.tasksList = tasksList;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+   }
+
+   @Override
+   public String getFullName() {
+      return fullName;
+   }
+
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   @Override
+   public Map<String, ReferenceType> getCatalogs() {
+      return catalogs;
+   }
+
+   @Override
+   public Map<String, ReferenceType> getVDCs() {
+      return vdcs;
+   }
+
+   @Override
+   public Map<String, ReferenceType> getNetworks() {
+      return networks;
+   }
+
+   @Override
+   public ReferenceType getTasksList() {
+      return tasksList;
+   }
+
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((catalogs == null) ? 0 : catalogs.hashCode());
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + ((fullName == null) ? 0 : fullName.hashCode());
+      result = prime * result + ((networks == null) ? 0 : networks.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      result = prime * result + ((tasksList == null) ? 0 : tasksList.hashCode());
+      result = prime * result + ((vdcs == null) ? 0 : vdcs.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      OrgImpl other = (OrgImpl) obj;
+      if (catalogs == null) {
+         if (other.catalogs != null)
+            return false;
+      } else if (!catalogs.equals(other.catalogs))
+         return false;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (fullName == null) {
+         if (other.fullName != null)
+            return false;
+      } else if (!fullName.equals(other.fullName))
+         return false;
+      if (networks == null) {
+         if (other.networks != null)
+            return false;
+      } else if (!networks.equals(other.networks))
+         return false;
+      if (tasks == null) {
+         if (other.tasks != null)
+            return false;
+      } else if (!tasks.equals(other.tasks))
+         return false;
+      if (tasksList == null) {
+         if (other.tasksList != null)
+            return false;
+      } else if (!tasksList.equals(other.tasksList))
+         return false;
+      if (vdcs == null) {
+         if (other.vdcs != null)
+            return false;
+      } else if (!vdcs.equals(other.vdcs))
+         return false;
+      return true;
+   }
+
+   @Override
+   public int compareTo(ReferenceType o) {
+      return (this == o) ? 0 : getHref().compareTo(o.getHref());
+   }
+
+   @Override
+   public String toString() {
+      return "[href=" + getHref() + ", name=" + getName() + ", type=" + getType() + ", fullName=" + fullName
+               + ", description=" + description + ", catalogs=" + catalogs + ", networks=" + networks + ", tasksList="
+               + tasksList + ", vdcs=" + vdcs + ", tasks=" + tasks + "]";
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
new file mode 100644
index 0000000..fa128f9
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
@@ -0,0 +1,99 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Objects.equal;
+
+import java.net.URI;
+
+import org.jclouds.vcloud.domain.ReferenceType;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+
+/**
+ * Location of a Rest resource
+ */
+public class ReferenceTypeImpl implements ReferenceType {
+   private final String name;
+   private final String type;
+   private final URI href;
+   private final String relationship;
+
+   public ReferenceTypeImpl(String name, String type, URI href) {
+      this.name = name;
+      this.type = type;
+      this.href = href;
+	  this.relationship = null;
+   }
+
+   public ReferenceTypeImpl(String name, String type, URI href, String relationship) {
+      this.name = name;
+      this.type = type;
+      this.href = href;
+      this.relationship = relationship;
+   }
+
+   @Override
+   public String getName() {
+      return name;
+   }
+
+   @Override
+   public String getType() {
+      return type;
+   }
+
+   @Override
+   public URI getHref() {
+      return href;
+   }
+
+   @Override
+   public int compareTo(ReferenceType that) {
+      return (this == that) ? 0 : getHref().compareTo(that.getHref());
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      ReferenceTypeImpl that = ReferenceTypeImpl.class.cast(o);
+      return equal(this.href, that.href);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(href);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   protected ToStringHelper string() {
+      return Objects.toStringHelper("").omitNullValues().add("href", href).add("name", name).add("type", type).add("relationship", relationship);
+   }
+
+   @Override
+   public String getRelationship() {
+      return relationship;
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TaskImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TaskImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TaskImpl.java
new file mode 100644
index 0000000..70815a1
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TaskImpl.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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.TaskStatus;
+import org.jclouds.vcloud.domain.VCloudError;
+
+import com.google.common.base.Objects;
+
+public class TaskImpl extends ReferenceTypeImpl implements Task {
+
+   private final String operation;
+   private final TaskStatus status;
+   private final Date startTime;
+   @Nullable
+   private final Date endTime;
+   @Nullable
+   private final Date expiryTime;
+   private final ReferenceType owner;
+   @Nullable
+   private final VCloudError error;
+
+   public TaskImpl(URI id, String operation, TaskStatus status, Date startTime, @Nullable Date endTime,
+            @Nullable Date expiryTime, ReferenceType owner, VCloudError error) {
+      super(null, VCloudMediaType.TASK_XML, id);
+      this.operation = operation;
+      this.status = checkNotNull(status, "status");
+      this.startTime = startTime;
+      this.endTime = endTime;
+      this.expiryTime = expiryTime;
+      this.owner = owner;
+      this.error = error;
+   }
+
+   @Override
+   public TaskStatus getStatus() {
+      return status;
+   }
+
+   @Override
+   public Date getStartTime() {
+      return startTime;
+   }
+
+   @Override
+   public ReferenceType getOwner() {
+      return owner;
+   }
+
+   @Override
+   public Date getEndTime() {
+      return endTime;
+   }
+
+   @Override
+   public VCloudError getError() {
+      return error;
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("href", getHref()).add("name", getName())
+            .add("owner", owner).add("operation", operation).add("startTime", startTime).add("endTime", endTime)
+            .add("expiryTime", expiryTime).add("error", error).toString();
+   }
+
+   public Date getExpiryTime() {
+      return expiryTime;
+   }
+
+   @Override
+   public String getOperation() {
+      return operation;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+      result = prime * result + ((error == null) ? 0 : error.hashCode());
+      result = prime * result + ((expiryTime == null) ? 0 : expiryTime.hashCode());
+      result = prime * result + ((operation == null) ? 0 : operation.hashCode());
+      result = prime * result + ((owner == null) ? 0 : owner.hashCode());
+      result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+      result = prime * result + ((status == null) ? 0 : status.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      TaskImpl other = (TaskImpl) obj;
+      if (endTime == null) {
+         if (other.endTime != null)
+            return false;
+      } else if (!endTime.equals(other.endTime))
+         return false;
+      if (error == null) {
+         if (other.error != null)
+            return false;
+      } else if (!error.equals(other.error))
+         return false;
+      if (expiryTime == null) {
+         if (other.expiryTime != null)
+            return false;
+      } else if (!expiryTime.equals(other.expiryTime))
+         return false;
+      if (operation == null) {
+         if (other.operation != null)
+            return false;
+      } else if (!operation.equals(other.operation))
+         return false;
+      if (owner == null) {
+         if (other.owner != null)
+            return false;
+      } else if (!owner.equals(other.owner))
+         return false;
+      if (startTime == null) {
+         if (other.startTime != null)
+            return false;
+      } else if (!startTime.equals(other.startTime))
+         return false;
+      if (status == null) {
+         if (other.status != null)
+            return false;
+      } else if (!status.equals(other.status))
+         return false;
+      return true;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TasksListImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TasksListImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TasksListImpl.java
new file mode 100644
index 0000000..4c8b2c8
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/TasksListImpl.java
@@ -0,0 +1,78 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.TasksList;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class TasksListImpl implements TasksList {
+   private final SortedSet<Task> tasks;
+   private final URI id;
+
+   public TasksListImpl(URI id, SortedSet<Task> tasks) {
+      this.id = id;
+      this.tasks = tasks;
+   }
+
+   @Override
+   public SortedSet<Task> getTasks() {
+      return tasks;
+   }
+
+   @Override
+   public URI getLocation() {
+      return id;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((id == null) ? 0 : id.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null)
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      TasksListImpl other = (TasksListImpl) obj;
+      if (id == null) {
+         if (other.id != null)
+            return false;
+      } else if (!id.equals(other.id))
+         return false;
+      if (tasks == null) {
+         if (other.tasks != null)
+            return false;
+      } else if (!tasks.equals(other.tasks))
+         return false;
+      return true;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppImpl.java
new file mode 100644
index 0000000..7b032bc
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppImpl.java
@@ -0,0 +1,163 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Status;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.VApp;
+import org.jclouds.vcloud.domain.Vm;
+import org.jclouds.vcloud.domain.ovf.VCloudNetworkSection;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class VAppImpl extends ReferenceTypeImpl implements VApp {
+
+   private final Status status;
+   private final ReferenceType vdc;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   private final boolean ovfDescriptorUploaded;
+   private final Set<Vm> children = Sets.newLinkedHashSet();
+   @Nullable
+   private final VCloudNetworkSection networkSection;
+   
+   public VAppImpl(String name, String type, URI id, Status status, ReferenceType vdc, @Nullable String description,
+            Iterable<Task> tasks, boolean ovfDescriptorUploaded, Iterable<Vm> children,
+            @Nullable VCloudNetworkSection networkSection) {
+      super(name, type, id);
+      this.status = checkNotNull(status, "status");
+      this.vdc = vdc;// TODO: once <1.0 is killed check not null
+      this.description = description;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.ovfDescriptorUploaded = ovfDescriptorUploaded;
+      Iterables.addAll(this.children, checkNotNull(children, "children"));
+      this.networkSection = networkSection; // can be null when copying
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Status getStatus() {
+      return status;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getVDC() {
+      return vdc;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public boolean isOvfDescriptorUploaded() {
+      return ovfDescriptorUploaded;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Set<Vm> getChildren() {
+      return children;
+   }
+   
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public VCloudNetworkSection getNetworkSection() {
+      return networkSection;
+   }
+   
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + (ovfDescriptorUploaded ? 1231 : 1237);
+      result = prime * result + ((status == null) ? 0 : status.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      result = prime * result + ((vdc == null) ? 0 : vdc.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      VAppImpl other = (VAppImpl) obj;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (ovfDescriptorUploaded != other.ovfDescriptorUploaded)
+         return false;
+      if (vdc == null) {
+         if (other.vdc != null)
+            return false;
+      } else if (!vdc.equals(other.vdc))
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[id=" + getHref() + ", name=" + getName() + ", vdc=" + vdc + ", description=" + description + ", status="
+               + status + "]";
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppTemplateImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppTemplateImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppTemplateImpl.java
new file mode 100644
index 0000000..fa480c7
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VAppTemplateImpl.java
@@ -0,0 +1,202 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Status;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.VAppTemplate;
+import org.jclouds.vcloud.domain.Vm;
+import org.jclouds.vcloud.domain.ovf.VCloudNetworkSection;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class VAppTemplateImpl extends ReferenceTypeImpl implements VAppTemplate {
+
+   private final Status status;
+   private final ReferenceType vdc;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   private final boolean ovfDescriptorUploaded;
+   private final String vAppScopedLocalId;
+   private final Set<Vm> children = Sets.newLinkedHashSet();
+   @Nullable
+   private final VCloudNetworkSection networkSection;
+
+   public VAppTemplateImpl(String name, String type, URI id, Status status, ReferenceType vdc,
+            @Nullable String description, Iterable<Task> tasks, boolean ovfDescriptorUploaded,
+            @Nullable String vAppScopedLocalId, Iterable<Vm> children,
+            @Nullable VCloudNetworkSection networkSection) {
+      super(name, type, id);
+      this.status = checkNotNull(status, "status");
+      this.vdc = vdc;// TODO: once <1.0 is killed check not null
+      this.description = description;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.vAppScopedLocalId = vAppScopedLocalId;
+      this.ovfDescriptorUploaded = ovfDescriptorUploaded;
+      Iterables.addAll(this.children, checkNotNull(children, "children"));
+      this.networkSection = networkSection; // can be null when copying
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Status getStatus() {
+      return status;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getVDC() {
+      return vdc;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getVAppScopedLocalId() {
+      return vAppScopedLocalId;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public boolean isOvfDescriptorUploaded() {
+      return ovfDescriptorUploaded;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Set<Vm> getChildren() {
+      return children;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public VCloudNetworkSection getNetworkSection() {
+      return networkSection;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((children == null) ? 0 : children.hashCode());
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + ((networkSection == null) ? 0 : networkSection.hashCode());
+      result = prime * result + (ovfDescriptorUploaded ? 1231 : 1237);
+      result = prime * result + ((status == null) ? 0 : status.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      result = prime * result + ((vAppScopedLocalId == null) ? 0 : vAppScopedLocalId.hashCode());
+      result = prime * result + ((vdc == null) ? 0 : vdc.hashCode());
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      VAppTemplateImpl other = (VAppTemplateImpl) obj;
+      if (children == null) {
+         if (other.children != null)
+            return false;
+      } else if (!children.equals(other.children))
+         return false;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (networkSection == null) {
+         if (other.networkSection != null)
+            return false;
+      } else if (!networkSection.equals(other.networkSection))
+         return false;
+      if (ovfDescriptorUploaded != other.ovfDescriptorUploaded)
+         return false;
+      if (status == null) {
+         if (other.status != null)
+            return false;
+      } else if (!status.equals(other.status))
+         return false;
+      if (tasks == null) {
+         if (other.tasks != null)
+            return false;
+      } else if (!tasks.equals(other.tasks))
+         return false;
+      if (vAppScopedLocalId == null) {
+         if (other.vAppScopedLocalId != null)
+            return false;
+      } else if (!vAppScopedLocalId.equals(other.vAppScopedLocalId))
+         return false;
+      if (vdc == null) {
+         if (other.vdc != null)
+            return false;
+      } else if (!vdc.equals(other.vdc))
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[id=" + getHref() + ", name=" + getName() + ", vdc=" + vdc + ", description=" + description + ", status="
+               + status + "]";
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VDCImpl.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VDCImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VDCImpl.java
new file mode 100644
index 0000000..740df72
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VDCImpl.java
@@ -0,0 +1,289 @@
+/*
+ * 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.vcloud.domain.internal;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.AllocationModel;
+import org.jclouds.vcloud.domain.Capacity;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.VDC;
+import org.jclouds.vcloud.domain.VDCStatus;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class VDCImpl extends ReferenceTypeImpl implements VDC {
+
+   private final VDCStatus status;
+   private final ReferenceType org;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   private final AllocationModel allocationModel;
+   private final Capacity storageCapacity;
+   private final Capacity cpuCapacity;
+   private final Capacity memoryCapacity;
+   private final Map<String, ReferenceType> resourceEntities = Maps.newLinkedHashMap();
+   private final Map<String, ReferenceType> availableNetworks = Maps.newLinkedHashMap();
+   private final int nicQuota;
+   private final int networkQuota;
+   private final int vmQuota;
+   private final boolean isEnabled;
+
+   public VDCImpl(String name, String type, URI id, VDCStatus status, ReferenceType org, @Nullable String description,
+            Iterable<Task> tasks, AllocationModel allocationModel, @Nullable Capacity storageCapacity,
+            @Nullable Capacity cpuCapacity, @Nullable Capacity memoryCapacity,
+            Map<String, ReferenceType> resourceEntities, Map<String, ReferenceType> availableNetworks, int nicQuota,
+            int networkQuota, int vmQuota, boolean isEnabled) {
+      super(name, type, id);
+      this.status = checkNotNull(status, "status");
+      this.org = org;// TODO: once <1.0 is killed check not null
+      this.description = description;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.allocationModel = checkNotNull(allocationModel, "allocationModel");
+      this.storageCapacity = storageCapacity;// TODO: once <1.0 is killed check not null
+      this.cpuCapacity = cpuCapacity;// TODO: once <1.0 is killed check not null
+      this.memoryCapacity = memoryCapacity;// TODO: once <1.0 is killed check not null
+      this.resourceEntities.putAll(checkNotNull(resourceEntities, "resourceEntities"));
+      this.availableNetworks.putAll(checkNotNull(availableNetworks, "availableNetworks"));
+      this.nicQuota = nicQuota;
+      this.networkQuota = networkQuota;
+      this.vmQuota = vmQuota;
+      this.isEnabled = isEnabled;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public VDCStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getOrg() {
+      return org;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public AllocationModel getAllocationModel() {
+      return allocationModel;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Capacity getStorageCapacity() {
+      return storageCapacity;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Capacity getCpuCapacity() {
+      return cpuCapacity;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Capacity getMemoryCapacity() {
+      return memoryCapacity;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Map<String, ReferenceType> getResourceEntities() {
+      return resourceEntities;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Map<String, ReferenceType> getAvailableNetworks() {
+      return availableNetworks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public int getNicQuota() {
+      return nicQuota;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public int getNetworkQuota() {
+      return networkQuota;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public int getVmQuota() {
+      return vmQuota;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public boolean isEnabled() {
+      return isEnabled;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((allocationModel == null) ? 0 : allocationModel.hashCode());
+      result = prime * result + ((availableNetworks == null) ? 0 : availableNetworks.hashCode());
+      result = prime * result + ((cpuCapacity == null) ? 0 : cpuCapacity.hashCode());
+      result = prime * result + ((description == null) ? 0 : description.hashCode());
+      result = prime * result + (isEnabled ? 1231 : 1237);
+      result = prime * result + ((memoryCapacity == null) ? 0 : memoryCapacity.hashCode());
+      result = prime * result + networkQuota;
+      result = prime * result + nicQuota;
+      result = prime * result + ((org == null) ? 0 : org.hashCode());
+      result = prime * result + ((resourceEntities == null) ? 0 : resourceEntities.hashCode());
+      result = prime * result + ((status == null) ? 0 : status.hashCode());
+      result = prime * result + ((storageCapacity == null) ? 0 : storageCapacity.hashCode());
+      result = prime * result + ((tasks == null) ? 0 : tasks.hashCode());
+      result = prime * result + vmQuota;
+      return result;
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (!super.equals(obj))
+         return false;
+      if (getClass() != obj.getClass())
+         return false;
+      VDCImpl other = (VDCImpl) obj;
+      if (allocationModel == null) {
+         if (other.allocationModel != null)
+            return false;
+      } else if (!allocationModel.equals(other.allocationModel))
+         return false;
+      if (availableNetworks == null) {
+         if (other.availableNetworks != null)
+            return false;
+      } else if (!availableNetworks.equals(other.availableNetworks))
+         return false;
+      if (cpuCapacity == null) {
+         if (other.cpuCapacity != null)
+            return false;
+      } else if (!cpuCapacity.equals(other.cpuCapacity))
+         return false;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (isEnabled != other.isEnabled)
+         return false;
+      if (memoryCapacity == null) {
+         if (other.memoryCapacity != null)
+            return false;
+      } else if (!memoryCapacity.equals(other.memoryCapacity))
+         return false;
+      if (networkQuota != other.networkQuota)
+         return false;
+      if (nicQuota != other.nicQuota)
+         return false;
+      if (org == null) {
+         if (other.org != null)
+            return false;
+      } else if (!org.equals(other.org))
+         return false;
+      if (resourceEntities == null) {
+         if (other.resourceEntities != null)
+            return false;
+      } else if (!resourceEntities.equals(other.resourceEntities))
+         return false;
+      if (status == null) {
+         if (other.status != null)
+            return false;
+      } else if (!status.equals(other.status))
+         return false;
+      if (storageCapacity == null) {
+         if (other.storageCapacity != null)
+            return false;
+      } else if (!storageCapacity.equals(other.storageCapacity))
+         return false;
+      if (tasks == null) {
+         if (other.tasks != null)
+            return false;
+      } else if (!tasks.equals(other.tasks))
+         return false;
+      if (vmQuota != other.vmQuota)
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[id=" + getHref() + ", name=" + getName() + ", org=" + org + ", description=" + description + ", status="
+               + status + ", isEnabled=" + isEnabled + "]";
+   }
+
+}