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="
