mirror of https://github.com/apache/jclouds.git
Merge pull request #430 from danikov/vclouds-director-admin-vdc
Issue 830: vCloud director Admin vDC
This commit is contained in:
commit
d2d0129298
|
@ -20,6 +20,7 @@ package org.jclouds.vcloud.director.v1_5;
|
|||
|
||||
import org.jclouds.rest.annotations.Delegate;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Group;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Media;
|
||||
|
@ -31,6 +32,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Vdc;
|
|||
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogAsyncClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminOrgAsyncClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminVdcAsyncClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.GroupAsyncClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient;
|
||||
|
@ -136,4 +138,10 @@ public interface VCloudDirectorAsyncClient {
|
|||
*/
|
||||
@Delegate
|
||||
UserAsyncClient getUserClient();
|
||||
|
||||
/**
|
||||
* @return asynchronous access to {@link AdminVdc} features
|
||||
*/
|
||||
@Delegate
|
||||
AdminVdcAsyncClient getAdminVdcClient();
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
|
|||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.rest.annotations.Delegate;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Group;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Media;
|
||||
|
@ -34,6 +35,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Vdc;
|
|||
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminOrgClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.AdminVdcClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.CatalogClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.GroupClient;
|
||||
import org.jclouds.vcloud.director.v1_5.features.MediaClient;
|
||||
|
@ -139,4 +141,10 @@ public interface VCloudDirectorClient {
|
|||
*/
|
||||
@Delegate
|
||||
UserClient getUserClient();
|
||||
|
||||
/**
|
||||
* @return synchronous access to {@link AdminVdc} features
|
||||
*/
|
||||
@Delegate
|
||||
AdminVdcClient getAdminVdcClient();
|
||||
}
|
||||
|
|
|
@ -157,6 +157,8 @@ public class VCloudDirectorMediaType {
|
|||
|
||||
public static final String ROLE = "application/vnd.vmware.admin.role+xml";
|
||||
|
||||
public static final String ADMIN_VDC = "application/vnd.vmware.admin.vdc+xml";
|
||||
|
||||
/**
|
||||
* All acceptable media types.
|
||||
*
|
||||
|
@ -177,6 +179,6 @@ public class VCloudDirectorMediaType {
|
|||
PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS,
|
||||
ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS,
|
||||
ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS, ADMIN_NETWORK,
|
||||
ADMIN_ORG_NETWORK, USER, ROLE
|
||||
ADMIN_ORG_NETWORK, USER, ROLE, ADMIN_VDC
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,323 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Provides an administrative view of a vDC. Includes all members
|
||||
* of the Vdc element, and adds several elements that can be
|
||||
* viewed and modified only by administrators.
|
||||
*
|
||||
*
|
||||
* <p>Java class for AdminVdc complex type.
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
*
|
||||
* <pre>
|
||||
* <complexType name="AdminVdc">
|
||||
* <complexContent>
|
||||
* <extension base="{http://www.vmware.com/vcloud/v1.5}VdcType">
|
||||
* <sequence>
|
||||
* <element name="ResourceGuaranteedMemory" type="{http://www.w3.org/2001/XMLSchema}double" minOccurs="0"/>
|
||||
* <element name="ResourceGuaranteedCpu" type="{http://www.w3.org/2001/XMLSchema}double" minOccurs="0"/>
|
||||
* <element name="VCpuInMhz" type="{http://www.w3.org/2001/XMLSchema}long" minOccurs="0"/>
|
||||
* <element name="IsThinProvision" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
|
||||
* <element name="NetworkPoolReference" type="{http://www.vmware.com/vcloud/v1.5}ReferenceType" minOccurs="0"/>
|
||||
* <element name="ProviderVdcReference" type="{http://www.vmware.com/vcloud/v1.5}ReferenceType" minOccurs="0"/>
|
||||
* <element name="UsesFastProvisioning" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
|
||||
* </sequence>
|
||||
* <anyAttribute processContents='lax' namespace='##other'/>
|
||||
* </extension>
|
||||
* </complexContent>
|
||||
* </complexType>
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "AdminVdc", propOrder = {
|
||||
"resourceGuaranteedMemory",
|
||||
"resourceGuaranteedCpu",
|
||||
"vCpuInMhz",
|
||||
"isThinProvision",
|
||||
"networkPoolReference",
|
||||
"providerVdcReference",
|
||||
"usesFastProvisioning"
|
||||
})
|
||||
public class AdminVdc extends Vdc {
|
||||
public static Builder<?> builder() {
|
||||
return new ConcreteBuilder();
|
||||
}
|
||||
|
||||
public static abstract class Builder<T extends Builder<T>> extends Vdc.Builder<T> {
|
||||
private Double resourceGuaranteedMemory;
|
||||
private Double resourceGuaranteedCpu;
|
||||
private Long vCpuInMhz;
|
||||
private Boolean isThinProvision;
|
||||
private Reference networkPoolReference;
|
||||
private Reference providerVdcReference;
|
||||
private Boolean usesFastProvisioning;
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getResourceGuaranteedMemory()
|
||||
*/
|
||||
public T resourceGuaranteedMemory(Double resourceGuaranteedMemory) {
|
||||
this.resourceGuaranteedMemory = resourceGuaranteedMemory;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getResourceGuaranteedCpu()
|
||||
*/
|
||||
public T resourceGuaranteedCpu(Double resourceGuaranteedCpu) {
|
||||
this.resourceGuaranteedCpu = resourceGuaranteedCpu;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getVCpuInMhz()
|
||||
*/
|
||||
public T vCpuInMhz(Long vCpuInMhz) {
|
||||
this.vCpuInMhz = vCpuInMhz;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getIsThinProvision()
|
||||
*/
|
||||
public T isThinProvision(Boolean isThinProvision) {
|
||||
this.isThinProvision = isThinProvision;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getNetworkPoolReference()
|
||||
*/
|
||||
public T networkPoolReference(Reference networkPoolReference) {
|
||||
this.networkPoolReference = networkPoolReference;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getProviderVdcReference()
|
||||
*/
|
||||
public T providerVdcReference(Reference providerVdcReference) {
|
||||
this.providerVdcReference = providerVdcReference;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see AdminVdc#getUsesFastProvisioning()
|
||||
*/
|
||||
public T usesFastProvisioning(Boolean usesFastProvisioning) {
|
||||
this.usesFastProvisioning = usesFastProvisioning;
|
||||
return self();
|
||||
}
|
||||
|
||||
public AdminVdc build() {
|
||||
return new AdminVdc(this);
|
||||
}
|
||||
|
||||
public T fromAdminVdc(AdminVdc in) {
|
||||
return fromVdc(in)
|
||||
.resourceGuaranteedMemory(in.getResourceGuaranteedMemory())
|
||||
.resourceGuaranteedCpu(in.getResourceGuaranteedCpu())
|
||||
.vCpuInMhz(in.getVCpuInMhz())
|
||||
.isThinProvision(in.isThinProvision())
|
||||
.networkPoolReference(in.getNetworkPoolReference())
|
||||
.providerVdcReference(in.getProviderVdcReference())
|
||||
.usesFastProvisioning(in.usesFastProvisioning());
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
|
||||
@Override protected ConcreteBuilder self() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private AdminVdc() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
public AdminVdc(Builder<?> b) {
|
||||
super(b);
|
||||
resourceGuaranteedMemory = b.resourceGuaranteedMemory;
|
||||
resourceGuaranteedCpu = b.resourceGuaranteedCpu;
|
||||
vCpuInMhz = b.vCpuInMhz;
|
||||
isThinProvision = b.isThinProvision;
|
||||
networkPoolReference = b.networkPoolReference;
|
||||
providerVdcReference = b.providerVdcReference;
|
||||
usesFastProvisioning = b.usesFastProvisioning;
|
||||
}
|
||||
|
||||
@XmlElement(name = "ResourceGuaranteedMemory")
|
||||
protected Double resourceGuaranteedMemory;
|
||||
@XmlElement(name = "ResourceGuaranteedCpu")
|
||||
protected Double resourceGuaranteedCpu;
|
||||
@XmlElement(name = "VCpuInMhz")
|
||||
protected Long vCpuInMhz;
|
||||
@XmlElement(name = "IsThinProvision")
|
||||
protected Boolean isThinProvision;
|
||||
@XmlElement(name = "NetworkPoolReference")
|
||||
protected Reference networkPoolReference;
|
||||
@XmlElement(name = "ProviderVdcReference")
|
||||
protected Reference providerVdcReference;
|
||||
@XmlElement(name = "UsesFastProvisioning")
|
||||
protected Boolean usesFastProvisioning;
|
||||
|
||||
/**
|
||||
* Gets the value of the resourceGuaranteedMemory property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Double }
|
||||
*
|
||||
*/
|
||||
public Double getResourceGuaranteedMemory() {
|
||||
return resourceGuaranteedMemory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the resourceGuaranteedCpu property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Double }
|
||||
*
|
||||
*/
|
||||
public Double getResourceGuaranteedCpu() {
|
||||
return resourceGuaranteedCpu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the vCpuInMhz property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Long }
|
||||
*
|
||||
*/
|
||||
public Long getVCpuInMhz() {
|
||||
return vCpuInMhz;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the isThinProvision property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isThinProvision() {
|
||||
return isThinProvision;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the networkPoolReference property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Reference }
|
||||
*
|
||||
*/
|
||||
public Reference getNetworkPoolReference() {
|
||||
return networkPoolReference;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the providerVdcReference property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Reference }
|
||||
*
|
||||
*/
|
||||
public Reference getProviderVdcReference() {
|
||||
return providerVdcReference;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the value of the usesFastProvisioning property.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean usesFastProvisioning() {
|
||||
return usesFastProvisioning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
AdminVdc that = AdminVdc.class.cast(o);
|
||||
return super.equals(that) &&
|
||||
equal(resourceGuaranteedMemory, that.resourceGuaranteedMemory) &&
|
||||
equal(resourceGuaranteedCpu, that.resourceGuaranteedCpu) &&
|
||||
equal(vCpuInMhz, that.vCpuInMhz) &&
|
||||
equal(isThinProvision, that.isThinProvision) &&
|
||||
equal(networkPoolReference, that.networkPoolReference) &&
|
||||
equal(providerVdcReference, that.providerVdcReference) &&
|
||||
equal(usesFastProvisioning, that.usesFastProvisioning);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(super.hashCode(),
|
||||
resourceGuaranteedMemory,
|
||||
resourceGuaranteedCpu,
|
||||
vCpuInMhz,
|
||||
isThinProvision,
|
||||
networkPoolReference,
|
||||
providerVdcReference,
|
||||
usesFastProvisioning);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ToStringHelper string() {
|
||||
return super.string()
|
||||
.add("resourceGuaranteedMemory", resourceGuaranteedMemory)
|
||||
.add("resourceGuaranteedCpu", resourceGuaranteedCpu)
|
||||
.add("vCpuInMhz", vCpuInMhz)
|
||||
.add("isThinProvision", isThinProvision)
|
||||
.add("networkPoolReference", networkPoolReference)
|
||||
.add("providerVdcReference", providerVdcReference)
|
||||
.add("usesFastProvisioning", usesFastProvisioning);
|
||||
}
|
||||
|
||||
}
|
|
@ -21,9 +21,6 @@ package org.jclouds.vcloud.director.v1_5.domain;
|
|||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
@ -31,6 +28,7 @@ import javax.xml.bind.annotation.XmlSeeAlso;
|
|||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -78,23 +76,24 @@ import com.google.common.base.Objects;
|
|||
"isEnabled"
|
||||
})
|
||||
@XmlSeeAlso({
|
||||
// AdminVdc.class
|
||||
AdminVdc.class
|
||||
})
|
||||
public class Vdc
|
||||
extends EntityType<Vdc>
|
||||
|
||||
{
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
public class Vdc extends EntityType<Vdc> {
|
||||
public static Builder<?> builder() {
|
||||
return new ConcreteBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder toBuilder() {
|
||||
return new Builder().fromVdc(this);
|
||||
public Builder<?> toNewBuilder() {
|
||||
return new ConcreteBuilder();
|
||||
}
|
||||
|
||||
public static class Builder extends EntityType.Builder<Vdc> {
|
||||
@Override
|
||||
public ResourceType.Builder<Vdc> toBuilder() {
|
||||
throw new UnsupportedOperationException("Use new builder");
|
||||
}
|
||||
|
||||
public abstract static class Builder<T extends Builder<T>> extends EntityType.NewBuilder<T> {
|
||||
private String allocationModel;
|
||||
private CapacityWithUsage storageCapacity;
|
||||
private ComputeCapacity computeCapacity;
|
||||
|
@ -110,174 +109,96 @@ public class Vdc
|
|||
/**
|
||||
* @see Vdc#getAllocationModel()
|
||||
*/
|
||||
public Builder allocationModel(String allocationModel) {
|
||||
public T allocationModel(String allocationModel) {
|
||||
this.allocationModel = allocationModel;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getStorageCapacity()
|
||||
*/
|
||||
public Builder storageCapacity(CapacityWithUsage storageCapacity) {
|
||||
public T storageCapacity(CapacityWithUsage storageCapacity) {
|
||||
this.storageCapacity = storageCapacity;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getComputeCapacity()
|
||||
*/
|
||||
public Builder computeCapacity(ComputeCapacity computeCapacity) {
|
||||
public T computeCapacity(ComputeCapacity computeCapacity) {
|
||||
this.computeCapacity = computeCapacity;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getResourceEntities()
|
||||
*/
|
||||
public Builder resourceEntities(ResourceEntities resourceEntities) {
|
||||
public T resourceEntities(ResourceEntities resourceEntities) {
|
||||
this.resourceEntities = resourceEntities;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getAvailableNetworks()
|
||||
*/
|
||||
public Builder availableNetworks(AvailableNetworks availableNetworks) {
|
||||
public T availableNetworks(AvailableNetworks availableNetworks) {
|
||||
this.availableNetworks = availableNetworks;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getCapabilities()
|
||||
*/
|
||||
public Builder capabilities(Capabilities capabilities) {
|
||||
public T capabilities(Capabilities capabilities) {
|
||||
this.capabilities = capabilities;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getNicQuota()
|
||||
*/
|
||||
public Builder nicQuota(int nicQuota) {
|
||||
public T nicQuota(int nicQuota) {
|
||||
this.nicQuota = nicQuota;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getNetworkQuota()
|
||||
*/
|
||||
public Builder networkQuota(int networkQuota) {
|
||||
public T networkQuota(int networkQuota) {
|
||||
this.networkQuota = networkQuota;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getVmQuota()
|
||||
*/
|
||||
public Builder vmQuota(Integer vmQuota) {
|
||||
public T vmQuota(Integer vmQuota) {
|
||||
this.vmQuota = vmQuota;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#isEnabled()
|
||||
*/
|
||||
public Builder isEnabled(Boolean isEnabled) {
|
||||
public T isEnabled(Boolean isEnabled) {
|
||||
this.isEnabled = isEnabled;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Vdc#getStatus()
|
||||
*/
|
||||
public Builder status(Integer status) {
|
||||
public T status(Integer status) {
|
||||
this.status = status;
|
||||
return this;
|
||||
return self();
|
||||
}
|
||||
|
||||
public Vdc build() {
|
||||
return new Vdc(
|
||||
href, type, links, description, tasks, id, name, allocationModel, storageCapacity,
|
||||
computeCapacity, resourceEntities, availableNetworks, capabilities, nicQuota, networkQuota,
|
||||
vmQuota, isEnabled, status);
|
||||
return new Vdc(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getName()
|
||||
*/
|
||||
public Builder name(String name) {
|
||||
super.name(name);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getDescription()
|
||||
*/
|
||||
public Builder description(String description) {
|
||||
super.description(description);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getId()
|
||||
*/
|
||||
@Override
|
||||
public Builder id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getTasks()
|
||||
*/
|
||||
@Override
|
||||
public Builder tasks(Set<Task> tasks) {
|
||||
super.tasks(tasks);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder links(Set<Link> links) {
|
||||
super.links(links);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder link(Link link) {
|
||||
super.link(link);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder fromEntityType(EntityType<Vdc> in) {
|
||||
return Builder.class.cast(super.fromEntityType(in));
|
||||
}
|
||||
|
||||
public Builder fromVdc(Vdc in) {
|
||||
public T fromVdc(Vdc in) {
|
||||
return fromEntityType(in)
|
||||
.allocationModel(in.getAllocationModel())
|
||||
.storageCapacity(in.getStorageCapacity())
|
||||
|
@ -293,25 +214,30 @@ public class Vdc
|
|||
}
|
||||
}
|
||||
|
||||
public Vdc(URI href, String type, Set<Link> links, String description, Set<Task> tasks, String id, String name, String allocationModel, CapacityWithUsage storageCapacity, ComputeCapacity computeCapacity, ResourceEntities resourceEntities, AvailableNetworks availableNetworks, Capabilities capabilities, int nicQuota, int networkQuota, Integer vmQuota, Boolean enabled, Integer status) {
|
||||
super(href, type, links, description, tasks, id, name);
|
||||
this.allocationModel = allocationModel;
|
||||
this.storageCapacity = storageCapacity;
|
||||
this.computeCapacity = computeCapacity;
|
||||
this.resourceEntities = resourceEntities;
|
||||
this.availableNetworks = availableNetworks;
|
||||
this.capabilities = capabilities;
|
||||
this.nicQuota = nicQuota;
|
||||
this.networkQuota = networkQuota;
|
||||
this.vmQuota = vmQuota;
|
||||
isEnabled = enabled;
|
||||
this.status = status;
|
||||
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
|
||||
@Override protected ConcreteBuilder self() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
private Vdc() {
|
||||
protected Vdc() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
public Vdc(Builder<?> b) {
|
||||
super(b.href, b.type, b.links, b.description, b.tasks, b.id, b.name);
|
||||
this.allocationModel = b.allocationModel;
|
||||
this.storageCapacity = b.storageCapacity;
|
||||
this.computeCapacity = b.computeCapacity;
|
||||
this.resourceEntities = b.resourceEntities;
|
||||
this.availableNetworks = b.availableNetworks;
|
||||
this.capabilities = b.capabilities;
|
||||
this.nicQuota = b.nicQuota;
|
||||
this.networkQuota = b.networkQuota;
|
||||
this.vmQuota = b.vmQuota;
|
||||
isEnabled = b.isEnabled;
|
||||
this.status = b.status;
|
||||
}
|
||||
|
||||
@XmlElement(name = "AllocationModel", required = true)
|
||||
protected String allocationModel;
|
||||
|
@ -447,7 +373,8 @@ public class Vdc
|
|||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
Vdc that = Vdc.class.cast(o);
|
||||
return equal(allocationModel, that.allocationModel) &&
|
||||
return super.equals(that) &&
|
||||
equal(allocationModel, that.allocationModel) &&
|
||||
equal(storageCapacity, that.storageCapacity) &&
|
||||
equal(computeCapacity, that.computeCapacity) &&
|
||||
equal(resourceEntities, that.resourceEntities) &&
|
||||
|
@ -462,7 +389,8 @@ public class Vdc
|
|||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(allocationModel,
|
||||
return Objects.hashCode(super.hashCode(),
|
||||
allocationModel,
|
||||
storageCapacity,
|
||||
computeCapacity,
|
||||
resourceEntities,
|
||||
|
@ -476,8 +404,8 @@ public class Vdc
|
|||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper("")
|
||||
public ToStringHelper string() {
|
||||
return super.string()
|
||||
.add("allocationModel", allocationModel)
|
||||
.add("storageCapacity", storageCapacity)
|
||||
.add("computeCapacity", computeCapacity)
|
||||
|
@ -488,7 +416,7 @@ public class Vdc
|
|||
.add("networkQuota", networkQuota)
|
||||
.add("vmQuota", vmQuota)
|
||||
.add("isEnabled", isEnabled)
|
||||
.add("status", status).toString();
|
||||
.add("status", status);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
|
||||
import org.jclouds.rest.annotations.EndpointParam;
|
||||
import org.jclouds.rest.annotations.ExceptionParser;
|
||||
import org.jclouds.rest.annotations.JAXBResponseParser;
|
||||
import org.jclouds.rest.annotations.RequestFilters;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
||||
import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx;
|
||||
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
|
||||
/**
|
||||
* @see AdminVdcClient
|
||||
* @author danikov
|
||||
*/
|
||||
@RequestFilters(AddVCloudAuthorizationToRequest.class)
|
||||
public interface AdminVdcAsyncClient extends VdcAsyncClient {
|
||||
|
||||
/**
|
||||
* @see AdminVdcClient#getVdc(URI)
|
||||
*/
|
||||
@GET
|
||||
@Consumes
|
||||
@JAXBResponseParser
|
||||
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||
ListenableFuture<AdminVdc> getVdc(@EndpointParam URI vdcRef);
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.jclouds.concurrent.Timeout;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
|
||||
/**
|
||||
* Provides synchronous access to Network.
|
||||
* <p/>
|
||||
*
|
||||
* @see NetworkAsyncClient
|
||||
* @see <a href= "http://support.theenterprisecloud.com/kb/default.asp?id=984&Lang=1&SID=" />
|
||||
* @author danikov
|
||||
*/
|
||||
@Timeout(duration = 180, timeUnit = TimeUnit.SECONDS)
|
||||
public interface AdminVdcClient extends VdcClient {
|
||||
|
||||
/**
|
||||
* Retrieves an admin view of virtual data center. The redwood admin can disable an
|
||||
* organization vDC. This will prevent any further allocation to be used by the organization.
|
||||
* Changing the state will not affect allocations already used. For example, if an organization
|
||||
* vDC is disabled, an organization user cannot deploy or create a new virtual machine in the
|
||||
* vDC (deploy uses memory and cpu allocations, and create uses storage allocation).
|
||||
*
|
||||
* @return the admin vDC or null if not found
|
||||
*/
|
||||
AdminVdc getVdc(URI vdcRef);
|
||||
}
|
|
@ -66,7 +66,7 @@ public interface VdcAsyncClient {
|
|||
@Consumes
|
||||
@JAXBResponseParser
|
||||
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||
ListenableFuture<Vdc> getVdc(@EndpointParam URI vdcURI);
|
||||
ListenableFuture<? extends Vdc> getVdc(@EndpointParam URI vdcURI);
|
||||
|
||||
/**
|
||||
* @see VdcClient#captureVApp(URI, CaptureVAppParams)
|
||||
|
|
|
@ -796,4 +796,64 @@ public class Checks {
|
|||
public static void checkTelephone(String number) {
|
||||
// TODO: regex validate telephone
|
||||
}
|
||||
|
||||
public static void checkAdminVdc(AdminVdc vdc) {
|
||||
// optional
|
||||
// NOTE isThinProvision cannot be checked
|
||||
// NOTE usesFastProvisioning cannot be checked
|
||||
if (vdc.getResourceGuaranteedMemory() != null) {
|
||||
// TODO: between 0 and 1 inc.
|
||||
}
|
||||
if (vdc.getResourceGuaranteedCpu() != null) {
|
||||
// TODO: between 0 and 1 inc.
|
||||
}
|
||||
if (vdc.getVCpuInMhz() != null) {
|
||||
assertTrue(vdc.getVCpuInMhz() >= 0, String.format(OBJ_FIELD_GTE_0,
|
||||
"Vdc", "cCpuInMhz", vdc.getVCpuInMhz()));
|
||||
}
|
||||
if (vdc.getNetworkPoolReference() != null) {
|
||||
checkReferenceType(vdc.getNetworkPoolReference());
|
||||
}
|
||||
if (vdc.getProviderVdcReference() != null) {
|
||||
checkReferenceType(vdc.getProviderVdcReference());
|
||||
}
|
||||
|
||||
// parent type
|
||||
checkVdc(vdc);
|
||||
}
|
||||
|
||||
public static void checkVdc(Vdc vdc) {
|
||||
// required
|
||||
assertNotNull(vdc.getAllocationModel(), String.format(OBJ_FIELD_REQ, "Vdc", "allocationModel"));
|
||||
// one of: AllocationVApp, AllocationPool, ReservationPool
|
||||
assertNotNull(vdc.getStorageCapacity(), String.format(OBJ_FIELD_REQ, "Vdc", "storageCapacity"));
|
||||
checkCapacityWithUsage(vdc.getStorageCapacity());
|
||||
assertNotNull(vdc.getComputeCapacity(), String.format(OBJ_FIELD_REQ, "Vdc", "computeCapacity"));
|
||||
checkComputeCapacity(vdc.getComputeCapacity());
|
||||
assertNotNull(vdc.getNicQuota(), String.format(OBJ_FIELD_REQ, "Vdc", "nicQuota"));
|
||||
assertTrue(vdc.getNicQuota() >= 0, String.format(OBJ_FIELD_GTE_0,
|
||||
"Vdc", "nicQuota", vdc.getNicQuota()));
|
||||
assertNotNull(vdc.getNetworkQuota(), String.format(OBJ_FIELD_REQ, "Vdc", "networkQuota"));
|
||||
assertTrue(vdc.getNetworkQuota() >= 0, String.format(OBJ_FIELD_GTE_0,
|
||||
"Vdc", "networkQuota", vdc.getNetworkQuota()));
|
||||
|
||||
// optional
|
||||
// NOTE isEnabled cannot be checked
|
||||
if (vdc.getResourceEntities() != null) {
|
||||
checkResourceEntities(vdc.getResourceEntities());
|
||||
}
|
||||
if (vdc.getAvailableNetworks() != null) {
|
||||
checkAvailableNetworks(vdc.getAvailableNetworks());
|
||||
}
|
||||
if (vdc.getCapabilities() != null) {
|
||||
checkCapabilities(vdc.getCapabilities());
|
||||
}
|
||||
if (vdc.getVmQuota() != null) {
|
||||
assertTrue(vdc.getVmQuota() >= 0, String.format(OBJ_FIELD_GTE_0,
|
||||
"Vdc", "vmQuota", vdc.getVmQuota()));
|
||||
}
|
||||
|
||||
// parent type
|
||||
checkEntityType(vdc);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
|
||||
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Allows us to test a client via its side effects.
|
||||
*
|
||||
* @author danikov
|
||||
*/
|
||||
@Test(groups = { "unit", "admin", "vdc" }, singleThreaded = true, testName = "AdminVdcClientExpectTest")
|
||||
public class AdminVdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
|
||||
|
||||
private Reference vdcRef = Reference.builder()
|
||||
.href(URI.create(endpoint + "???"))
|
||||
.build();
|
||||
|
||||
@Test( enabled = false )
|
||||
public void testGetVdc() {
|
||||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||
new VcloudHttpRequestPrimer()
|
||||
.apiCommand("GET", "/admin/vdc/???")
|
||||
.acceptAnyMedia()
|
||||
.httpRequestBuilder().build(),
|
||||
new VcloudHttpResponsePrimer()
|
||||
.xmlFilePayload("/vdc/admin/vdc.xml",
|
||||
VCloudDirectorMediaType.ADMIN_VDC)
|
||||
.httpResponseBuilder().build());
|
||||
|
||||
AdminVdc expected = adminVdc();
|
||||
|
||||
assertEquals(client.getAdminVdcClient().getVdc(vdcRef.getHref()), expected);
|
||||
}
|
||||
|
||||
public static final AdminVdc adminVdc() {
|
||||
return AdminVdc.builder().fromVdc(VdcClientExpectTest.getVdc())
|
||||
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
*(Link.builder().regarding copyright ownership. jclouds 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(Link.builder().required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_REQ_LIVE;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE;
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
|
||||
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Checks;
|
||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@link NetworkClient}
|
||||
*
|
||||
* @author danikov
|
||||
*/
|
||||
@Test(groups = { "live", "admin", "vdc" }, singleThreaded = true, testName = "AdminVdcClientLiveTest")
|
||||
public class AdminVdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
|
||||
|
||||
public static final String VDC = "admin vdc";
|
||||
|
||||
/*
|
||||
* Convenience reference to API client.
|
||||
*/
|
||||
protected AdminVdcClient vdcClient;
|
||||
|
||||
@Override
|
||||
@BeforeClass(inheritGroups = true)
|
||||
public void setupRequiredClients() {
|
||||
vdcClient = context.getApi().getAdminVdcClient();
|
||||
}
|
||||
|
||||
@Test(testName = "GET /admin/vdc/{id}", enabled = false)
|
||||
public void testGetNetwork() {
|
||||
// required for testing
|
||||
assertNotNull(vdcURI, String.format(REF_REQ_LIVE, VDC));
|
||||
|
||||
AdminVdc vdc = vdcClient.getVdc(toAdminUri(vdcURI));
|
||||
assertNotNull(vdc, String.format(OBJ_REQ_LIVE, VDC));
|
||||
|
||||
// parent type
|
||||
Checks.checkAdminVdc(vdc);
|
||||
}
|
||||
}
|
|
@ -36,6 +36,7 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
|
|||
import org.jclouds.vcloud.director.v1_5.domain.Link;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Org;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.ReferenceType;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Session;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Task;
|
||||
import org.jclouds.vcloud.director.v1_5.predicates.ReferenceTypePredicates;
|
||||
|
@ -135,4 +136,12 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
|
|||
if (context != null)
|
||||
context.close();
|
||||
}
|
||||
|
||||
public URI toAdminUri(ReferenceType<?> ref) {
|
||||
return toAdminUri(ref.getHref());
|
||||
}
|
||||
|
||||
public URI toAdminUri(URI uri) {
|
||||
return Reference.builder().href(uri).build().toAdminReference(endpoint).getHref();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue