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/VmImpl.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VmImpl.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VmImpl.java
new file mode 100644
index 0000000..a6385c6
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/VmImpl.java
@@ -0,0 +1,214 @@
+/*
+ * 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 org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.GuestCustomizationSection;
+import org.jclouds.vcloud.domain.NetworkConnectionSection;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Status;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.Vm;
+import org.jclouds.vcloud.domain.ovf.VCloudOperatingSystemSection;
+import org.jclouds.vcloud.domain.ovf.VCloudVirtualHardwareSection;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * Locations of resources in vCloud
+ */
+public class VmImpl extends ReferenceTypeImpl implements Vm {
+
+   @Nullable
+   private final Status status;
+   private final ReferenceType vApp;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   @Nullable
+   private final VCloudVirtualHardwareSection hardware;
+   private final String vAppScopedLocalId;
+   private final VCloudOperatingSystemSection os;
+   @Nullable
+   private final GuestCustomizationSection guestCustomization;
+   @Nullable
+   private final NetworkConnectionSection networkConnectionSection;
+
+   public VmImpl(String name, String type, URI id, @Nullable Status status, 
ReferenceType vApp,
+            @Nullable String description, Iterable<Task> tasks, @Nullable 
VCloudVirtualHardwareSection hardware,
+            @Nullable VCloudOperatingSystemSection os, @Nullable 
NetworkConnectionSection networkConnectionSection,
+            @Nullable GuestCustomizationSection guestCustomization, @Nullable 
String vAppScopedLocalId) {
+      super(name, type, id);
+      this.status = status;
+      this.vApp = vApp;// TODO: once <1.0 is killed check not null
+      this.description = description;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.hardware = hardware;
+      this.os = os;
+      this.networkConnectionSection = networkConnectionSection;
+      this.guestCustomization = guestCustomization;
+      this.vAppScopedLocalId = vAppScopedLocalId;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   @Nullable
+   public Status getStatus() {
+      return status;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getParent() {
+      return vApp;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public List<Task> getTasks() {
+      return tasks;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public VCloudVirtualHardwareSection getVirtualHardwareSection() {
+      return hardware;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public VCloudOperatingSystemSection getOperatingSystemSection() {
+      return os;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public NetworkConnectionSection getNetworkConnectionSection() {
+      return networkConnectionSection;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public GuestCustomizationSection getGuestCustomizationSection() {
+      return guestCustomization;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public String getVAppScopedLocalId() {
+      return vAppScopedLocalId;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = super.hashCode();
+      result = prime * result + ((description == null) ? 0 : 
description.hashCode());
+      result = prime * result + ((guestCustomization == null) ? 0 : 
guestCustomization.hashCode());
+      result = prime * result + ((hardware == null) ? 0 : hardware.hashCode());
+      result = prime * result + ((networkConnectionSection == null) ? 0 : 
networkConnectionSection.hashCode());
+      result = prime * result + ((os == null) ? 0 : os.hashCode());
+      result = prime * result + ((vApp == null) ? 0 : vApp.hashCode());
+      result = prime * result + ((vAppScopedLocalId == null) ? 0 : 
vAppScopedLocalId.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;
+      VmImpl other = (VmImpl) obj;
+      if (description == null) {
+         if (other.description != null)
+            return false;
+      } else if (!description.equals(other.description))
+         return false;
+      if (guestCustomization == null) {
+         if (other.guestCustomization != null)
+            return false;
+      } else if (!guestCustomization.equals(other.guestCustomization))
+         return false;
+      if (hardware == null) {
+         if (other.hardware != null)
+            return false;
+      } else if (!hardware.equals(other.hardware))
+         return false;
+      if (networkConnectionSection == null) {
+         if (other.networkConnectionSection != null)
+            return false;
+      } else if 
(!networkConnectionSection.equals(other.networkConnectionSection))
+         return false;
+      if (os == null) {
+         if (other.os != null)
+            return false;
+      } else if (!os.equals(other.os))
+         return false;
+      if (vApp == null) {
+         if (other.vApp != null)
+            return false;
+      } else if (!vApp.equals(other.vApp))
+         return false;
+      if (vAppScopedLocalId == null) {
+         if (other.vAppScopedLocalId != null)
+            return false;
+      } else if (!vAppScopedLocalId.equals(other.vAppScopedLocalId))
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[href=" + getHref() + ", name=" + getName() + ", type=" + 
getType() + ", description=" + description
+               + ", status=" + status + ", tasks=" + tasks + ", vApp=" + vApp 
+ ", hardware=" + hardware + ", os=" + os
+               + ", network=" + networkConnectionSection + ", 
vAppScopedLocalId=" + vAppScopedLocalId + "]";
+   }
+
+}

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/network/DhcpService.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/DhcpService.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/DhcpService.java
new file mode 100644
index 0000000..628a7d1
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/DhcpService.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.network;
+
+import static com.google.common.base.Objects.equal;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * specifies the properties of the network’s DHCP service
+ */
+public class DhcpService {
+   private final boolean enabled;
+   @Nullable
+   private final Integer defaultLeaseTime;
+   @Nullable
+   private final Integer maxLeaseTime;
+   @Nullable
+   private final IpRange ipRange;
+
+   public DhcpService(boolean enabled, @Nullable Integer defaultLeaseTime, 
@Nullable Integer maxLeaseTime,
+            @Nullable IpRange ipRange) {
+      this.enabled = enabled;
+      this.defaultLeaseTime = defaultLeaseTime;
+      this.maxLeaseTime = maxLeaseTime;
+      this.ipRange = ipRange;
+   }
+
+   /**
+    * @return true if the service is enabled
+    * 
+    * @since vcloud api 0.8
+    */
+   public boolean isEnabled() {
+      return enabled;
+   }
+
+   /**
+    * default duration of a DHCP address lease
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public Integer getDefaultLeaseTime() {
+      return defaultLeaseTime;
+   }
+
+   /**
+    * maximum duration of a DHCP address lease.
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public Integer getMaxLeaseTime() {
+      return maxLeaseTime;
+   }
+
+   /**
+    * @return range of IP addresses available to DHCP clients
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public IpRange getIpRange() {
+      return ipRange;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      DhcpService that = DhcpService.class.cast(o);
+      return equal(this.enabled, that.enabled) && equal(this.defaultLeaseTime, 
that.defaultLeaseTime)
+            && equal(this.maxLeaseTime, that.maxLeaseTime) && 
equal(this.ipRange, that.ipRange);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(enabled, defaultLeaseTime, maxLeaseTime, 
ipRange);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("enabled", 
enabled)
+            .add("defaultLeaseTime", defaultLeaseTime).add("maxLeaseTime", 
maxLeaseTime).add("ipRange", ipRange)
+            .toString();
+   }
+}

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/network/Features.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/Features.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/Features.java
new file mode 100644
index 0000000..24eb38e
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/Features.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.network;
+
+import static com.google.common.base.Objects.equal;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * The Features element defines the DHCP and firewall features of a network.
+ */
+public class Features {
+   @Nullable
+   private final DhcpService dhcpService;
+   @Nullable
+   private final FirewallService firewallService;
+   @Nullable
+   private final NatService natService;
+
+   public Features(@Nullable DhcpService dhcpService, @Nullable 
FirewallService firewallService,
+            @Nullable NatService natService) {
+      this.dhcpService = dhcpService;
+      this.firewallService = firewallService;
+      this.natService = natService;
+   }
+
+   /**
+    * specifies the properties of the network’s DHCP service
+    * 
+    * @since vcloud api 0.9, but emulated for 0.8
+    */
+   @Nullable
+   public DhcpService getDhcpService() {
+      return dhcpService;
+   }
+
+   /**
+    * defines the firewall service capabilities of the network
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   public FirewallService getFirewallService() {
+      return firewallService;
+   }
+
+   /**
+    * defines the NAT service capabilities of the network
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   public NatService getNatService() {
+      return natService;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      Features that = Features.class.cast(o);
+      return equal(this.dhcpService, that.dhcpService) && 
equal(this.firewallService, that.firewallService)
+            && equal(this.natService, that.natService);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(dhcpService, firewallService, natService);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("dhcpService", 
dhcpService)
+            .add("firewallService", firewallService).add("natService", 
natService).toString();
+   }
+
+}

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/network/FenceMode.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FenceMode.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FenceMode.java
new file mode 100644
index 0000000..a531b0d
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FenceMode.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.network;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * 
+ * The FenceMode element contains one of the following strings that specify 
how a network is
+ * connected to its parent network.
+ */
+public enum FenceMode {
+   /**
+    * The two networks are bridged.
+    * <p/>
+    * Note that in vcloud 0.8 this was called ALLOW_IN_OUT, and so our 
implementation automatically
+    * converts this for you. Use bridged instead of allowInOut.
+    * 
+    * @since vcloud api 0.9
+    */
+   BRIDGED,
+   /**
+    * The two networks are not connected.
+    * 
+    * @since vcloud api 0.8
+    */
+   ISOLATED,
+   /**
+    * The two networks are connected as specified in their NatService elements.
+    * 
+    * @since vcloud api 0.8
+    */
+   NAT_ROUTED, UNRECOGNIZED;
+
+   public String value() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static FenceMode fromValue(String fenceMode) {
+      try {
+         return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, 
checkNotNull(fenceMode, "fenceMode")));
+      } 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/network/FirewallService.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FirewallService.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FirewallService.java
new file mode 100644
index 0000000..63212b2
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/FirewallService.java
@@ -0,0 +1,86 @@
+/*
+ * 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.network;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.network.firewall.FirewallRule;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * The FirewallService element defines the firewall service capabilities of a 
network.
+ */
+public class FirewallService {
+   private final boolean enabled;
+
+   List<FirewallRule> firewallRules = Lists.newArrayList();
+
+   public FirewallService(boolean enabled, Iterable<FirewallRule> 
firewallRules) {
+      this.enabled = enabled;
+      Iterables.addAll(this.firewallRules, checkNotNull(firewallRules, 
"firewallRules"));
+   }
+
+   /**
+    * @return Firewall rules for the network
+    * 
+    * @since vcloud api 0.8
+    */
+   public List<FirewallRule> getFirewallRules() {
+      return firewallRules;
+   }
+
+   /**
+    * @return true if the service is enabled
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public boolean isEnabled() {
+      return enabled;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      FirewallService that = FirewallService.class.cast(o);
+      return equal(this.enabled, that.enabled) && equal(this.firewallRules, 
that.firewallRules);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(enabled, firewallRules);
+   }
+
+   @Override
+   public String toString() {
+      ToStringHelper helper = 
Objects.toStringHelper("").omitNullValues().add("enabled", enabled);
+      if (firewallRules.size() > 0)
+         helper.add("firewallRules", firewallRules);
+      return helper.toString();
+   }
+}

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/network/IpAddressAllocationMode.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpAddressAllocationMode.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpAddressAllocationMode.java
new file mode 100644
index 0000000..2b32691
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpAddressAllocationMode.java
@@ -0,0 +1,50 @@
+/*
+ * 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.network;
+
+
+/**
+ * 
+ * The IpAddressAllocationMode element specifies how an IP address is 
allocated to this connection.
+ */
+public enum IpAddressAllocationMode {
+   /**
+    * no IP addressing mode specified
+    * 
+    * @since vcloud api 1.0
+    */
+   NONE,
+   /**
+    * static IP address assigned manually
+    * 
+    * @since vcloud api 1.0
+    */
+   MANUAL,
+   /**
+    * static IP address allocated from a pool
+    * 
+    * @since vcloud api 1.0
+    */
+   POOL,
+   /**
+    * IP address assigned by DHCP
+    * 
+    * @since vcloud api 1.0
+    */
+   DHCP;
+
+}

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/network/IpRange.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpRange.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpRange.java
new file mode 100644
index 0000000..180d13d
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpRange.java
@@ -0,0 +1,75 @@
+/*
+ * 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.network;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.Objects;
+
+/**
+ * The IpRange element defines a range of IP addresses available on a network.
+ */
+public class IpRange {
+   private final String startAddress;
+   private final String endAddress;
+
+   public IpRange(String startAddress, String endAddress) {
+      this.startAddress = checkNotNull(startAddress, "startAddress");
+      this.endAddress = checkNotNull(endAddress, "endAddress");
+   }
+
+   /**
+    * @return lowest IP address in the range
+    * 
+    * @since vcloud api 0.9
+    */
+   public String getStartAddress() {
+      return startAddress;
+   }
+
+   /**
+    * @return highest IP address in the range
+    * 
+    * @since vcloud api 0.9
+    */
+   public String getEndAddress() {
+      return endAddress;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      IpRange that = IpRange.class.cast(o);
+      return equal(this.startAddress, that.startAddress) && 
equal(this.endAddress, that.endAddress);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(startAddress, endAddress);
+   }
+
+   @Override
+   public String toString() {
+      return  Objects.toStringHelper("").omitNullValues().add("startAddress", 
startAddress)
+            .add("endAddress", endAddress).toString();
+   }
+
+}

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/network/IpScope.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpScope.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpScope.java
new file mode 100644
index 0000000..e5af063
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/IpScope.java
@@ -0,0 +1,169 @@
+/*
+ * 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.network;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Set;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+
+/**
+ * The IpScope element defines the address range, gateway, netmask, and other 
properties of the
+ * network.
+ */
+public class IpScope {
+   private final boolean inherited;
+   @Nullable
+   private final String gateway;
+   @Nullable
+   private final String netmask;
+   @Nullable
+   private final String dns1;
+   @Nullable
+   private final String dns2;
+   @Nullable
+   private final String dnsSuffix;
+   private final Set<IpRange> ipRanges = Sets.newLinkedHashSet();
+   private final Set<String> allocatedIpAddresses = Sets.newLinkedHashSet();
+
+   public IpScope(boolean inherited, @Nullable String gateway, @Nullable 
String netmask, @Nullable String dns1,
+            @Nullable String dns2, @Nullable String dnsSuffix, 
Iterable<IpRange> ipRanges,
+            Iterable<String> allocatedIpAddresses) {
+      this.inherited = inherited;
+      this.gateway = gateway;
+      this.netmask = netmask;
+      this.dns1 = dns1;
+      this.dns2 = dns2;
+      this.dnsSuffix = dnsSuffix;
+      Iterables.addAll(this.ipRanges, checkNotNull(ipRanges, "ipRanges"));
+      Iterables.addAll(this.allocatedIpAddresses, 
checkNotNull(allocatedIpAddresses, "allocatedIpAddresses"));
+   }
+
+   /**
+    * @return true of the values in this IpScope element are inherited from 
the ParentNetwork of the
+    *         containing Configuration
+    * @since vcloud api 0.9
+    */
+   public boolean isInherited() {
+      return inherited;
+   }
+
+   /**
+    * @return IP address of the network gateway
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   public String getGateway() {
+      return gateway;
+   }
+
+   /**
+    * @return netmask to apply to addresses on the network
+    * 
+    * @since vcloud api 0.8
+    */
+   @Nullable
+   public String getNetmask() {
+      return netmask;
+   }
+
+   /**
+    * @return IP address of the primary DNS server for this network
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public String getDns1() {
+      return dns1;
+   }
+
+   /**
+    * @return IP address of the secondary DNS server for this network
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public String getDns2() {
+      return dns2;
+   }
+
+   /**
+    * @return suffix to be applied when resolving hostnames that are not 
fully‐qualified.
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public String getDnsSuffix() {
+      return dnsSuffix;
+   }
+
+   /**
+    * @return A container for IpRange elements.
+    * 
+    * @since vcloud api 0.9
+    */
+   public Set<IpRange> getIpRanges() {
+      return ipRanges;
+   }
+
+   /**
+    * @return A list of addresses allocated from any of the specified IpRanges
+    * 
+    * @since vcloud api 0.9
+    */
+   public Set<String> getAllocatedIpAddresses() {
+      return allocatedIpAddresses;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      IpScope that = IpScope.class.cast(o);
+      return equal(this.inherited, that.inherited) && equal(this.gateway, 
that.gateway)
+            && equal(this.netmask, that.netmask) && equal(this.dns1, 
that.dns1) && equal(this.dns2, that.dns2)
+            && equal(this.dnsSuffix, that.dnsSuffix)
+            && equal(this.ipRanges, that.ipRanges)
+            && equal(this.allocatedIpAddresses, that.allocatedIpAddresses);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(inherited, gateway, netmask, dns1, dns2, 
dnsSuffix, ipRanges, allocatedIpAddresses);
+   }
+
+   @Override
+   public String toString() {
+      ToStringHelper helper = 
Objects.toStringHelper("").omitNullValues().add("inherited", 
inherited).add("gateway", gateway)
+            .add("netmask", netmask).add("dns1", dns1).add("dns2", 
dns2).add("dnsSuffix", dnsSuffix);
+      if (ipRanges.size() > 0)
+         helper.add("ipRanges", ipRanges);
+      if (allocatedIpAddresses.size() > 0)
+         helper.add("allocatedIpAddresses", allocatedIpAddresses);
+      return helper.toString();
+   }
+}

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/network/NatService.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NatService.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NatService.java
new file mode 100644
index 0000000..ea4c388
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NatService.java
@@ -0,0 +1,115 @@
+/*
+ * 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.network;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.network.nat.NatPolicy;
+import org.jclouds.vcloud.domain.network.nat.NatRule;
+import org.jclouds.vcloud.domain.network.nat.NatType;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * The NatService element defines the network address translation capabilities 
of a network.
+ */
+public class NatService {
+   private final boolean enabled;
+   @Nullable
+   private final NatType type;
+   @Nullable
+   private final NatPolicy policy;
+   private final List<NatRule> natRules = Lists.newArrayList();
+
+   public NatService(boolean enabled, @Nullable NatType type, @Nullable 
NatPolicy policy,
+            Iterable<NatRule> natRules) {
+      this.enabled = enabled;
+      this.type = type;
+      this.policy = policy;
+      Iterables.addAll(this.natRules, checkNotNull(natRules, "natRules"));
+   }
+
+   /**
+    * @return Nat rules for the network
+    * 
+    * @since vcloud api 0.8
+    */
+   public List<NatRule> getNatRules() {
+      return natRules;
+   }
+
+   /**
+    * @return true if the service is enabled
+    * 
+    * @since vcloud api 0.9
+    */
+   public boolean isEnabled() {
+      return enabled;
+   }
+
+   /**
+    * @return specifies how Network Address Translation is implemented by the 
NAT service
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public NatType getType() {
+      return type;
+   }
+
+   /**
+    * @return specifies how packets are handled by the NAT service.
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   public NatPolicy getPolicy() {
+      return policy;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      NatService that = NatService.class.cast(o);
+      return equal(this.enabled, that.enabled) && equal(this.type, that.type)
+            && equal(this.policy, that.policy) && equal(this.natRules, 
that.natRules);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(enabled, type, policy, natRules);
+   }
+
+   @Override
+   public String toString() {
+      ToStringHelper helper = 
Objects.toStringHelper("").omitNullValues().add("enabled", enabled)
+            .add("type", type).add("policy", policy);
+      if (natRules.size() > 0)
+         helper.add("natRules", natRules);
+      return helper.toString();
+   }
+}

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/network/NetworkConfig.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NetworkConfig.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NetworkConfig.java
new file mode 100644
index 0000000..79e6461
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/NetworkConfig.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.network;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+
+import org.jclouds.javax.annotation.Nullable;
+
+public class NetworkConfig {
+
+   public Builder toBuilder() {
+      return builder().fromNetworkConfig(this);
+   }
+
+   public static Builder builder() {
+      return new Builder();
+   }
+
+   public static class Builder {
+      private String networkName;
+      private URI parentNetwork;
+      private FenceMode fenceMode;
+
+      public Builder networkName(String networkName) {
+         this.networkName = networkName;
+         return this;
+      }
+
+      public Builder parentNetwork(URI parentNetwork) {
+         this.parentNetwork = parentNetwork;
+         return this;
+      }
+
+      public Builder fenceMode(FenceMode fenceMode) {
+         this.fenceMode = fenceMode;
+         return this;
+      }
+
+      public Builder fromNetworkConfig(NetworkConfig in) {
+         return 
networkName(in.getNetworkName()).parentNetwork(in.getParentNetwork()).fenceMode(in.getFenceMode());
+      }
+
+      public NetworkConfig build() {
+         return new NetworkConfig(networkName, parentNetwork, fenceMode);
+      }
+   }
+
+   @Nullable
+   private final String networkName;
+   private final URI parentNetwork;
+   @Nullable
+   private final FenceMode fenceMode;
+
+   /**
+    * 
+    * Create a new NetworkConfig.
+    * 
+    * @param networkName
+    *           a valid {@networkConfig
+    *           org.jclouds.vcloud.domain.VAppTemplate#getNetworkSection 
network in the vapp
+    *           template}, or null to have us choose default
+    * @param parentNetwork
+    *           a valid {@networkConfig 
org.jclouds.vcloud.domain.Org#getNetworks in
+    *           the Org}
+    * @param fenceMode
+    *           how to manage the relationship between the two networks
+    */
+   public NetworkConfig(String networkName, URI parentNetwork, FenceMode 
fenceMode) {
+      this.networkName = networkName;
+      this.parentNetwork = checkNotNull(parentNetwork, "parentNetwork");
+      this.fenceMode = fenceMode;
+   }
+
+   public NetworkConfig(URI parentNetwork) {
+      this(null, parentNetwork, null);
+   }
+
+   /**
+    * A name for the network. If the
+    * {@link org.jclouds.vcloud.domain.VAppTemplate#getNetworkSection} 
includes a
+    * {@link NetworkSection.Network} network element, the name you specify for 
the vApp network must
+    * match the name specified in that element’s name attribute.
+    * 
+    * @return
+    */
+   public String getNetworkName() {
+      return networkName;
+   }
+
+   /**
+    * 
+    * @return A reference to the organization network to which this network 
connects.
+    */
+   public URI getParentNetwork() {
+      return parentNetwork;
+   }
+
+   /**
+    * A value of bridged indicates that this vApp network is connected 
directly to the organization
+    * network.
+    */
+   public FenceMode getFenceMode() {
+      return fenceMode;
+   }
+
+   @Override
+   public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((fenceMode == null) ? 0 : 
fenceMode.hashCode());
+      result = prime * result + ((parentNetwork == null) ? 0 : 
parentNetwork.hashCode());
+      result = prime * result + ((networkName == null) ? 0 : 
networkName.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;
+      NetworkConfig other = (NetworkConfig) obj;
+      if (fenceMode == null) {
+         if (other.fenceMode != null)
+            return false;
+      } else if (!fenceMode.equals(other.fenceMode))
+         return false;
+      if (parentNetwork == null) {
+         if (other.parentNetwork != null)
+            return false;
+      } else if (!parentNetwork.equals(other.parentNetwork))
+         return false;
+      if (networkName == null) {
+         if (other.networkName != null)
+            return false;
+      } else if (!networkName.equals(other.networkName))
+         return false;
+      return true;
+   }
+
+   @Override
+   public String toString() {
+      return "[networkName=" + networkName + ", parentNetwork=" + 
parentNetwork + ", fenceMode=" + fenceMode + "]";
+   }
+}

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/network/OrgNetwork.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/OrgNetwork.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/OrgNetwork.java
new file mode 100644
index 0000000..f50d18c
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/OrgNetwork.java
@@ -0,0 +1,119 @@
+/*
+ * 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.network;
+
+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.Task;
+import org.jclouds.vcloud.domain.network.internal.OrgNetworkImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A vDC is a deployment environment for vApps. A Vdc element provides a user 
view of a vDC.
+ */
[email protected]
+@ImplementedBy(OrgNetworkImpl.class)
+public interface OrgNetwork extends ReferenceType {
+   /**
+    * The org this network belongs to.
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   ReferenceType getOrg();
+
+   /**
+    * 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 0.9
+    */
+   List<Task> getTasks();
+
+   /**
+    * 
+    * @return properties of the network
+    * 
+    * @since vcloud api 0.9, but emulated for 0.8
+    */
+   Configuration getConfiguration();
+
+   /**
+    * A reference the network pool from which this network is provisioned. 
This element, which is
+    * required when creating a NatRouted or Isolated network, is returned in 
response to a creation
+    * request but not shown in subsequent GET requests.
+    * 
+    * @since vcloud api 0.9
+    */
+   @Nullable
+   ReferenceType getNetworkPool();
+
+   /**
+    * list of external IP addresses that this network can use for NAT.
+    * 
+    * @since vcloud api 0.9
+    */
+   Set<String> getAllowedExternalIpAddresses();
+
+   /**
+    * The Configuration element specifies properties of a network.
+    */
+   interface Configuration {
+      /**
+       * defines the address range, gateway, netmask, and other properties of 
the network.
+       * 
+       * @since vcloud api 0.9, but emulated for 0.8
+       */
+      @Nullable
+      IpScope getIpScope();
+
+      /**
+       * reference to a network to which this network connects
+       * 
+       * @since vcloud api 0.9
+       */
+      @Nullable
+      ReferenceType getParentNetwork();
+
+      /**
+       * defines how this network is connected to its ParentNetwork
+       * 
+       * @since vcloud api 0.8
+       */
+      FenceMode getFenceMode();
+
+      /**
+       * defines a set of network features.
+       * 
+       * @since vcloud api 0.9, but emulated for 0.8
+       */
+      @Nullable Features getFeatures();
+   }
+
+}

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/network/firewall/FirewallPolicy.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallPolicy.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallPolicy.java
new file mode 100644
index 0000000..44a5e81
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallPolicy.java
@@ -0,0 +1,53 @@
+/*
+ * 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.network.firewall;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * specifies how packets are handled by the firewall
+ */
+public enum FirewallPolicy {
+   /**
+    * drop packets of this type
+    */
+   DROP,
+   /**
+    * allow packets of this type to pass through the firewall
+    */
+   ALLOW, UNRECOGNIZED;
+
+   public String value() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static FirewallPolicy fromValue(String policy) {
+      try {
+         return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, 
checkNotNull(policy, "policy")));
+      } 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/network/firewall/FirewallProtocols.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallProtocols.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallProtocols.java
new file mode 100644
index 0000000..8b09dc2
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallProtocols.java
@@ -0,0 +1,71 @@
+/*
+ * 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.network.firewall;
+
+import static com.google.common.base.Objects.equal;
+
+import com.google.common.base.Objects;
+
+/**
+ * The Protocols element specifies the protocols to which firewall rules apply.
+ * 
+ * @since vcloud api 0.9 emulated for 0.8
+ */
+public class FirewallProtocols {
+   private final boolean tcp;
+   private final boolean udp;
+
+   public FirewallProtocols(boolean tcp, boolean udp) {
+      this.tcp = tcp;
+      this.udp = udp;
+   }
+
+   /**
+    * @return true if the firewall rules apply to the TCP protocol
+    */
+   public boolean isTcp() {
+      return tcp;
+   }
+
+   /**
+    * @return true if the firewall rules apply to the UDP protocol
+    */
+   public boolean isUdp() {
+      return udp;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      FirewallProtocols that = FirewallProtocols.class.cast(o);
+      return equal(this.tcp, that.tcp) && equal(this.udp, that.udp);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(tcp, udp);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("tcp", 
tcp).add("udp", udp).toString();
+   }
+
+}

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/network/firewall/FirewallRule.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallRule.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallRule.java
new file mode 100644
index 0000000..dfb578b
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/firewall/FirewallRule.java
@@ -0,0 +1,124 @@
+/*
+ * 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.network.firewall;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * The FirewallRule element defines a single firewall rule.
+ * 
+ * @since vcloud api 0.8
+ */
+public class FirewallRule {
+
+   private final boolean enabled;
+   @Nullable
+   private final String description;
+   @Nullable
+   private final FirewallPolicy policy;
+   @Nullable
+   private final FirewallProtocols protocols;
+   private final int port;
+   private final String destinationIp;
+
+   public FirewallRule(boolean enabled, @Nullable String description, 
@Nullable FirewallPolicy policy,
+            @Nullable FirewallProtocols protocols, int port, String 
destinationIp) {
+      this.enabled = enabled;
+      this.description = description;
+      this.policy = policy;
+      this.protocols = protocols;
+      this.port = port;
+      this.destinationIp = checkNotNull(destinationIp, "destinationIp");
+   }
+
+   /**
+    * @return true if the rule is enabled
+    */
+   public boolean isEnabled() {
+      return enabled;
+   }
+
+   /**
+    * @return description of the rule
+    */
+   @Nullable
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * @return specifies how packets are handled by the firewall
+    */
+   @Nullable
+   public FirewallPolicy getPolicy() {
+      return policy;
+   }
+
+   /**
+    * @return specifies the protocols to which this firewall rule applies
+    */
+   @Nullable
+   public FirewallProtocols getProtocols() {
+      return protocols;
+   }
+
+   /**
+    * @return specifies the network port to which this firewall rule applies. 
A value of ‐1 matches
+    *         any port.
+    */
+   public int getPort() {
+      return port;
+   }
+
+   /**
+    * @return specifies the destination IP address, inside the firewall, to 
which this firewall rule
+    *         applies
+    */
+   public String getDestinationIp() {
+      return destinationIp;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      FirewallRule that = FirewallRule.class.cast(o);
+      return equal(this.enabled, that.enabled) && equal(this.description, 
that.description)
+            && equal(this.policy, that.policy) && equal(this.protocols, 
that.protocols) && equal(this.port, that.port)
+            && equal(this.destinationIp, that.destinationIp);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(enabled, description, policy, protocols, port, 
destinationIp);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("enabled", 
enabled).add("description", description)
+            .add("policy", policy).add("protocols", protocols).add("port", 
port).add("destinationIp", destinationIp)
+            .toString();
+   }
+
+}

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/network/internal/OrgNetworkImpl.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/internal/OrgNetworkImpl.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/internal/OrgNetworkImpl.java
new file mode 100644
index 0000000..76a394f
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/internal/OrgNetworkImpl.java
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.vcloud.domain.network.internal;
+
+import static com.google.common.base.Objects.equal;
+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.Task;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.jclouds.vcloud.domain.network.Features;
+import org.jclouds.vcloud.domain.network.FenceMode;
+import org.jclouds.vcloud.domain.network.IpScope;
+import org.jclouds.vcloud.domain.network.OrgNetwork;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+public class OrgNetworkImpl extends ReferenceTypeImpl implements OrgNetwork {
+   @Nullable
+   private final ReferenceType org;
+   @Nullable
+   private final String description;
+   private final List<Task> tasks = Lists.newArrayList();
+   private final Configuration configuration;
+   @Nullable
+   private final ReferenceType networkPool;
+   private final Set<String> allowedExternalIpAddresses = 
Sets.newLinkedHashSet();
+
+   public OrgNetworkImpl(String name, String type, URI id, @Nullable 
ReferenceType org, @Nullable String description,
+            Iterable<Task> tasks, Configuration configuration, @Nullable 
ReferenceType networkPool,
+            Iterable<String> allowedExternalIpAddresses) {
+      super(name, type, id);
+      this.org = org;
+      this.description = description;
+      Iterables.addAll(this.tasks, checkNotNull(tasks, "tasks"));
+      this.configuration = checkNotNull(configuration, "configuration");
+      this.networkPool = networkPool;
+      Iterables.addAll(this.allowedExternalIpAddresses, 
checkNotNull(allowedExternalIpAddresses,
+               "allowedExternalIpAddresses"));
+   }
+
+   public static class ConfigurationImpl implements Configuration {
+
+      @Nullable
+      private final IpScope ipScope;
+      @Nullable
+      private final ReferenceType parentNetwork;
+      private final FenceMode fenceMode;
+      private final Features features;
+
+      public ConfigurationImpl(@Nullable IpScope ipScope, @Nullable 
ReferenceType parentNetwork, FenceMode fenceMode,
+               @Nullable Features features) {
+         this.ipScope = ipScope;
+         this.parentNetwork = parentNetwork;
+         this.fenceMode = checkNotNull(fenceMode, "fenceMode");
+         this.features = features;
+      }
+
+      /**
+       * {@inheritDoc}
+       */
+      @Override
+      public IpScope getIpScope() {
+         return ipScope;
+      }
+
+      /**
+       * {@inheritDoc}
+       */
+      @Override
+      public ReferenceType getParentNetwork() {
+         return parentNetwork;
+      }
+
+      /**
+       * {@inheritDoc}
+       */
+      @Override
+      public FenceMode getFenceMode() {
+         return fenceMode;
+      }
+
+      /**
+       * {@inheritDoc}
+       */
+      @Override
+      @Nullable
+      public Features getFeatures() {
+         return features;
+      }
+
+      @Override
+      public boolean equals(Object o) {
+         if (this == o)
+            return true;
+         if (o == null || getClass() != o.getClass())
+            return false;
+         ConfigurationImpl that = ConfigurationImpl.class.cast(o);
+         return equal(this.ipScope, that.ipScope) && equal(this.parentNetwork, 
that.parentNetwork)
+               && equal(this.fenceMode, that.fenceMode) && 
equal(this.features, that.features);
+      }
+
+      @Override
+      public int hashCode() {
+         return Objects.hashCode(ipScope, parentNetwork, fenceMode, features);
+      }
+
+      @Override
+      public String toString() {
+         return Objects.toStringHelper("").omitNullValues().add("ipScope", 
ipScope).add("parentNetwork", parentNetwork)
+               .add("fenceMode", fenceMode).add("features", 
features).toString();
+      }
+
+   }
+
+   /**
+    * {@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 Configuration getConfiguration() {
+      return configuration;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public ReferenceType getNetworkPool() {
+      return networkPool;
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Set<String> getAllowedExternalIpAddresses() {
+      return allowedExternalIpAddresses;
+   }
+
+   @Override
+   public ToStringHelper string() {
+      ToStringHelper helper = super.string().add("org", 
org).add("description", description)
+            .add("configuration", configuration).add("networkPool", 
networkPool);
+      if (allowedExternalIpAddresses.size() > 0)
+         helper.add("allowedExternalIpAddresses", allowedExternalIpAddresses);
+      if (tasks.size() > 0)
+         helper.add("tasks", tasks);
+      return helper;
+   }
+
+}

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/network/nat/NatPolicy.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatPolicy.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatPolicy.java
new file mode 100644
index 0000000..8a49b33
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatPolicy.java
@@ -0,0 +1,53 @@
+/*
+ * 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.network.nat;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * The Policy element of a NatService element specifies how packets are 
handled by the NAT service.
+ */
+public enum NatPolicy {
+   /**
+    * packets of this type pass through the firewall in both directions
+    */
+   ALLOW_TRAFFIC,
+   /**
+    * only inbound packets of this type pass through the firewall
+    */
+   ALLOW_TRAFFIC_IN, UNRECOGNIZED;
+
+   public String value() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static NatPolicy fromValue(String policy) {
+      try {
+         return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, 
checkNotNull(policy, "policy")));
+      } 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/network/nat/NatProtocol.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatProtocol.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatProtocol.java
new file mode 100644
index 0000000..7204bae
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatProtocol.java
@@ -0,0 +1,46 @@
+/*
+ * 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.network.nat;
+
+
+/**
+ * 
+ * The Protocol specifies the network protocol to which this rule applies
+ * 
+ * @since vcloud api 0.9
+ */
+public enum NatProtocol {
+   /**
+    * the rule applies to the TCP protocol
+    * 
+    * @since vcloud api 0.9
+    */
+   TCP,
+   /**
+    * the rule applies to the UDP protocol
+    * 
+    * @since vcloud api 0.9
+    */
+   UDP,
+   /**
+    * the rule applies to the TCP and UDP protocols.
+    * 
+    * @since vcloud api 0.9
+    */
+   TCP_UDP;
+
+}

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/network/nat/NatRule.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatRule.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatRule.java
new file mode 100644
index 0000000..b9ca510
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatRule.java
@@ -0,0 +1,33 @@
+/*
+ * 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.network.nat;
+
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * 
+ * Defines a rule associated with Nat
+ * 
+ * @since vcloud api 0.9
+ */
+public interface NatRule {
+   /**
+    * IP address to which this NAT rule maps the IP address specified in the 
InternalIp element.
+    */
+   @Nullable
+   String getExternalIP();
+}

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/network/nat/NatType.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatType.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatType.java
new file mode 100644
index 0000000..98b95e2
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/NatType.java
@@ -0,0 +1,59 @@
+/*
+ * 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.network.nat;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * 
+ * The NatType element specifies how network address translation is 
implemented by the NAT service.
+ * 
+ * @since vcloud api 0.9
+ */
+public enum NatType {
+   /**
+    * NAT service implemented by IP address translation
+    * 
+    * @since vcloud api 0.9
+    */
+   IP_TRANSLATION,
+   /**
+    * NAT service implemented by network port forwarding
+    * 
+    * @since vcloud api 0.9
+    */
+   PORT_FORWARDING, UNRECOGNIZED;
+
+   public String value() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static NatType fromValue(String natType) {
+      try {
+         return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, 
checkNotNull(natType, "natType")));
+      } 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/network/nat/rules/MappingMode.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/MappingMode.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/MappingMode.java
new file mode 100644
index 0000000..6d71116
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/MappingMode.java
@@ -0,0 +1,53 @@
+/*
+ * 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.network.nat.rules;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * The MappingMode element specifies how IP address mapping is implemented by 
the NAT service.
+ */
+public enum MappingMode {
+   /**
+    * the external IP address is specified in the ExternalIP element
+    */
+   MANUAL,
+   /**
+    * the external IP address is assigned automatically
+    */
+   AUTOMATIC, UNRECOGNIZED;
+
+   public String value() {
+      return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, name());
+   }
+
+   @Override
+   public String toString() {
+      return value();
+   }
+
+   public static MappingMode fromValue(String mode) {
+      try {
+         return valueOf(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, 
checkNotNull(mode, "mode")));
+      } 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/network/nat/rules/OneToOneVmRule.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/OneToOneVmRule.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/OneToOneVmRule.java
new file mode 100644
index 0000000..c2b1b4b
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/OneToOneVmRule.java
@@ -0,0 +1,109 @@
+/*
+ * 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.network.nat.rules;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.network.nat.NatRule;
+
+import com.google.common.base.Objects;
+
+/**
+ * The OneToOneVmRule element describes a NAT rule that specifies network 
address translation
+ * details for a single virtual machine. The external IP address can be 
specified manually or
+ * assigned automatically at deployment time. The internal IP address is 
discovered by looking up
+ * the specified VmReference and NIC ID.
+ * 
+ * @since vcloud 0.9
+ */
+public class OneToOneVmRule implements NatRule {
+   private final MappingMode mappingMode;
+   @Nullable
+   private final String externalIP;
+   @Nullable
+   private final String vAppScopedVmId;
+   private final int vmNicId;
+
+   public OneToOneVmRule(MappingMode mappingMode, @Nullable String externalIp, 
@Nullable String vAppScopedVmId,
+            int vmNicId) {
+      this.mappingMode = checkNotNull(mappingMode, "mappingMode");
+      this.externalIP = externalIp;
+      this.vAppScopedVmId = vAppScopedVmId;
+      this.vmNicId = vmNicId;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      OneToOneVmRule that = OneToOneVmRule.class.cast(o);
+      return equal(this.mappingMode, that.mappingMode) && 
equal(this.externalIP, that.externalIP)
+            && equal(this.vAppScopedVmId, that.vAppScopedVmId) && 
equal(this.vmNicId, that.vmNicId);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(mappingMode, externalIP, vAppScopedVmId, 
vmNicId);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("mappingMode", 
mappingMode).add("externalIP", externalIP)
+            .add("vAppScopedVmId", vAppScopedVmId).add("vmNicId", 
vmNicId).toString();
+   }
+
+   /**
+    * @return how IP address mapping is implemented by the NAT service
+    * @since vcloud 0.9
+    */
+   public MappingMode getMappingMode() {
+      return mappingMode;
+   }
+
+   /**
+    * @return if MappingMode is manual, specifies the external IP address of 
this Vm, otherwise
+    *         null.
+    * @since vcloud 0.9
+    */
+   @Nullable
+   @Override
+   public String getExternalIP() {
+      return externalIP;
+   }
+
+   /**
+    * @return read‐only identifier created on import
+    * @since vcloud 0.9
+    */
+   @Nullable
+   public String getVAppScopedVmId() {
+      return vAppScopedVmId;
+   }
+
+   /**
+    * @return device number of the NIC on the referenced virtual machine
+    * @since vcloud 0.9
+    */
+   public int getVmNicId() {
+      return vmNicId;
+   }
+
+}

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/network/nat/rules/PortForwardingRule.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/PortForwardingRule.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/PortForwardingRule.java
new file mode 100644
index 0000000..3170a73
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/PortForwardingRule.java
@@ -0,0 +1,110 @@
+/*
+ * 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.network.nat.rules;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.vcloud.domain.network.nat.NatProtocol;
+import org.jclouds.vcloud.domain.network.nat.NatRule;
+
+import com.google.common.base.Objects;
+
+/**
+ * The PortForwardingRule element describes a NAT rule that maps an IP address 
and port in an
+ * organization network to an external IP address and port.
+ * 
+ * @since vcloud 0.8
+ */
+public class PortForwardingRule implements NatRule {
+   private final String externalIP;
+   private final int externalPort;
+   private final String internalIP;
+   private final int internalPort;
+   private final NatProtocol protocol;
+
+   public PortForwardingRule(String externalIP, int externalPort, String 
internalIP, int internalPort,
+            NatProtocol protocol) {
+      this.externalIP = checkNotNull(externalIP, "externalIP");
+      this.externalPort = externalPort;
+      this.internalIP = checkNotNull(internalIP, "internalIP");
+      this.internalPort = internalPort;
+      this.protocol = checkNotNull(protocol, "protocol");
+   }
+
+   /**
+    * IP address to which this NAT rule maps the IP address specified in the 
InternalIp element.
+    */
+   @Override
+   public String getExternalIP() {
+      return externalIP;
+   }
+
+   /**
+    * network port to which this NAT rule maps the port number specified in 
the InternalPort element
+    */
+   public int getExternalPort() {
+      return externalPort;
+   }
+
+   /**
+    * IP address to which this NAT rule maps the IP address specified in the 
ExternalIp element.
+    */
+   public String getInternalIP() {
+      return internalIP;
+   }
+
+   /**
+    * network port to which this NAT rule maps the port number specified in 
the ExternalPort
+    * element.
+    */
+   public int getInternalPort() {
+      return internalPort;
+   }
+
+   /**
+    * specifies the network protocol to which this rule applies
+    */
+   public NatProtocol getProtocol() {
+      return protocol;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      PortForwardingRule that = PortForwardingRule.class.cast(o);
+      return equal(this.externalIP, that.externalIP) && 
equal(this.externalPort, that.externalPort)
+            && equal(this.internalIP, that.internalIP) && 
equal(this.internalPort, that.internalPort)
+            && equal(this.protocol, that.protocol);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(externalIP, externalPort, internalIP, 
internalPort, protocol);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("externalIP", 
externalIP)
+            .add("externalPort", externalPort).add("internalIP", 
internalIP).add("internalPort", internalPort)
+            .add("protocol", protocol).toString();
+   }
+
+}

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/network/nat/rules/VmRule.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/VmRule.java
 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/VmRule.java
new file mode 100644
index 0000000..8793a58
--- /dev/null
+++ 
b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/network/nat/rules/VmRule.java
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.vcloud.domain.network.nat.rules;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.network.nat.NatProtocol;
+import org.jclouds.vcloud.domain.network.nat.NatRule;
+
+import com.google.common.base.Objects;
+
+/**
+ * The VmRule element describes a NAT rule that maps an IP address and port in 
a vApp network to an
+ * external IP address and port. The external IP address, external port, and 
internal port are
+ * specified in the element. The internal IP address is discovered by looking 
up the specified
+ * VmReference and VmNicId.
+ * 
+ * @since vcloud 0.9
+ */
+public class VmRule implements NatRule {
+   @Nullable
+   private final String externalIP;
+   private final int externalPort;
+   @Nullable
+   private final String vAppScopedLocalId;
+   private final int vmNicId;
+   private final int internalPort;
+   private final NatProtocol protocol;
+
+   public VmRule(@Nullable String externalIP, int externalPort, @Nullable 
String vAppScopedLocalId, int vmNicId,
+            int internalPort, NatProtocol protocol) {
+      this.externalIP = externalIP;
+      this.externalPort = externalPort;
+      this.vAppScopedLocalId = vAppScopedLocalId;
+      this.vmNicId = vmNicId;
+      this.internalPort = internalPort;
+      this.protocol = checkNotNull(protocol, "protocol");
+   }
+
+   /**
+    * IP address to which this NAT rule maps the IP address specified in the 
vAppScopedLocalId element.
+    */
+   @Nullable
+   public String getExternalIP() {
+      return externalIP;
+   }
+
+   /**
+    * network port to which this NAT rule maps the port number specified in 
the InternalPort element
+    */
+   public Integer getExternalPort() {
+      return externalPort;
+   }
+
+   /**
+    * @return read‐only identifier created on import
+    * @since vcloud 0.9
+    */
+   @Nullable
+   public String getVAppScopedLocalId() {
+      return vAppScopedLocalId;
+   }
+
+   /**
+    * @return device number of the NIC on the referenced virtual machine
+    * @since vcloud 0.9
+    */
+   public int getVmNicId() {
+      return vmNicId;
+   }
+
+   /**
+    * network port to which this NAT rule maps the port number specified in 
the ExternalPort
+    * element.
+    */
+   public Integer getInternalPort() {
+      return internalPort;
+   }
+
+   /**
+    * specifies the network protocol to which this rule applies
+    */
+   public NatProtocol getProtocol() {
+      return protocol;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+      VmRule that = VmRule.class.cast(o);
+      return equal(this.externalIP, that.externalIP) && 
equal(this.externalPort, that.externalPort)
+            && equal(this.vAppScopedLocalId, that.vAppScopedLocalId) && 
equal(this.vmNicId, that.vmNicId)
+            && equal(this.internalPort, that.internalPort) && 
equal(this.protocol, that.protocol);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(externalIP, externalPort, vAppScopedLocalId, 
vmNicId, internalPort, protocol);
+   }
+
+   @Override
+   public String toString() {
+      return Objects.toStringHelper("").omitNullValues().add("externalIP", 
externalIP)
+            .add("externalPort", externalPort).add("vAppScopedLocalId", 
vAppScopedLocalId).add("vmNicId", vmNicId)
+            .add("internalPort", internalPort).add("protocol", 
protocol).toString();
+   }
+
+}

Reply via email to