You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2014/11/27 15:32:34 UTC

[19/24] jclouds-labs git commit: JCLOUDS-785: Leave only Abiquo skeleton to start coding Abiquo 3 provider

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/event/Event.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/Event.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/Event.java
deleted file mode 100644
index 2a478db..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/Event.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * 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.abiquo.domain.event;
-
-import java.util.Date;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
-import org.jclouds.rest.ApiContext;
-
-import com.abiquo.model.enumerator.SeverityType;
-import com.abiquo.server.core.event.EventDto;
-
-public class Event extends DomainWrapper<EventDto> {
-   /**
-    * Constructor to be used only by the builder.
-    */
-   protected Event(final ApiContext<AbiquoApi> context, final EventDto target) {
-      super(context, target);
-   }
-
-   // Delegate methods
-
-   public Integer getId() {
-      return target.getId();
-   }
-
-   public String getUser() {
-      return target.getUser();
-   }
-
-   public void setUser(final String user) {
-      target.setUser(user);
-   }
-
-   public String getStacktrace() {
-      return target.getStacktrace();
-   }
-
-   public void setStacktrace(final String stacktrace) {
-      target.setStacktrace(stacktrace);
-   }
-
-   public String getComponent() {
-      return target.getComponent();
-   }
-
-   public void setComponent(final String component) {
-      target.setComponent(component);
-   }
-
-   public String getPerformedBy() {
-      return target.getPerformedBy();
-   }
-
-   public void setPerformedBy(final String performedBy) {
-      target.setPerformedBy(performedBy);
-   }
-
-   public Integer getIdNetwork() {
-      return target.getIdNetwork();
-   }
-
-   public void setIdNetwork(final Integer idNetwork) {
-      target.setIdNetwork(idNetwork);
-   }
-
-   public String getIdVolume() {
-      return target.getIdVolume();
-   }
-
-   public void setIdVolume(final String idVolume) {
-      target.setIdVolume(idVolume);
-   }
-
-   public String getStoragePool() {
-      return target.getStoragePool();
-   }
-
-   public void setStoragePool(final String storagePool) {
-      target.setStoragePool(storagePool);
-   }
-
-   public Date getTimestamp() {
-      return target.getTimestamp();
-   }
-
-   public void setTimestamp(final Date timestamp) {
-      target.setTimestamp(timestamp);
-   }
-
-   public String getVirtualApp() {
-      return target.getVirtualApp();
-   }
-
-   public void setVirtualApp(final String virtualApp) {
-      target.setVirtualApp(virtualApp);
-   }
-
-   public String getDatacenter() {
-      return target.getDatacenter();
-   }
-
-   public void setDatacenter(final String datacenter) {
-      target.setDatacenter(datacenter);
-   }
-
-   public String getActionPerformed() {
-      return target.getActionPerformed();
-   }
-
-   public void setActionPerformed(final String actionPerformed) {
-      target.setActionPerformed(actionPerformed);
-   }
-
-   public Integer getIdVirtualMachine() {
-      return target.getIdVirtualMachine();
-   }
-
-   public void setIdVirtualMachine(final Integer idVirtualMachine) {
-      target.setIdVirtualMachine(idVirtualMachine);
-   }
-
-   public String getVirtualDatacenter() {
-      return target.getVirtualDatacenter();
-   }
-
-   public void setVirtualDatacenter(final String virtualDatacenter) {
-      target.setVirtualDatacenter(virtualDatacenter);
-   }
-
-   public String getEnterprise() {
-      return target.getEnterprise();
-   }
-
-   public void setEnterprise(final String enterprise) {
-      target.setEnterprise(enterprise);
-   }
-
-   public String getStorageSystem() {
-      return target.getStorageSystem();
-   }
-
-   public void setStorageSystem(final String storageSystem) {
-      target.setStorageSystem(storageSystem);
-   }
-
-   public Integer getIdPhysicalMachine() {
-      return target.getIdPhysicalMachine();
-   }
-
-   public void setIdPhysicalMachine(final Integer idPhysicalMachine) {
-      target.setIdPhysicalMachine(idPhysicalMachine);
-   }
-
-   public SeverityType getSeverity() {
-      return target.getSeverity();
-   }
-
-   public void setSeverity(final SeverityType severity) {
-      target.setSeverity(severity);
-   }
-
-   public Integer getIdStorageSystem() {
-      return target.getIdStorageSystem();
-   }
-
-   public void setIdStorageSystem(final Integer idStorageSystem) {
-      target.setIdStorageSystem(idStorageSystem);
-   }
-
-   public Integer getIdDatacenter() {
-      return target.getIdDatacenter();
-   }
-
-   public void setIdDatacenter(final Integer idDatacenter) {
-      target.setIdDatacenter(idDatacenter);
-   }
-
-   public String getNetwork() {
-      return target.getNetwork();
-   }
-
-   public void setNetwork(final String network) {
-      target.setNetwork(network);
-   }
-
-   public String getPhysicalMachine() {
-      return target.getPhysicalMachine();
-   }
-
-   public void setPhysicalMachine(final String physicalMachine) {
-      target.setPhysicalMachine(physicalMachine);
-   }
-
-   public String getRack() {
-      return target.getRack();
-   }
-
-   public void setRack(final String rack) {
-      target.setRack(rack);
-   }
-
-   public Integer getIdVirtualDatacenter() {
-      return target.getIdVirtualDatacenter();
-   }
-
-   public void setIdVirtualDatacenter(final Integer idVirtualDatacenter) {
-      target.setIdVirtualDatacenter(idVirtualDatacenter);
-   }
-
-   public Integer getIdSubnet() {
-      return target.getIdSubnet();
-   }
-
-   public void setIdSubnet(final Integer idSubnet) {
-      target.setIdSubnet(idSubnet);
-   }
-
-   public String getVolume() {
-      return target.getVolume();
-   }
-
-   public void setVolume(final String volume) {
-      target.setVolume(volume);
-   }
-
-   public String getSubnet() {
-      return target.getSubnet();
-   }
-
-   public void setSubnet(final String subnet) {
-      target.setSubnet(subnet);
-   }
-
-   public Integer getIdUser() {
-      return target.getIdUser();
-   }
-
-   public void setIdUser(final Integer idUser) {
-      target.setIdUser(idUser);
-   }
-
-   public String getIdStoragePool() {
-      return target.getIdStoragePool();
-   }
-
-   public void setIdStoragePool(final String idStoragePool) {
-      target.setIdStoragePool(idStoragePool);
-   }
-
-   public Integer getIdRack() {
-      return target.getIdRack();
-   }
-
-   public void setIdRack(final Integer idRack) {
-      target.setIdRack(idRack);
-   }
-
-   public String getVirtualMachine() {
-      return target.getVirtualMachine();
-   }
-
-   public void setVirtualMachine(final String virtualMachine) {
-      target.setVirtualMachine(virtualMachine);
-   }
-
-   public Integer getIdVirtualApp() {
-      return target.getIdVirtualApp();
-   }
-
-   public void setIdVirtualApp(final Integer idVirtualApp) {
-      target.setIdVirtualApp(idVirtualApp);
-   }
-
-   public Integer getIdEnterprise() {
-      return target.getIdEnterprise();
-   }
-
-   public void setIdEnterprise(final Integer idEnterprise) {
-      target.setIdEnterprise(idEnterprise);
-   }
-
-   @Override
-   public String toString() {
-      return "Event [id=" + getId() + ", idUser=" + getIdUser() + ", user=" + getUser() + ", idEnterprise="
-            + getIdEnterprise() + ", enterprise=" + getEnterprise() + ", actionPerformed=" + getActionPerformed()
-            + ", component=" + getComponent() + ", idDatacenter=" + getIdDatacenter() + ", datacenter="
-            + getDatacenter() + ", idStoragePool=" + getIdStoragePool() + ", storagePool=" + getStoragePool()
-            + ", idVolume=" + getIdVolume() + ", volume=" + getVolume() + ", idNetwork=" + getIdNetwork()
-            + ", network=" + getNetwork() + ", idPhysicalMachine=" + getIdPhysicalMachine() + ", physicalMachine="
-            + getPhysicalMachine() + ", idRack=" + getIdRack() + ", rack=" + getRack() + ", idStorageSystem="
-            + getIdStorageSystem() + ", storageSystem=" + getStorageSystem() + ", idSubnet=" + getIdSubnet()
-            + ", subnet=" + getSubnet() + ", idVirtualApp=" + getIdVirtualApp() + ", virtualApp=" + getVirtualApp()
-            + ", idVirtualDatacenter=" + getIdVirtualDatacenter() + ", virtualDatacenter=" + getVirtualDatacenter()
-            + ", idVirtualMachine=" + getIdVirtualMachine() + ", virtualMachine=" + getVirtualMachine()
-            + ", stacktrace=" + getStacktrace() + ", performedBy=" + getPerformedBy() + ", severity=" + getSeverity()
-            + "]";
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
deleted file mode 100644
index 183b981..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/event/options/EventOptions.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * 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.abiquo.domain.event.options;
-
-import java.util.Date;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder;
-import org.jclouds.http.options.BaseHttpRequestOptions;
-
-import com.abiquo.model.enumerator.ComponentType;
-import com.abiquo.model.enumerator.EventType;
-import com.abiquo.model.enumerator.SeverityType;
-import com.google.common.collect.Maps;
-
-/**
- * Available options to query events.
- */
-public class EventOptions extends BaseHttpRequestOptions {
-   public static Builder builder() {
-      return new Builder();
-   }
-
-   @Override
-   protected Object clone() throws CloneNotSupportedException {
-      EventOptions options = new EventOptions();
-      options.queryParameters.putAll(queryParameters);
-      return options;
-   }
-
-   public static class Builder extends BaseFilterOptionsBuilder<Builder> {
-      private Map<String, String> filters = Maps.newHashMap();
-
-      public Builder filters(final Map<String, String> filters) {
-         this.filters = filters;
-         return this;
-      }
-
-      public Builder severity(final SeverityType severity) {
-         this.filters.put("severity", severity.name());
-         return this;
-      }
-
-      public Builder component(final ComponentType component) {
-         this.filters.put("component", component.name());
-         return this;
-      }
-
-      public Builder actionPerformed(final EventType action) {
-         this.filters.put("actionperformed", action.name());
-         return this;
-      }
-
-      public Builder datacenterName(final String dc) {
-         this.filters.put("datacenter", dc);
-         return this;
-      }
-
-      public Builder rackName(final String rack) {
-         this.filters.put("rack", rack);
-         return this;
-      }
-
-      public Builder physicalMachineName(final String pm) {
-         this.filters.put("physicalmachine", pm);
-         return this;
-      }
-
-      public Builder storageSystemName(final String ss) {
-         this.filters.put("storagesystem", ss);
-         return this;
-      }
-
-      public Builder storagePoolName(final String sp) {
-         this.filters.put("storagepool", sp);
-         return this;
-      }
-
-      public Builder volumeName(final String volume) {
-         this.filters.put("volume", volume);
-         return this;
-      }
-
-      public Builder networkName(final String network) {
-         this.filters.put("network", network);
-         return this;
-      }
-
-      public Builder subnetName(final String subnet) {
-         this.filters.put("subnet", subnet);
-         return this;
-      }
-
-      public Builder enterpriseName(final String ent) {
-         this.filters.put("enterprise", ent);
-         return this;
-      }
-
-      public Builder userName(final String user) {
-         this.filters.put("user", user);
-         return this;
-      }
-
-      public Builder virtualDatacenterName(final String vdc) {
-         this.filters.put("virtualdatacenter", vdc);
-         return this;
-      }
-
-      public Builder virtualAppName(final String vapp) {
-         this.filters.put("virtualapp", vapp);
-         return this;
-      }
-
-      public Builder virtualMachineName(final String vm) {
-         this.filters.put("virtualMachine", vm);
-         return this;
-      }
-
-      public Builder performedBy(final String pb) {
-         this.filters.put("performedBy", pb);
-         return this;
-      }
-
-      public Builder description(final String description) {
-         this.filters.put("stacktrace", description);
-         return this;
-      }
-
-      public Builder dateFrom(final Date date) {
-         this.filters.put("datefrom", String.valueOf(date.getTime()));
-         return this;
-      }
-
-      public Builder dateTo(final Date date) {
-         this.filters.put("dateTo", String.valueOf(date.getTime()));
-         return this;
-      }
-
-      public EventOptions build() {
-         EventOptions options = new EventOptions();
-
-         for (Entry<String, String> filter : filters.entrySet()) {
-            options.queryParameters.put(filter.getKey(), filter.getValue());
-         }
-
-         return addFilterOptions(options);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/AbiquoException.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/AbiquoException.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/AbiquoException.java
deleted file mode 100644
index c9df896..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/AbiquoException.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.abiquo.domain.exception;
-
-import static com.google.common.collect.Iterables.any;
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.find;
-
-import java.util.List;
-
-import javax.ws.rs.core.Response.Status;
-
-import com.abiquo.model.transport.error.ErrorDto;
-import com.abiquo.model.transport.error.ErrorsDto;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-
-/**
- * Abiquo API exception.
- */
-public class AbiquoException extends RuntimeException {
-
-   private static final long serialVersionUID = 3627304442037389536L;
-
-   /** The HTTP status. */
-   private Status httpStatus;
-
-   /** The errors. */
-   private ErrorsDto errors;
-
-   public AbiquoException(final Status httpStatus, final ErrorsDto errors) {
-      super();
-      this.httpStatus = httpStatus;
-      this.errors = errors;
-   }
-
-   /**
-    * Check if there is an error with the given code.
-    */
-   public boolean hasError(final String code) {
-      return any(errors.getCollection(), code(code));
-   }
-
-   /**
-    * Find the first error with the given code.
-    */
-   public ErrorDto findError(final String code) {
-      return find(errors.getCollection(), code(code), null);
-   }
-
-   /**
-    * Find all errors with the given code.
-    */
-   public List<ErrorDto> findErrors(final String code) {
-      return ImmutableList.copyOf(filter(errors.getCollection(), code(code)));
-   }
-
-   /**
-    * Get the number of errors.
-    */
-   public int numErrors() {
-      return errors.getCollection().size();
-   }
-
-   /**
-    * Get the list of all errors.
-    */
-   public List<ErrorDto> getErrors() {
-      return errors.getCollection();
-   }
-
-   /**
-    * Get the HTTP status code.
-    */
-   public int getHttpStatusCode() {
-      return httpStatus.getStatusCode();
-   }
-
-   /**
-    * Get the HTTP status name.
-    */
-   public String getHttpStatusName() {
-      return httpStatus.getReasonPhrase();
-   }
-
-   /**
-    * Get the HTTP status.
-    */
-   public Status getHttpStatus() {
-      return httpStatus;
-   }
-
-   @Override
-   public String getMessage() {
-      return errors.toString();
-   }
-
-   private static Predicate<ErrorDto> code(final String code) {
-      return new Predicate<ErrorDto>() {
-         @Override
-         public boolean apply(ErrorDto input) {
-            return input.getCode().equals(code);
-         }
-      };
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/BuilderException.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/BuilderException.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/BuilderException.java
deleted file mode 100644
index 7587ec2..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/BuilderException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.abiquo.domain.exception;
-
-/**
- * Exception thrown during domain object building.
- */
-public class BuilderException extends RuntimeException {
-
-   private static final long serialVersionUID = 540948631643049450L;
-
-   /**
-    * Creates a {@link BuilderException} with the given message.
-    * 
-    * @param message
-    *           The message.
-    */
-   public BuilderException(String message) {
-      super(message);
-   }
-
-   /**
-    * Creates a {@link BuilderException} with the given cause.
-    * 
-    * @param cause
-    *           The cause.
-    */
-   public BuilderException(Throwable cause) {
-      super(cause);
-   }
-
-   /**
-    * Creates a {@link BuilderException} with the given message and cause.
-    * 
-    * @param message
-    *           The message.
-    * @param cause
-    *           The cause.
-    */
-   public BuilderException(String message, Throwable cause) {
-      super(message, cause);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/WrapperException.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/WrapperException.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/WrapperException.java
deleted file mode 100644
index f2a4f37..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/exception/WrapperException.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.abiquo.domain.exception;
-
-import org.jclouds.abiquo.domain.DomainWrapper;
-
-import com.abiquo.model.transport.SingleResourceTransportDto;
-
-/**
- * Exception thrown during the wrapping process.
- */
-public class WrapperException extends RuntimeException {
-
-   private static final long serialVersionUID = 3756802225851609583L;
-
-   private Class<? extends DomainWrapper<?>> wrapperClass;
-
-   private SingleResourceTransportDto target;
-
-   public WrapperException(final Class<? extends DomainWrapper<?>> wrapperClass,
-         final SingleResourceTransportDto target, Throwable cause) {
-      super(cause);
-      this.wrapperClass = wrapperClass;
-      this.target = target;
-   }
-
-   @Override
-   public String getMessage() {
-      String msg = "Could not wrap object [" + target + "] in class " + wrapperClass.getName() + ": ";
-      return msg + super.getMessage();
-   }
-
-   public Class<? extends DomainWrapper<?>> getWrapperClass() {
-      return wrapperClass;
-   }
-
-   public void setWrapperClass(Class<? extends DomainWrapper<?>> wrapperClass) {
-      this.wrapperClass = wrapperClass;
-   }
-
-   public SingleResourceTransportDto getTarget() {
-      return target;
-   }
-
-   public void setTarget(SingleResourceTransportDto target) {
-      this.target = target;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
deleted file mode 100644
index 58322cf..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datacenter.java
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- * 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.abiquo.domain.infrastructure;
-
-import static com.google.common.collect.Iterables.find;
-import static com.google.common.collect.Iterables.transform;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
-import org.jclouds.abiquo.domain.cloud.VirtualMachineTemplate;
-import org.jclouds.abiquo.domain.enterprise.Enterprise;
-import org.jclouds.abiquo.domain.enterprise.Limits;
-import org.jclouds.abiquo.domain.infrastructure.options.DatacenterOptions;
-import org.jclouds.abiquo.domain.infrastructure.options.IpmiOptions;
-import org.jclouds.abiquo.domain.infrastructure.options.MachineOptions;
-import org.jclouds.abiquo.domain.network.Network;
-import org.jclouds.abiquo.domain.network.NetworkServiceType;
-import org.jclouds.abiquo.domain.network.options.NetworkOptions;
-import org.jclouds.abiquo.predicates.NetworkServiceTypePredicates;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.rest.ApiContext;
-
-import com.abiquo.model.enumerator.HypervisorType;
-import com.abiquo.model.enumerator.MachineIpmiState;
-import com.abiquo.model.enumerator.MachineState;
-import com.abiquo.model.enumerator.NetworkType;
-import com.abiquo.model.enumerator.RemoteServiceType;
-import com.abiquo.model.enumerator.VlanTagAvailabilityType;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.cloud.HypervisorTypeDto;
-import com.abiquo.server.core.cloud.HypervisorTypesDto;
-import com.abiquo.server.core.enterprise.DatacentersLimitsDto;
-import com.abiquo.server.core.infrastructure.DatacenterDto;
-import com.abiquo.server.core.infrastructure.MachineDto;
-import com.abiquo.server.core.infrastructure.MachineIpmiStateDto;
-import com.abiquo.server.core.infrastructure.MachineStateDto;
-import com.abiquo.server.core.infrastructure.MachinesDto;
-import com.abiquo.server.core.infrastructure.RackDto;
-import com.abiquo.server.core.infrastructure.RacksDto;
-import com.abiquo.server.core.infrastructure.RemoteServicesDto;
-import com.abiquo.server.core.infrastructure.network.NetworkServiceTypeDto;
-import com.abiquo.server.core.infrastructure.network.NetworkServiceTypesDto;
-import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
-import com.abiquo.server.core.infrastructure.network.VLANNetworksDto;
-import com.abiquo.server.core.infrastructure.network.VlanTagAvailabilityDto;
-import com.abiquo.server.core.infrastructure.storage.StorageDeviceDto;
-import com.abiquo.server.core.infrastructure.storage.StorageDevicesDto;
-import com.abiquo.server.core.infrastructure.storage.StorageDevicesMetadataDto;
-import com.abiquo.server.core.infrastructure.storage.TiersDto;
-import com.google.common.base.Function;
-
-/**
- * Adds high level functionality to {@link DatacenterDto}.
- * 
- * @see API: <a
- *      href="http://community.abiquo.com/display/ABI20/DatacenterResource">
- *      http://community.abiquo.com/display/ABI20/DatacenterResource</a>
- */
-public class Datacenter extends DomainWrapper<DatacenterDto> {
-   /**
-    * IP address of the datacenter (used to create all remote services with the
-    * same ip).
-    */
-   private String ip;
-
-   /**
-    * Constructor to be used only by the builder.
-    */
-   protected Datacenter(final ApiContext<AbiquoApi> context, final DatacenterDto target) {
-      super(context, target);
-   }
-
-   // Domain operations
-
-   /**
-    * Delete the datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-DeleteanexistingDatacenter"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- DeleteanexistingDatacenter</a>
-    */
-   public void delete() {
-      context.getApi().getInfrastructureApi().deleteDatacenter(target);
-      target = null;
-   }
-
-   /**
-    * Create a datacenter in Abiquo. This method will perform several calls to
-    * the API if remote services have been defined in the builder. Different
-    * remote services will be created depending on the {@link AbiquoEdition}.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-CreateanewDatacenter"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- CreateanewDatacenter</a>
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/RemoteServiceResource#RemoteServiceResource-CreateaRemoteService"
-    *      > http://community.abiquo.com/display/ABI20/RemoteServiceResource#
-    *      RemoteServiceResource- CreateaRemoteService</a>
-    */
-   public void save() {
-      // Datacenter must be persisted first, so links get populated in the
-      // target object
-      target = context.getApi().getInfrastructureApi().createDatacenter(target);
-
-      // If remote services data is set, create remote services.
-      if (ip != null) {
-         createRemoteServices();
-      }
-   }
-
-   /**
-    * Update datacenter information in the server with the data from this
-    * datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Updateanexistingdatacenter"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Updateanexistingdatacenter </a>
-    */
-   public void update() {
-      target = context.getApi().getInfrastructureApi().updateDatacenter(target);
-   }
-
-   /**
-    * The cloud administrator will find it useful to know if a VLAN Tag is
-    * already assigned before creating a new Public or External Network. This
-    * method provides this functionality: Check if a tag is available inside the
-    * Datacenter. Please refer link for more information.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/PublicNetworkResource#PublicNetworkResource-Checkthetagavailability"
-    *      > http://community.abiquo.com/display/ABI20/PublicNetworkResource#
-    *      PublicNetworkResource- Checkthetagavailability</a>
-    * @return Availability state of the tag.
-    */
-   public VlanTagAvailabilityType checkTagAvailability(final int tag) {
-      VlanTagAvailabilityDto availability = context.getApi().getInfrastructureApi().checkTagAvailability(target, tag);
-
-      return availability.getAvailable();
-   }
-
-   // Children access
-
-   /**
-    * Retrieve the list of unmanaged racks in this datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrievealistofRacks"
-    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
-    *      - RetrievealistofRacks</a>
-    * @return List of unmanaged racks in this datacenter.
-    */
-   public Iterable<Rack> listRacks() {
-      RacksDto racks = context.getApi().getInfrastructureApi().listRacks(target);
-      return wrap(context, Rack.class, racks.getCollection());
-   }
-
-   /**
-    * Retrieve a single unmanaged rack.
-    * 
-    * @param id
-    *           Unique ID of the rack in this datacenter.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrieveaRack"
-    *      >
-    *      http://community.abiquo.com/display/ABI20/RackResource#RackResource-
-    *      RetrieveaRack</a>
-    * @return Unmanaged rack with the given id or <code>null</code> if it does
-    *         not exist.
-    */
-   public Rack getRack(final Integer id) {
-      RackDto rack = context.getApi().getInfrastructureApi().getRack(target, id);
-      return wrap(context, Rack.class, rack);
-   }
-
-   /**
-    * Retrieve the list of supported storage devices.
-    * <p>
-    * This method will get the list of the storage devices that are supported in
-    * the datacenter.
-    * 
-    * @return List of supported storage devices. This list has only the default
-    *         information for the storage devices, such as the management and
-    *         iscsi ports, or the default credentials to access the device.
-    */
-   public Iterable<StorageDeviceMetadata> listSupportedStorageDevices() {
-      StorageDevicesMetadataDto devices = context.getApi().getInfrastructureApi().listSupportedStorageDevices(target);
-      return wrap(context, StorageDeviceMetadata.class, devices.getCollection());
-   }
-
-   /**
-    * Retrieve the list of storage devices in this datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/StorageDeviceResource#StorageDeviceResource-Retrievethelistofstoragedevices"
-    *      > http://community.abiquo.com/display/ABI20/StorageDeviceResource#
-    *      StorageDeviceResource- Retrievethelistofstoragedevices</a>
-    * @return List of storage devices in this datacenter.
-    */
-   public Iterable<StorageDevice> listStorageDevices() {
-      StorageDevicesDto devices = context.getApi().getInfrastructureApi().listStorageDevices(target);
-      return wrap(context, StorageDevice.class, devices.getCollection());
-   }
-
-   /**
-    * Retrieve a single storage device.
-    * 
-    * @param id
-    *           Unique ID of the storage device in this datacenter.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/StorageDeviceResource#StorageDeviceResource-Retrieveastoragedevice"
-    *      > http://community.abiquo.com/display/ABI20/StorageDeviceResource#
-    *      StorageDeviceResource- Retrieveastoragedevice</a>
-    * @return Storage device with the given id or <code>null</code> if it does
-    *         not exist.
-    */
-   public StorageDevice getStorageDevice(final Integer id) {
-      StorageDeviceDto device = context.getApi().getInfrastructureApi().getStorageDevice(target, id);
-      return wrap(context, StorageDevice.class, device);
-   }
-
-   /**
-    * Return the list of Network Service Types defined in a datacenter. By
-    * default, a Network Service Type called 'Service Network' will be created
-    * with the datacenter.
-    * 
-    * @return List of network services in this datacenter.
-    */
-   public Iterable<NetworkServiceType> listNetworkServiceTypes() {
-      NetworkServiceTypesDto dtos = context.getApi().getInfrastructureApi().listNetworkServiceTypes(target);
-      return wrap(context, NetworkServiceType.class, dtos.getCollection());
-   }
-
-   /**
-    * Retrieve a single network service type.
-    * 
-    * @param id
-    *           Unique ID of the network service type in this datacenter.
-    * @return Network Service Type with the given id or <code>null</code> if it
-    *         does not exist.
-    */
-   public NetworkServiceType getNetworkServiceType(final Integer id) {
-      NetworkServiceTypeDto nst = context.getApi().getInfrastructureApi().getNetworkServiceType(target, id);
-      return wrap(context, NetworkServiceType.class, nst);
-   }
-
-   /**
-    * Return the default network service type used by the datacenter. This
-    * datacenter will be the one used by {@link PrivateNetwork}. Even it can not
-    * be deleted, it can be modified.
-    * 
-    * @return the defult {@link NetworkServiceType}
-    */
-   public NetworkServiceType defaultNetworkServiceType() {
-      return find(listNetworkServiceTypes(), NetworkServiceTypePredicates.isDefault());
-   }
-
-   /**
-    * Retrieve the list of remote services of this datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/RemoteServiceResource#RemoteServiceResource-RetrievealistofRemoteServices"
-    *      > http://community.abiquo.com/display/ABI20/RemoteServiceResource#
-    *      RemoteServiceResource- RetrievealistofRemoteServices</a>
-    * @return List of remote services in this datacenter.
-    */
-   public Iterable<RemoteService> listRemoteServices() {
-      RemoteServicesDto remoteServices = context.getApi().getInfrastructureApi().listRemoteServices(target);
-      return wrap(context, RemoteService.class, remoteServices.getCollection());
-   }
-
-   private void createRemoteServices() {
-      createRemoteService(RemoteServiceType.BPM_SERVICE);
-      createRemoteService(RemoteServiceType.DHCP_SERVICE);
-      createRemoteService(RemoteServiceType.STORAGE_SYSTEM_MONITOR);
-      createRemoteService(RemoteServiceType.APPLIANCE_MANAGER);
-      createRemoteService(RemoteServiceType.VIRTUAL_SYSTEM_MONITOR);
-      createRemoteService(RemoteServiceType.NODE_COLLECTOR);
-      createRemoteService(RemoteServiceType.VIRTUAL_FACTORY);
-   }
-
-   private void createRemoteService(final RemoteServiceType type) {
-      RemoteService.builder(context, this).type(type).ip(this.ip).build().save();
-   }
-
-   /**
-    * Retrieve the list of datacenter limits by all enterprises. The Datacenter
-    * Limits resource allows you to assign datacenters and allocated resources
-    * in them to be used by an enterprise.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrievelimitsbydatacenter"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrievelimitsbydatacenter</a>
-    * @return List of datacenter limits by all enterprises.
-    */
-   public Iterable<Limits> listLimits() {
-      DatacentersLimitsDto dto = context.getApi().getInfrastructureApi().listLimits(this.unwrap());
-      return DomainWrapper.wrap(context, Limits.class, dto.getCollection());
-   }
-
-   /**
-    * Retrieve the list of tiers in ths datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/TierResource#TierResource-Retrievethelistoftiers"
-    *      >
-    *      http://community.abiquo.com/display/ABI20/TierResource#TierResource-
-    *      Retrievethelistoftiers </a>
-    * @return List of tiers in this datacenter.
-    */
-   public Iterable<Tier> listTiers() {
-      TiersDto dto = context.getApi().getInfrastructureApi().listTiers(this.unwrap());
-      return DomainWrapper.wrap(context, Tier.class, dto.getCollection());
-   }
-
-   /**
-    * Retrieve the list of public, external and unmanaged networks in this
-    * datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/PublicNetworkResource#PublicNetworkResource-Getthelistofpublicnetworks"
-    *      > http://community.abiquo.com/display/ABI20/PublicNetworkResource#
-    *      PublicNetworkResource- Getthelistofpublicnetworks</a>
-    * @return List of public, external and unmanaged networks in this
-    *         datacenter.
-    */
-   public Iterable<Network<?>> listNetworks() {
-      VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target);
-      return Network.wrapNetworks(context, networks.getCollection());
-   }
-
-   /**
-    * Retrieve the list of networks of this datacenter matching the given type.
-    * 
-    * @param type
-    *           Network type filter.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/PublicNetworkResource#PublicNetworkResource-Getthelistofpublicnetworks"
-    *      > http://community.abiquo.com/display/ABI20/PublicNetworkResource#
-    *      PublicNetworkResource- Getthelistofpublicnetworks</a>
-    * @return List of networks of this datacenter matching the given type.
-    */
-   public Iterable<Network<?>> listNetworks(final NetworkType type) {
-      NetworkOptions options = NetworkOptions.builder().type(type).build();
-      VLANNetworksDto networks = context.getApi().getInfrastructureApi().listNetworks(target, options);
-      return Network.wrapNetworks(context, networks.getCollection());
-   }
-
-   /**
-    * Retrieve a single public, external or unmanaged network from this
-    * datacenter.
-    * {@link org.jclouds.abiquo.domain.network.Network#toExternalNetwork},
-    * {@link org.jclouds.abiquo.domain.network.Network#toPublicNetwork} and
-    * {@link org.jclouds.abiquo.domain.network.Network#toUnmanagedNetwork} can
-    * be used to convert the Network into the appropriate domain object.
-    * 
-    * @param id
-    *           Unique ID of the network in this datacenter.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/PublicNetworkResource#PublicNetworkResource-Getthelistofpublicnetworks"
-    *      > http://community.abiquo.com/display/ABI20/StorageDeviceResource#
-    *      PublicNetworkResource#
-    *      PublicNetworkResource-Getthelistofpublicnetworks</a>
-    * @return Network with the given id or <code>null</code> if it does not
-    *         exist.
-    */
-   public Network<?> getNetwork(final Integer id) {
-      VLANNetworkDto network = context.getApi().getInfrastructureApi().getNetwork(target, id);
-      return Network.wrapNetwork(context, network);
-   }
-
-   // Actions
-
-   /**
-    * Retrieve the hypervisor type from remote machine.
-    * 
-    * @param ip
-    *           IP address of the physical machine.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrievethehypervisortypefromremotemachine"
-    *      http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrievethehypervisortypefromremotemachine</a>
-    * @return Hypervisor type of the remote machine.
-    * @throws Exception
-    *            If the hypervisor type information cannot be retrieved.
-    */
-   public HypervisorType getHypervisorType(final String ip) {
-      DatacenterOptions options = DatacenterOptions.builder().ip(ip).build();
-
-      String type = context.getApi().getInfrastructureApi().getHypervisorTypeFromMachine(target, options);
-
-      return HypervisorType.valueOf(type);
-   }
-
-   /**
-    * Retrieve the list of available hypervisor types in the datacenter.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrieveavailablehypervisortypes"
-    *      http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrieveavailablehypervisortypes</a>
-    * @return List of available hypervisor types in the datacenter.
-    */
-   public Iterable<HypervisorType> listAvailableHypervisors() {
-      HypervisorTypesDto types = context.getApi().getInfrastructureApi().getHypervisorTypes(target);
-      return getHypervisorTypes(types);
-   }
-
-   private Iterable<HypervisorType> getHypervisorTypes(final HypervisorTypesDto dtos) {
-      return transform(dtos.getCollection(), new Function<HypervisorTypeDto, HypervisorType>() {
-         @Override
-         public HypervisorType apply(HypervisorTypeDto input) {
-            return HypervisorType.fromId(input.getId());
-         }
-      });
-   }
-
-   /**
-    * Searches a remote machine and retrieves an Machine object with its
-    * information.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @return A physical machine if found or <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrieveremotemachineinformation"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrieveremotemachineinformation</a>
-    */
-   public Machine discoverSingleMachine(final String ip, final HypervisorType hypervisorType, final String user,
-         final String password) {
-      return discoverSingleMachine(ip, hypervisorType, user, password, hypervisorType.defaultPort);
-   }
-
-   /**
-    * Searches a remote machine and retrieves an Machine object with its
-    * information.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @param port
-    *           Port to connect.
-    * @return A physical machine if found or <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrieveremotemachineinformation"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrieveremotemachineinformation</a>
-    */
-   public Machine discoverSingleMachine(final String ip, final HypervisorType hypervisorType, final String user,
-         final String password, final int port) {
-      MachineDto dto = context
-            .getApi()
-            .getInfrastructureApi()
-            .discoverSingleMachine(target, ip, hypervisorType, user, password,
-                  MachineOptions.builder().port(port).build());
-
-      // Credentials are not returned by the API
-      dto.setUser(user);
-      dto.setPassword(password);
-
-      return wrap(context, Machine.class, dto);
-   }
-
-   /**
-    * Searches multiple remote machines and retrieves an Machine list with its
-    * information.
-    * 
-    * @param ipFrom
-    *           IP address of the remote first hypervisor to check.
-    * @param ipTo
-    *           IP address of the remote last hypervisor to check.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @return The physical machine list.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrievealistofremotemachineinformation"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrievealistofremotemachineinformation</a>
-    */
-   public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
-         final HypervisorType hypervisorType, final String user, final String password) {
-      return discoverMultipleMachines(ipFrom, ipTo, hypervisorType, user, password, hypervisorType.defaultPort);
-   }
-
-   /**
-    * Searches multiple remote machines and retrieves an Machine list with its
-    * information.
-    * 
-    * @param ipFrom
-    *           IP address of the remote first hypervisor to check.
-    * @param ipTo
-    *           IP address of the remote last hypervisor to check.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @param port
-    *           Port to connect.
-    * @return The physical machine list.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrievealistofremotemachineinformation"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrievealistofremotemachineinformation</a>
-    */
-   public Iterable<Machine> discoverMultipleMachines(final String ipFrom, final String ipTo,
-         final HypervisorType hypervisorType, final String user, final String password, final int port) {
-      MachinesDto dto = context
-            .getApi()
-            .getInfrastructureApi()
-            .discoverMultipleMachines(target, ipFrom, ipTo, hypervisorType, user, password,
-                  MachineOptions.builder().port(port).build());
-
-      // Credentials are not returned by the API
-      for (MachineDto machine : dto.getCollection()) {
-         machine.setUser(user);
-         machine.setPassword(password);
-      }
-
-      return wrap(context, Machine.class, dto.getCollection());
-   }
-
-   /**
-    * Check the state of a remote machine. This feature is used to check the
-    * state from a remote machine giving its location, user, password and
-    * hypervisor type. This machine does not need to be managed by Abiquo.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @return The physical machine state if the machine is found or
-    *         <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Checkthestatefromremotemachine"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Checkthestatefromremotemachine</a>
-    */
-   public MachineState checkMachineState(final String ip, final HypervisorType hypervisorType, final String user,
-         final String password) {
-      return checkMachineState(ip, hypervisorType, user, password,
-            MachineOptions.builder().port(hypervisorType.defaultPort).build());
-   }
-
-   /**
-    * Check the state of a remote machine. This feature is used to check the
-    * state from a remote machine giving its location, user, password and
-    * hypervisor type. This machine does not need to be managed by Abiquo.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param hypervisorType
-    *           Kind of hypervisor we want to connect. Valid values are {vbox,
-    *           kvm, xen-3, vmx-04, hyperv-301, xenserver}.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @param options
-    *           .
-    * @return The physical machine state if the machine is found or
-    *         <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Checkthestatefromremotemachine"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Checkthestatefromremotemachine</a>
-    */
-   public MachineState checkMachineState(final String ip, final HypervisorType hypervisorType, final String user,
-         final String password, final MachineOptions options) {
-      MachineStateDto dto = context.getApi().getInfrastructureApi()
-            .checkMachineState(target, ip, hypervisorType, user, password, options);
-
-      return dto.getState();
-   }
-
-   /**
-    * Check the ipmi configuration state of a remote machine. This feature is
-    * used to check the ipmi configuration state from a remote machine giving
-    * its location, user and password. This machine does not need to be managed
-    * by Abiquo.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @return The physical machine state if the machine is found or
-    *         <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Checktheipmistatefromremotemachine"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Checktheipmistatefromremotemachine</a>
-    */
-   public MachineIpmiState checkMachineIpmiState(final String ip, final String user, final String password) {
-      MachineIpmiStateDto dto = context.getApi().getInfrastructureApi()
-            .checkMachineIpmiState(target, ip, user, password);
-      return dto.getState();
-   }
-
-   /**
-    * Check the ipmi configuration state of a remote machine. This feature is
-    * used to check the ipmi configuration state from a remote machine giving
-    * its location, user and password. This machine does not need to be managed
-    * by Abiquo.
-    * 
-    * @param ip
-    *           IP address of the remote hypervisor to connect.
-    * @param user
-    *           User to log in.
-    * @param password
-    *           Password to authenticate.
-    * @return The physical machine state if the machine is found or
-    *         <code>null</code>.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Checktheipmistatefromremotemachine"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Checktheipmistatefromremotemachine</a>
-    */
-   public MachineIpmiState checkMachineIpmiState(final String ip, final String user, final String password,
-         final IpmiOptions options) {
-      MachineIpmiStateDto dto = context.getApi().getInfrastructureApi()
-            .checkMachineIpmiState(target, ip, user, password, options);
-      return dto.getState();
-   }
-
-   /**
-    * Retrieve the list of virtual machine templates in the repository of this
-    * datacenter.
-    * 
-    * @param enterprise
-    *           Owner of the templates.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/VirtualMachineTemplateResource#VirtualMachineTemplateResource-Retrieveallvirtualmachinetemplates"
-    *      > http://community.abiquo.com/display/ABI20/
-    *      VirtualMachineTemplateResource#
-    *      VirtualMachineTemplateResource-Retrieveallvirtualmachinetemplates</a>
-    * @return List of virtual machine templates in the repository of this
-    *         datacenter.
-    */
-   public Iterable<VirtualMachineTemplate> listTemplatesInRepository(final Enterprise enterprise) {
-      PagedIterable<VirtualMachineTemplateDto> templates = context.getApi().getVirtualMachineTemplateApi()
-            .listVirtualMachineTemplates(enterprise.getId(), target.getId());
-      return wrap(context, VirtualMachineTemplate.class, templates.concat());
-   }
-
-   /**
-    * Retrieve a single virtual machine template in of this datacenter from the
-    * given enterprise.
-    * 
-    * @param enterprise
-    *           Owner of the templates.
-    * @param id
-    *           Unique ID of the template in the datacenter repository for the
-    *           given enterprise.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/VirtualMachineTemplateResource#VirtualMachineTemplateResource-Retrieveallvirtualmachinetemplates"
-    *      > http://community.abiquo.com/display/ABI20/
-    *      VirtualMachineTemplateResource#
-    *      VirtualMachineTemplateResource-Retrieveallvirtualmachinetemplates</a>
-    * @return Virtual machine template with the given id in the given enterprise
-    *         or <code>null</code> if it does not exist.
-    */
-   public VirtualMachineTemplate getTemplateInRepository(final Enterprise enterprise, final Integer id) {
-      VirtualMachineTemplateDto template = context.getApi().getVirtualMachineTemplateApi()
-            .getVirtualMachineTemplate(enterprise.getId(), target.getId(), id);
-      return wrap(context, VirtualMachineTemplate.class, template);
-   }
-
-   // Builder
-
-   public static Builder builder(final ApiContext<AbiquoApi> context) {
-      return new Builder(context);
-   }
-
-   public static class Builder {
-      private ApiContext<AbiquoApi> context;
-
-      private String name;
-
-      private String location;
-
-      private String ip;
-
-      public Builder(final ApiContext<AbiquoApi> context) {
-         super();
-         this.context = context;
-      }
-
-      public Builder remoteServices(final String ip) {
-         this.ip = ip;
-         return this;
-      }
-
-      public Builder name(final String name) {
-         this.name = name;
-         return this;
-      }
-
-      public Builder location(final String location) {
-         this.location = location;
-         return this;
-      }
-
-      public Datacenter build() {
-         DatacenterDto dto = new DatacenterDto();
-         dto.setName(name);
-         dto.setLocation(location);
-         Datacenter datacenter = new Datacenter(context, dto);
-         datacenter.ip = ip;
-         return datacenter;
-      }
-
-      public static Builder fromDatacenter(final Datacenter in) {
-         return Datacenter.builder(in.context).name(in.getName()).location(in.getLocation());
-      }
-   }
-
-   // Delegate methods
-
-   public Integer getId() {
-      return target.getId();
-   }
-
-   public String getLocation() {
-      return target.getLocation();
-   }
-
-   public String getName() {
-      return target.getName();
-   }
-
-   public void setLocation(final String location) {
-      target.setLocation(location);
-   }
-
-   public void setName(final String name) {
-      target.setName(name);
-   }
-
-   public String getUUID() {
-      return target.getUuid();
-   }
-
-   @Override
-   public String toString() {
-      return "Datacenter [id=" + getId() + ", location=" + getLocation() + ", name=" + getName() + ", uuid="
-            + getUUID() + "]";
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datastore.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datastore.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datastore.java
deleted file mode 100644
index b2c93a3..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Datastore.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.abiquo.domain.infrastructure;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
-import org.jclouds.rest.ApiContext;
-
-import com.abiquo.server.core.infrastructure.DatastoreDto;
-
-/**
- * Adds high level functionality to {@link DatastoreDto}.
- */
-public class Datastore extends DomainWrapper<DatastoreDto> {
-   /**
-    * Constructor to be used only by the builder. This resource cannot be
-    * created.
-    */
-   private Datastore(final ApiContext<AbiquoApi> context, final DatastoreDto target) {
-      super(context, target);
-   }
-
-   // Delegate methods
-
-   public String getDatastoreUUID() {
-      return target.getDatastoreUUID();
-   }
-
-   public String getDirectory() {
-      return target.getDirectory();
-   }
-
-   public Integer getId() {
-      return target.getId();
-   }
-
-   public String getName() {
-      return target.getName();
-   }
-
-   public String getRootPath() {
-      return target.getRootPath();
-   }
-
-   public long getSize() {
-      return target.getSize();
-   }
-
-   public long getUsedSize() {
-      return target.getUsedSize();
-   }
-
-   public boolean isEnabled() {
-      return target.isEnabled();
-   }
-
-   public void setEnabled(final boolean enabled) {
-      target.setEnabled(enabled);
-   }
-
-   @Override
-   public String toString() {
-      return "Datastore [id=" + getId() + ", uuid=" + getDatastoreUUID() + ", directory=" + getDirectory() + ", name="
-            + getName() + ", rootPath=" + getRootPath() + ", size=" + getSize() + ", usedSize=" + getUsedSize()
-            + ", enabled=" + isEnabled() + "]";
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
deleted file mode 100644
index 05e4a0a..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/Machine.java
+++ /dev/null
@@ -1,626 +0,0 @@
-/*
- * 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.abiquo.domain.infrastructure;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.ImmutableList.copyOf;
-
-import java.util.List;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
-import org.jclouds.abiquo.domain.cloud.VirtualMachine;
-import org.jclouds.abiquo.domain.enterprise.Enterprise;
-import org.jclouds.abiquo.domain.infrastructure.options.MachineOptions;
-import org.jclouds.abiquo.reference.ValidationErrors;
-import org.jclouds.abiquo.reference.rest.ParentLinkName;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseXMLWithJAXB;
-import org.jclouds.rest.ApiContext;
-
-import com.abiquo.model.enumerator.HypervisorType;
-import com.abiquo.model.enumerator.MachineIpmiState;
-import com.abiquo.model.enumerator.MachineState;
-import com.abiquo.model.rest.RESTLink;
-import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
-import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
-import com.abiquo.server.core.enterprise.EnterpriseDto;
-import com.abiquo.server.core.infrastructure.DatastoresDto;
-import com.abiquo.server.core.infrastructure.MachineDto;
-import com.abiquo.server.core.infrastructure.MachineIpmiStateDto;
-import com.abiquo.server.core.infrastructure.MachineStateDto;
-import com.abiquo.server.core.infrastructure.RackDto;
-import com.abiquo.server.core.infrastructure.network.NetworkInterfacesDto;
-import com.google.inject.TypeLiteral;
-
-/**
- * Adds high level functionality to {@link MachineDto}. This resource allows you
- * to manage physical machines in the cloud infrastructure.
- * 
- * @see API: <a
- *      href="http://community.abiquo.com/display/ABI20/MachineResource">
- *      http://community.abiquo.com/display/ABI20/MachineResource</a>
- */
-public class Machine extends DomainWrapper<MachineDto> {
-   /** The default virtual ram used in MB. */
-   protected static final int DEFAULT_VRAM_USED = 1;
-
-   /** The default virtual cpu used in MB. */
-   protected static final int DEFAULT_VCPU_USED = 1;
-
-   /** The rack where the machine belongs. */
-   protected Rack rack;
-
-   /**
-    * Constructor to be used only by the builder.
-    */
-   protected Machine(final ApiContext<AbiquoApi> context, final MachineDto target) {
-      super(context, target);
-   }
-
-   /**
-    * Create a new physical machine in Abiquo. The best way to create a machine
-    * if first calling {@link Datacenter#discoverSingleMachine} or
-    * {@link Datacenter#discoverMultipleMachines}. This will return a new
-    * {@link Machine}. The following steps are: enabling a datastore, selecting
-    * a virtual switch and choosing a rack. Refer link for more information.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrieveremotemachineinformation"
-    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
-    *      DatacenterResource- Retrieveremotemachineinformation</a>
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/MachineResource#MachineResource-Createamachine"
-    *      > http://community.abiquo.com/display/ABI20/MachineResource#
-    *      MachineResource- Createamachine</a>
-    */
-   public void save() {
-      target = context.getApi().getInfrastructureApi().createMachine(rack.unwrap(), target);
-   }
-
-   public void delete() {
-      context.getApi().getInfrastructureApi().deleteMachine(target);
-      target = null;
-   }
-
-   public void update() {
-      target = context.getApi().getInfrastructureApi().updateMachine(target);
-   }
-
-   public MachineState check() {
-      MachineStateDto dto = context.getApi().getInfrastructureApi().checkMachineState(target, true);
-      MachineState state = dto.getState();
-      target.setState(state);
-      return state;
-   }
-
-   public MachineIpmiState checkIpmi() {
-      MachineIpmiStateDto dto = context.getApi().getInfrastructureApi().checkMachineIpmiState(target);
-      return dto.getState();
-   }
-
-   // Parent access
-   /**
-    * Retrieve the unmanaged rack where the machine is.
-    * 
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrieveaRack"
-    *      >
-    *      http://community.abiquo.com/display/ABI20/RackResource#RackResource-
-    *      RetrieveaRack</a>
-    */
-   public Rack getRack() {
-      RESTLink link = checkNotNull(target.searchLink(ParentLinkName.RACK), ValidationErrors.MISSING_REQUIRED_LINK + " "
-            + ParentLinkName.RACK);
-
-      HttpResponse response = context.getApi().get(link);
-
-      ParseXMLWithJAXB<RackDto> parser = new ParseXMLWithJAXB<RackDto>(context.utils().xml(),
-            TypeLiteral.get(RackDto.class));
-
-      return wrap(context, Rack.class, parser.apply(response));
-   }
-
-   // Children access
-
-   public Iterable<Datastore> getDatastores() {
-      return wrap(context, Datastore.class, target.getDatastores().getCollection());
-   }
-
-   public Iterable<NetworkInterface> getNetworkInterfaces() {
-      return wrap(context, NetworkInterface.class, target.getNetworkInterfaces().getCollection());
-   }
-
-   /**
-    * Gets the list of virtual machines in the physical machine.
-    * 
-    * @return The list of virtual machines in the physical machine.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/Machine+Resource#MachineResource-Retrievethelistofvirtualmachinesbymachine'shypervisor"
-    *      > http://community.abiquo.com/display/ABI20/Machine+Resource#
-    *      MachineResource-
-    *      Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
-    */
-   public Iterable<VirtualMachine> listVirtualMachines() {
-      MachineOptions options = MachineOptions.builder().sync(false).build();
-      VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
-            .listVirtualMachinesByMachine(target, options);
-      return wrap(context, VirtualMachine.class, vms.getCollection());
-   }
-
-   public VirtualMachine getVirtualMachine(final Integer virtualMachineId) {
-      VirtualMachineWithNodeExtendedDto vm = context.getApi().getInfrastructureApi()
-            .getVirtualMachine(target, virtualMachineId);
-      return wrap(context, VirtualMachine.class, vm);
-   }
-
-   /**
-    * Gets the list of virtual machines in the physical machine synchronizing
-    * virtual machines from remote hypervisor with abiquo's database.
-    * 
-    * @return The list of virtual machines in the physical machine.
-    * @see API: <a href=
-    *      "http://community.abiquo.com/display/ABI20/Machine+Resource#MachineResource-Retrievethelistofvirtualmachinesbymachine'shypervisor"
-    *      > http://community.abiquo.com/display/ABI20/Machine+Resource#
-    *      MachineResource-
-    *      Retrievethelistofvirtualmachinesbymachine'shypervisor</a>
-    */
-   public Iterable<VirtualMachine> listRemoteVirtualMachines() {
-      MachineOptions options = MachineOptions.builder().sync(true).build();
-      VirtualMachinesWithNodeExtendedDto vms = context.getApi().getInfrastructureApi()
-            .listVirtualMachinesByMachine(target, options);
-      return wrap(context, VirtualMachine.class, vms.getCollection());
-   }
-
-   /**
-    * Reserve the machine for the given enterprise.
-    * <p>
-    * When a {@link Machine} is reserved for an {@link Enterprise}, only the
-    * users of that enterprise will be able to deploy {@link VirtualMachine}s in
-    * it.
-    * 
-    * @param enterprise
-    *           The enterprise reserving the machine.
-    */
-   public void reserveFor(final Enterprise enterprise) {
-      target = context.getApi().getInfrastructureApi().reserveMachine(enterprise.unwrap(), target);
-   }
-
-   /**
-    * Cancels the machine reservation for the given enterprise.
-    * 
-    * @param enterprise
-    *           The enterprise to cancel reservation for.
-    */
-   public void cancelReservationFor(final Enterprise enterprise) {
-      context.getApi().getInfrastructureApi().cancelReservation(enterprise.unwrap(), target);
-      target.getLinks().remove(target.searchLink(ParentLinkName.ENTERPRISE));
-   }
-
-   /**
-    * Check if the machine is reserved.
-    * 
-    * @return Boolean indicating if the machine is reserved for an enterprise.
-    */
-   public boolean isReserved() {
-      return target.searchLink(ParentLinkName.ENTERPRISE) != null;
-   }
-
-   /**
-    * Get the enterprise that has reserved the machine or <code>null</code> if
-    * the machine is not reserved.
-    * 
-    * @return The enterprise that has reserved the machine or <code>null</code>
-    *         if the machine is not reserved.
-    */
-   public Enterprise getOwnerEnterprise() {
-      if (!isReserved()) {
-         return null;
-      }
-
-      EnterpriseDto enterprise = context.getApi().getEnterpriseApi()
-            .getEnterprise(target.getIdFromLink(ParentLinkName.ENTERPRISE));
-
-      return wrap(context, Enterprise.class, enterprise);
-   }
-
-   // Builder
-
-   public static Builder builder(final ApiContext<AbiquoApi> context, final Rack rack) {
-      return new Builder(context, rack);
-   }
-
-   public static class Builder {
-      private ApiContext<AbiquoApi> context;
-
-      private String name;
-
-      private String description;
-
-      private Integer virtualRamInMb;
-
-      private Integer virtualRamUsedInMb = DEFAULT_VRAM_USED;
-
-      private Integer virtualCpuCores;
-
-      private Integer virtualCpusUsed = DEFAULT_VCPU_USED;
-
-      private Integer port;
-
-      private String ip;
-
-      private MachineState state = MachineState.STOPPED;
-
-      private String ipService;
-
-      private HypervisorType type;
-
-      private String user;
-
-      private String password;
-
-      private Iterable<Datastore> datastores;
-
-      private Iterable<NetworkInterface> networkInterfaces;
-
-      private String ipmiIp;
-
-      private Integer ipmiPort;
-
-      private String ipmiUser;
-
-      private String ipmiPassword;
-
-      private Rack rack;
-
-      public Builder(final ApiContext<AbiquoApi> context, final Rack rack) {
-         super();
-         checkNotNull(rack, ValidationErrors.NULL_RESOURCE + Rack.class);
-         this.rack = rack;
-         this.context = context;
-      }
-
-      public Builder state(final MachineState state) {
-         this.state = state;
-         return this;
-      }
-
-      public Builder ipmiPassword(final String ipmiPassword) {
-         this.ipmiPassword = ipmiPassword;
-         return this;
-      }
-
-      public Builder ipmiUser(final String ipmiUser) {
-         this.ipmiUser = ipmiUser;
-         return this;
-      }
-
-      public Builder ipmiPort(final int ipmiPort) {
-         this.ipmiPort = ipmiPort;
-         return this;
-      }
-
-      public Builder ipmiIp(final String ipmiIp) {
-         this.ipmiIp = ipmiIp;
-         return this;
-      }
-
-      public Builder user(final String user) {
-         this.user = user;
-         return this;
-      }
-
-      public Builder ip(final String ip) {
-         this.ip = ip;
-         if (ipService == null) {
-            ipService = ip;
-         }
-         return this;
-      }
-
-      public Builder ipService(final String ipService) {
-         this.ipService = ipService;
-         return this;
-      }
-
-      public Builder password(final String password) {
-         this.password = password;
-         return this;
-      }
-
-      public Builder name(final String name) {
-         this.name = name;
-         return this;
-      }
-
-      public Builder description(final String description) {
-         this.description = description;
-         return this;
-      }
-
-      public Builder port(final int port) {
-         this.port = port;
-         return this;
-      }
-
-      public Builder datastores(final Iterable<Datastore> datastores) {
-         this.datastores = datastores;
-         return this;
-      }
-
-      public Builder networkInterfaces(final Iterable<NetworkInterface> networkInterfaces) {
-         this.networkInterfaces = networkInterfaces;
-         return this;
-      }
-
-      public Builder virtualRamInMb(final int virtualRamInMb) {
-         this.virtualRamInMb = virtualRamInMb;
-         return this;
-      }
-
-      public Builder virtualRamUsedInMb(final int virtualRamUsedInMb) {
-         this.virtualRamUsedInMb = virtualRamUsedInMb;
-         return this;
-      }
-
-      public Builder virtualCpuCores(final int virtualCpuCores) {
-         this.virtualCpuCores = virtualCpuCores;
-         return this;
-      }
-
-      public Builder virtualCpusUsed(final int virtualCpusUsed) {
-         this.virtualCpusUsed = virtualCpusUsed;
-         return this;
-      }
-
-      public Builder hypervisorType(final HypervisorType hypervisorType) {
-         this.type = hypervisorType;
-
-         // Sets default hypervisor port
-         if (this.port == null) {
-            this.port = hypervisorType.defaultPort;
-         }
-
-         return this;
-      }
-
-      public Builder rack(final Rack rack) {
-         checkNotNull(rack, ValidationErrors.NULL_RESOURCE + Datacenter.class);
-         this.rack = rack;
-         return this;
-      }
-
-      public Machine build() {
-         MachineDto dto = new MachineDto();
-         dto.setName(name);
-         dto.setDescription(description);
-         dto.setVirtualRamInMb(virtualRamInMb);
-         dto.setVirtualRamUsedInMb(virtualRamUsedInMb);
-         dto.setVirtualCpuCores(virtualCpuCores);
-         dto.setVirtualCpusUsed(virtualCpusUsed);
-         if (port != null) {
-            dto.setPort(port);
-         }
-         dto.setIp(ip);
-         dto.setIpService(ipService);
-         dto.setType(type);
-         dto.setUser(user);
-         dto.setPassword(password);
-         dto.setIpmiIP(ipmiIp);
-         dto.setIpmiPassword(ipmiPassword);
-         if (ipmiPort != null) {
-            dto.setIpmiPort(ipmiPort);
-         }
-         dto.setIpmiUser(ipmiUser);
-         dto.setState(state);
-
-         DatastoresDto datastoresDto = new DatastoresDto();
-         datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
-         dto.setDatastores(datastoresDto);
-
-         NetworkInterfacesDto networkInterfacesDto = new NetworkInterfacesDto();
-         networkInterfacesDto.getCollection().addAll(copyOf(unwrap(networkInterfaces)));
-         dto.setNetworkInterfaces(networkInterfacesDto);
-
-         Machine machine = new Machine(context, dto);
-         machine.rack = rack;
-
-         return machine;
-      }
-
-      public static Builder fromMachine(final Machine in) {
-         Builder builder = Machine.builder(in.context, in.rack).name(in.getName()).description(in.getDescription())
-               .virtualCpuCores(in.getVirtualCpuCores()).virtualCpusUsed(in.getVirtualCpusUsed())
-               .virtualRamInMb(in.getVirtualRamInMb()).virtualRamUsedInMb(in.getVirtualRamUsedInMb())
-               .port(in.getPort()).ip(in.getIp()).ipService(in.getIpService()).hypervisorType(in.getType())
-               .user(in.getUser()).password(in.getPassword()).ipmiIp(in.getIpmiIp()).ipmiPassword(in.getIpmiPassword())
-               .ipmiUser(in.getIpmiUser()).state(in.getState()).datastores(in.getDatastores())
-               .networkInterfaces(in.getNetworkInterfaces());
-
-         // Parameters that can be null
-         if (in.getIpmiPort() != null) {
-            builder.ipmiPort(in.getIpmiPort());
-         }
-
-         return builder;
-      }
-   }
-
-   // Delegate methods
-
-   public Integer getId() {
-      return target.getId();
-   }
-
-   public String getIp() {
-      return target.getIp();
-   }
-
-   public String getIpmiIp() {
-      return target.getIpmiIP();
-   }
-
-   public String getIpmiPassword() {
-      return target.getIpmiPassword();
-   }
-
-   public Integer getIpmiPort() {
-      return target.getIpmiPort();
-   }
-
-   public String getIpmiUser() {
-      return target.getIpmiUser();
-   }
-
-   public String getIpService() {
-      return target.getIpService();
-   }
-
-   public String getName() {
-      return target.getName();
-   }
-
-   public String getPassword() {
-      return target.getPassword();
-   }
-
-   public Integer getPort() {
-      return target.getPort();
-   }
-
-   public MachineState getState() {
-      return target.getState();
-   }
-
-   public HypervisorType getType() {
-      return target.getType();
-   }
-
-   public String getUser() {
-      return target.getUser();
-   }
-
-   public Integer getVirtualCpuCores() {
-      return target.getVirtualCpuCores();
-   }
-
-   public Integer getVirtualCpusUsed() {
-      return target.getVirtualCpusUsed();
-   }
-
-   public Integer getVirtualRamInMb() {
-      return target.getVirtualRamInMb();
-   }
-
-   public Integer getVirtualRamUsedInMb() {
-      return target.getVirtualRamUsedInMb();
-   }
-
-   public void setDatastores(final List<Datastore> datastores) {
-      DatastoresDto datastoresDto = new DatastoresDto();
-      datastoresDto.getCollection().addAll(copyOf(unwrap(datastores)));
-      target.setDatastores(datastoresDto);
-   }
-
-   public void setDescription(final String description) {
-      target.setDescription(description);
-   }
-
-   public void setIp(final String ip) {
-      target.setIp(ip);
-   }
-
-   public void setIpmiIp(final String ipmiIp) {
-      target.setIpmiIP(ipmiIp);
-   }
-
-   public void setIpmiPassword(final String ipmiPassword) {
-      target.setIpmiPassword(ipmiPassword);
-   }
-
-   public void setIpmiPort(final Integer ipmiPort) {
-      target.setIpmiPort(ipmiPort);
-   }
-
-   public void setIpmiUser(final String ipmiUser) {
-      target.setIpmiUser(ipmiUser);
-   }
-
-   public void setIpService(final String ipService) {
-      target.setIpService(ipService);
-   }
-
-   public void setName(final String name) {
-      target.setName(name);
-   }
-
-   public void setPassword(final String password) {
-      target.setPassword(password);
-   }
-
-   public void setPort(final Integer port) {
-      target.setPort(port);
-   }
-
-   public void setState(final MachineState state) {
-      target.setState(state);
-   }
-
-   public void setType(final HypervisorType type) {
-      target.setType(type);
-   }
-
-   public void setUser(final String user) {
-      target.setUser(user);
-   }
-
-   public void setVirtualCpuCores(final Integer virtualCpuCores) {
-      target.setVirtualCpuCores(virtualCpuCores);
-   }
-
-   public void setVirtualCpusUsed(final Integer virtualCpusUsed) {
-      target.setVirtualCpusUsed(virtualCpusUsed);
-   }
-
-   public void setVirtualRamInMb(final Integer virtualRamInMb) {
-      target.setVirtualRamInMb(virtualRamInMb);
-   }
-
-   public void setVirtualRamUsedInMb(final Integer virtualRamUsedInMb) {
-      target.setVirtualRamUsedInMb(virtualRamUsedInMb);
-   }
-
-   public String getDescription() {
-      return target.getDescription();
-   }
-
-   public void setRack(final Rack rack) {
-      this.rack = rack;
-   }
-
-   @Override
-   public String toString() {
-      return "Machine [id=" + getId() + ", ip=" + getIp() + ", ipmiIp=" + getIpmiIp() + ", ipmiPassword="
-            + getIpmiPassword() + ", ipmiPort=" + getIpmiPort() + ", ipmiUser=" + getIpmiUser() + ", ipService="
-            + getIpService() + ", name=" + getName() + ", password=" + getPassword() + ", port=" + getPort()
-            + ", state=" + getState() + ", type=" + getType() + ", user=" + getUser() + ", virtualCpuCores="
-            + getVirtualCpuCores() + ", virtualCpusUsed=" + getVirtualCpusUsed() + ", getVirtualRamInMb()="
-            + getVirtualRamInMb() + ", virtualRamUsedInMb=" + getVirtualRamUsedInMb() + ", description="
-            + getDescription() + "]";
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/NetworkInterface.java
----------------------------------------------------------------------
diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/NetworkInterface.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/NetworkInterface.java
deleted file mode 100644
index aec201b..0000000
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/infrastructure/NetworkInterface.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.abiquo.domain.infrastructure;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.DomainWrapper;
-import org.jclouds.abiquo.domain.network.NetworkServiceType;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseXMLWithJAXB;
-import org.jclouds.rest.ApiContext;
-
-import com.abiquo.model.rest.RESTLink;
-import com.abiquo.server.core.infrastructure.network.NetworkInterfaceDto;
-import com.abiquo.server.core.infrastructure.network.NetworkServiceTypeDto;
-import com.google.inject.TypeLiteral;
-
-/**
- * Represents a physical attached NIC.
- * 
- * Allows to specify the {@link NetworkServiceType} for the network interface.
- * This way all network interfaces have the information of the kind of network
- * they are attached to.
- */
-public class NetworkInterface extends DomainWrapper<NetworkInterfaceDto> {
-   /**
-    * Constructor to be used only by the builder. This resource cannot be
-    * created.
-    */
-   protected NetworkInterface(final ApiContext<AbiquoApi> context, final NetworkInterfaceDto target) {
-      super(context, target);
-   }
-
-   public String getName() {
-      return target.getName();
-   }
-
-   public String getMac() {
-      return target.getMac();
-   }
-
-   public void setNetworkServiceType(final NetworkServiceType type) {
-      checkNotNull(type, "network service type cannot be null");
-      target.setNetworkServiceTypeLink(type.unwrap().getEditLink().getHref());
-   }
-
-   public NetworkServiceType getNetworkServiceType() {
-      RESTLink link = target.getNetworkServiceTypeLink();
-
-      HttpResponse response = context.getApi().get(link);
-
-      ParseXMLWithJAXB<NetworkServiceTypeDto> parser = new ParseXMLWithJAXB<NetworkServiceTypeDto>(context.utils()
-            .xml(), TypeLiteral.get(NetworkServiceTypeDto.class));
-
-      return wrap(context, NetworkServiceType.class, parser.apply(response));
-   }
-}