Updated Branches:
  refs/heads/master 880c1c7d0 -> 3870f4525

JCLOUDS-208: The datacenter link has been added to the Limits object 
construction.

This link is used in the 2.4 version of the Abiquo API to establish a relation
between an enterprise and the datacenter it is restricted to.


Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/commit/3870f452
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/tree/3870f452
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/diff/3870f452

Branch: refs/heads/master
Commit: 3870f45255bda8089e8144a1545317bb1794b6d4
Parents: 880c1c7
Author: Carlos Garcia <[email protected]>
Authored: Tue Jul 30 13:39:35 2013 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Thu Aug 1 11:12:14 2013 +0200

----------------------------------------------------------------------
 .../abiquo/domain/enterprise/Enterprise.java    |  2 +-
 .../abiquo/domain/enterprise/Limits.java        | 33 ++++++++++++++++----
 2 files changed, 28 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/3870f452/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
index ac2400a..c1fb3c5 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Enterprise.java
@@ -360,7 +360,7 @@ public class Enterprise extends 
DomainWithLimitsWrapper<EnterpriseDto> {
 
       try {
          // Create new limits
-         Limits limits = Limits.builder(context).build();
+         Limits limits = Limits.builder(context, datacenter).build();
 
          // Save new limits
          dto = context.getApi().getEnterpriseApi().createLimits(target, 
datacenter.unwrap(), limits.unwrap());

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs/blob/3870f452/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Limits.java
----------------------------------------------------------------------
diff --git 
a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Limits.java 
b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Limits.java
index d8a3d26..9c9c4f9 100644
--- a/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Limits.java
+++ b/abiquo/src/main/java/org/jclouds/abiquo/domain/enterprise/Limits.java
@@ -16,12 +16,19 @@
  */
 package org.jclouds.abiquo.domain.enterprise;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 import org.jclouds.abiquo.AbiquoApi;
 import org.jclouds.abiquo.domain.DomainWithLimitsWrapper;
 import org.jclouds.abiquo.domain.builder.LimitsBuilder;
+import org.jclouds.abiquo.domain.infrastructure.Datacenter;
+import org.jclouds.abiquo.reference.ValidationErrors;
+import org.jclouds.abiquo.reference.rest.ParentLinkName;
 import org.jclouds.rest.ApiContext;
 
+import com.abiquo.model.rest.RESTLink;
 import com.abiquo.server.core.enterprise.DatacenterLimitsDto;
+import com.abiquo.server.core.infrastructure.DatacenterDto;
 
 /**
  * Adds high level functionality to {@link DatacenterLimitsDto}.
@@ -57,8 +64,8 @@ public class Limits extends 
DomainWithLimitsWrapper<DatacenterLimitsDto> {
 
    // Builder
 
-   public static Builder builder(final ApiContext<AbiquoApi> context) {
-      return new Builder(context);
+   public static Builder builder(final ApiContext<AbiquoApi> context, 
Datacenter datacenter) {
+      return new Builder(context, datacenter);
    }
 
    public static class Builder extends LimitsBuilder<Builder> {
@@ -68,9 +75,11 @@ public class Limits extends 
DomainWithLimitsWrapper<DatacenterLimitsDto> {
 
       protected Long repositoryHard = Long.valueOf(DEFAULT_LIMITS);
 
-      public Builder(final ApiContext<AbiquoApi> context) {
-         super();
-         this.context = context;
+      protected Datacenter datacenter;
+
+      public Builder(final ApiContext<AbiquoApi> context, final Datacenter 
datacenter) {
+         this.context = checkNotNull(context, "missing context object");
+         this.datacenter = checkNotNull(datacenter, "missing datacenter 
object");
       }
 
       public Builder repositoryLimits(final long soft, final long hard) {
@@ -90,13 +99,18 @@ public class Limits extends 
DomainWithLimitsWrapper<DatacenterLimitsDto> {
          dto.setRepositoryHardLimitsInMb(repositoryHard);
          dto.setRepositorySoftLimitsInMb(repositorySoft);
 
+         // Establish the relation with the physical datacenter
+         dto.addLink(new RESTLink(ParentLinkName.DATACENTER, 
checkNotNull(datacenter.unwrap().getEditLink(),
+                 "missing edit link").getHref()));
+
          Limits limits = new Limits(context, dto);
 
          return limits;
       }
 
       public static Builder fromEnterprise(final Limits in) {
-         return Limits.builder(in.context).ramLimits(in.getRamSoftLimitInMb(), 
in.getRamHardLimitInMb())
+         return Limits.builder(in.context, in.getDatacenter())
+               .ramLimits(in.getRamSoftLimitInMb(), in.getRamHardLimitInMb())
                .cpuCountLimits(in.getCpuCountSoftLimit(), 
in.getCpuCountHardLimit())
                .hdLimitsInMb(in.getHdSoftLimitInMb(), in.getHdHardLimitInMb())
                .storageLimits(in.getStorageSoft(), in.getStorageHard())
@@ -133,6 +147,13 @@ public class Limits extends 
DomainWithLimitsWrapper<DatacenterLimitsDto> {
       target.setRepositorySoftLimitsInMb(repositorySoft);
    }
 
+   public Datacenter getDatacenter() {
+      Integer datacenterId = target.getIdFromLink(ParentLinkName.DATACENTER);
+      checkNotNull(datacenterId, ValidationErrors.MISSING_REQUIRED_LINK);
+      DatacenterDto dto = 
context.getApi().getInfrastructureApi().getDatacenter(datacenterId);
+      return wrap(context, Datacenter.class, dto);
+   }
+
    @Override
    public String toString() {
       return "Limits [id=" + getId() + ", repositoryHard=" + 
getRepositoryHard() + ", repositorySoft="

Reply via email to