http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java deleted file mode 100644 index 25b6667..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachine.java +++ /dev/null @@ -1,887 +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.cloud; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Arrays; -import java.util.List; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWithTasksWrapper; -import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions; -import org.jclouds.abiquo.domain.enterprise.Enterprise; -import org.jclouds.abiquo.domain.network.Ip; -import org.jclouds.abiquo.domain.network.Network; -import org.jclouds.abiquo.domain.network.UnmanagedNetwork; -import org.jclouds.abiquo.domain.task.VirtualMachineTask; -import org.jclouds.abiquo.domain.task.VirtualMachineTemplateTask; -import org.jclouds.abiquo.domain.util.LinkUtils; -import org.jclouds.abiquo.features.services.MonitoringService; -import org.jclouds.abiquo.monitor.VirtualMachineMonitor; -import org.jclouds.abiquo.predicates.LinkPredicates; -import org.jclouds.abiquo.reference.ValidationErrors; -import org.jclouds.abiquo.reference.rest.ParentLinkName; -import org.jclouds.abiquo.strategy.cloud.ListAttachedNics; -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.model.transport.AcceptedRequestDto; -import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto; -import com.abiquo.server.core.cloud.VirtualApplianceDto; -import com.abiquo.server.core.cloud.VirtualDatacenterDto; -import com.abiquo.server.core.cloud.VirtualMachineInstanceDto; -import com.abiquo.server.core.cloud.VirtualMachineState; -import com.abiquo.server.core.cloud.VirtualMachineStateDto; -import com.abiquo.server.core.cloud.VirtualMachineTaskDto; -import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto; -import com.abiquo.server.core.enterprise.EnterpriseDto; -import com.abiquo.server.core.infrastructure.network.UnmanagedIpDto; -import com.abiquo.server.core.infrastructure.network.VMNetworkConfigurationDto; -import com.abiquo.server.core.infrastructure.network.VMNetworkConfigurationsDto; -import com.abiquo.server.core.infrastructure.storage.DiskManagementDto; -import com.abiquo.server.core.infrastructure.storage.DisksManagementDto; -import com.abiquo.server.core.infrastructure.storage.DvdManagementDto; -import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto; -import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.inject.TypeLiteral; - -/** - * Adds high level functionality to {@link VirtualMachineWithNodeExtendedDto}. - * - * @see API: <a - * href="http://community.abiquo.com/display/ABI20/VirtualMachineResource"> - * http://community.abiquo.com/display/ABI20/VirtualMachineResource</a> - */ -public class VirtualMachine extends DomainWithTasksWrapper<VirtualMachineWithNodeExtendedDto> { - /** The virtual appliance where the virtual machine belongs. */ - private VirtualAppliance virtualAppliance; - - /** The virtual machine template of the virtual machine. */ - private VirtualMachineTemplate template; - - /** - * Constructor to be used only by the builder. - */ - protected VirtualMachine(final ApiContext<AbiquoApi> context, final VirtualMachineWithNodeExtendedDto target) { - super(context, target); - } - - // Domain operations - - /** - * Delete the virtual machine. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Deleteavirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource -Deleteavirtualmachine</a> - */ - public void delete() { - context.getApi().getCloudApi().deleteVirtualMachine(target); - target = null; - } - - /** - * Create a new virtual machine in Abiquo. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Createavirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource-Createavirtualmachine</a> - */ - public void save() { - checkNotNull(template, ValidationErrors.NULL_RESOURCE + VirtualMachineTemplate.class); - checkNotNull(template.getId(), ValidationErrors.MISSING_REQUIRED_FIELD + " id in " + VirtualMachineTemplate.class); - - this.updateLink(target, ParentLinkName.VIRTUAL_MACHINE_TEMPLATE, template.unwrap(), "edit"); - - target = context.getApi().getCloudApi().createVirtualMachine(virtualAppliance.unwrap(), target); - } - - /** - * Update virtual machine information in the server with the data from this - * virtual machine. This is an asynchronous call. This method returns a - * {@link org.jclouds.abiquo.domain.task.AsyncTask} object that keeps track - * of the task completion. Please refer to the documentation for details. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Modifyavirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource-Modifyavirtualmachine</a> - * @see github: <a href= - * "https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor-example" - * > https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor- - * example</a> - * @return The task reference or <code>null</code> if the operation completed - * synchronously. - */ - public VirtualMachineTask update() { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi().updateVirtualMachine(target); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - /** - * Update virtual machine information in the server with the data from this - * virtual machine. This is an asynchronous call. This method returns a - * {@link org.jclouds.abiquo.domain.task.AsyncTask} object that keeps track - * of the task completion. Please refer to the documentation for details. - * - * @param force - * Force update. - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Modifyavirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource-Modifyavirtualmachine</a> - * @see github: <a href= - * "https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor-example" - * > https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor- - * example</a> - * @return The task reference or <code>null</code> if the operation completed - * synchronously. - */ - public VirtualMachineTask update(final boolean force) { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi() - .updateVirtualMachine(target, VirtualMachineOptions.builder().force(force).build()); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - /** - * Change the state of the virtual machine. This is an asynchronous call. - * This method returns a {@link org.jclouds.abiquo.domain.task.AsyncTask} - * object that keeps track of the task completion. Please refer to the - * documentation for details. - * - * @param state - * The new state of the virtual machine. - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Changethestateofavirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource-Changethestateofavirtualmachine</a> - * @see github: <a href= - * "https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor-example" - * > https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor- - * example</a> - * @return The task reference or <code>null</code> if the operation completed - * synchronously. - */ - public VirtualMachineTask changeState(final VirtualMachineState state) { - VirtualMachineStateDto dto = new VirtualMachineStateDto(); - dto.setState(state); - - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi().changeVirtualMachineState(target, dto); - - return getTask(taskRef).asVirtualMachineTask(); - } - - /** - * Retrieve the state of the virtual machine. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Retrievethestateofthevirtualmachine" - * > http://community.abiquo.com/display/ABI20/VirtualMachineResource# - * VirtualMachineResource-Retrievethestateofthevirtualmachine</a> - * @return Current state of the virtual machine. - */ - public VirtualMachineState getState() { - VirtualMachineStateDto stateDto = context.getApi().getCloudApi().getVirtualMachineState(target); - VirtualMachineState state = stateDto.getState(); - target.setState(state); - target.setIdState(state.id()); - return state; - } - - /** - * Take a snapshot of the given virtual machine. - * <p> - * This will create a new {@link VirtualMachineTemplate} in the appliance - * library based on the given virtual machine. - * - * @param snapshotName - * The name of the snapshot. - * @return The task reference to the snapshot process. - */ - public VirtualMachineTemplateTask snapshot(final String snapshotName) { - VirtualMachineInstanceDto snapshotConfig = new VirtualMachineInstanceDto(); - snapshotConfig.setInstanceName(snapshotName); - - AcceptedRequestDto<String> response = context.getApi().getCloudApi() - .snapshotVirtualMachine(target, snapshotConfig); - - return getTask(response).asVirtualMachineTemplateTask(); - } - - // Parent access - - /** - * Retrieve the virtual appliance where this virtual machine is. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualApplianceResource#VirtualApplianceResource-Retrieveavirtualappliance" - * > http://community.abiquo.com/display/ABI20/VirtualApplianceResource# - * VirtualApplianceResource-Retrieveavirtualappliance</a> - * @return The virtual appliance where this virtual machine is. - */ - public VirtualAppliance getVirtualAppliance() { - RESTLink link = checkNotNull(target.searchLink(ParentLinkName.VIRTUAL_APPLIANCE), - ValidationErrors.MISSING_REQUIRED_LINK + " " + ParentLinkName.VIRTUAL_APPLIANCE); - - HttpResponse response = context.getApi().get(link); - - ParseXMLWithJAXB<VirtualApplianceDto> parser = new ParseXMLWithJAXB<VirtualApplianceDto>(context.utils().xml(), - TypeLiteral.get(VirtualApplianceDto.class)); - - return wrap(context, VirtualAppliance.class, parser.apply(response)); - } - - /** - * Retrieve the virtual datacenter where this virtual machine is. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualDatacenterResource#VirtualDatacenterResource-Retireveavirtualdatacenter" - * > http://community.abiquo.com/display/ABI20/VirtualDatacenterResource - * # VirtualDatacenterResource-Retireveavirtualdatacenter</a> - * @return The virtual datacenter where this virtual machine is. - */ - public VirtualDatacenter getVirtualDatacenter() { - Integer virtualDatacenterId = target.getIdFromLink(ParentLinkName.VIRTUAL_DATACENTER); - VirtualDatacenterDto dto = context.getApi().getCloudApi().getVirtualDatacenter(virtualDatacenterId); - return wrap(context, VirtualDatacenter.class, dto); - } - - /** - * Retrieve the enterprise of this virtual machine. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/EnterpriseResource#EnterpriseResource-RetrieveanEnterprise" - * > http://community.abiquo.com/display/ABI20/EnterpriseResource# - * EnterpriseResource- RetrieveanEnterprise</a> - * @return Enterprise of this virtual machine. - */ - public Enterprise getEnterprise() { - Integer enterpriseId = target.getIdFromLink(ParentLinkName.ENTERPRISE); - EnterpriseDto dto = context.getApi().getEnterpriseApi().getEnterprise(enterpriseId); - return wrap(context, Enterprise.class, dto); - } - - /** - * Retrieve the template of this virtual machine. - * - * @return Template of this virtual machine. - */ - public VirtualMachineTemplate getTemplate() { - VirtualMachineTemplateDto dto = context.getApi().getCloudApi().getVirtualMachineTemplate(target); - return wrap(context, VirtualMachineTemplate.class, dto); - } - - // Children access - - public Iterable<HardDisk> listAttachedHardDisks() { - refresh(); - DisksManagementDto hardDisks = context.getApi().getCloudApi().listAttachedHardDisks(target); - return wrap(context, HardDisk.class, hardDisks.getCollection()); - } - - public Iterable<Volume> listAttachedVolumes() { - refresh(); - VolumesManagementDto volumes = context.getApi().getCloudApi().listAttachedVolumes(target); - return wrap(context, Volume.class, volumes.getCollection()); - } - - public Iterable<Ip<?, ?>> listAttachedNics() { - // The strategy will refresh the vm. There is no need to do it here - ListAttachedNics strategy = context.utils().injector().getInstance(ListAttachedNics.class); - return ImmutableList.copyOf(strategy.execute(this)); - } - - // Actions - - public VirtualMachineTask deploy() { - return deploy(false); - } - - public VirtualMachineTask deploy(final boolean forceEnterpriseSoftLimits) { - VirtualMachineTaskDto force = new VirtualMachineTaskDto(); - force.setForceEnterpriseSoftLimits(forceEnterpriseSoftLimits); - - AcceptedRequestDto<String> response = context.getApi().getCloudApi().deployVirtualMachine(unwrap(), force); - - return getTask(response).asVirtualMachineTask(); - } - - public VirtualMachineTask undeploy() { - return undeploy(false); - } - - public VirtualMachineTask undeploy(final boolean forceUndeploy) { - VirtualMachineTaskDto force = new VirtualMachineTaskDto(); - force.setForceUndeploy(forceUndeploy); - - AcceptedRequestDto<String> response = context.getApi().getCloudApi().undeployVirtualMachine(unwrap(), force); - - return getTask(response).asVirtualMachineTask(); - } - - /** - * Reboot a virtual machine. This is an asynchronous call. This method - * returns a {@link org.jclouds.abiquo.domain.task.AsyncTask} object that - * keeps track of the task completion. Please refer to the documentation for - * details. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/VirtualMachineResource#VirtualMachineResource-Resetavirtualmachine" - * > http://community.abiquo.com/display/ABI20/Rack+Resource#/ - * VirtualMachineResource# - * VirtualMachineResource-Resetavirtualmachine</a> - * @see github: <a href= - * "https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor-example" - * > https://github.com/abiquo/jclouds-abiquo/wiki/Asynchronous-monitor- - * example</a> - * @return The task reference or <code>null</code> if the operation completed - * synchronously. - */ - public VirtualMachineTask reboot() { - AcceptedRequestDto<String> response = context.getApi().getCloudApi().rebootVirtualMachine(unwrap()); - - return getTask(response).asVirtualMachineTask(); - } - - public VirtualMachineTask attachHardDisks(final HardDisk... hardDisks) { - List<HardDisk> expected = Lists.newArrayList(listAttachedHardDisks()); - expected.addAll(Arrays.asList(hardDisks)); - - HardDisk[] disks = new HardDisk[expected.size()]; - return setHardDisks(expected.toArray(disks)); - } - - public VirtualMachineTask detachAllHardDisks() { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi().detachAllHardDisks(target); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - public VirtualMachineTask detachHardDisks(final HardDisk... hardDisks) { - List<HardDisk> expected = Lists.newArrayList(listAttachedHardDisks()); - Iterables.removeIf(expected, hardDiskIdIn(hardDisks)); - - HardDisk[] disks = new HardDisk[expected.size()]; - return setHardDisks(expected.toArray(disks)); - } - - public VirtualMachineTask setHardDisks(final HardDisk... hardDisks) { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi() - .replaceHardDisks(target, toHardDiskDto(hardDisks)); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - public VirtualMachineTask attachVolumes(final Volume... volumes) { - List<Volume> expected = Lists.newArrayList(listAttachedVolumes()); - expected.addAll(Arrays.asList(volumes)); - - Volume[] vols = new Volume[expected.size()]; - return setVolumes(true, expected.toArray(vols)); - } - - public VirtualMachineTask detachAllVolumes() { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi().detachAllVolumes(target); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - public VirtualMachineTask detachVolumes(final Volume... volumes) { - List<Volume> expected = Lists.newArrayList(listAttachedVolumes()); - Iterables.removeIf(expected, volumeIdIn(volumes)); - - Volume[] vols = new Volume[expected.size()]; - return setVolumes(true, expected.toArray(vols)); - } - - public VirtualMachineTask setVolumes(final Boolean forceSoftLimits, final Volume... volumes) { - AcceptedRequestDto<String> taskRef = context - .getApi() - .getCloudApi() - .replaceVolumes(target, VirtualMachineOptions.builder().force(forceSoftLimits).build(), - toVolumeDto(volumes)); - - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - public VirtualMachineTask setVolumes(final Volume... volumes) { - return setVolumes(true, volumes); - } - - public VirtualMachineTask setNics(final List<Ip<?, ?>> ips) { - // By default the network of the first ip will be used as a gateway - return setNics(ips != null && !ips.isEmpty() ? ips.get(0).getNetwork() : null, ips, null); - } - - public VirtualMachineTask setNics(final List<Ip<?, ?>> ips, final List<UnmanagedNetwork> unmanagedNetworks) { - // By default the network of the first ip will be used as a gateway - Network<?> gateway = null; - if (ips != null && !ips.isEmpty()) { - gateway = ips.get(0).getNetwork(); - } else if (unmanagedNetworks != null && !unmanagedNetworks.isEmpty()) { - gateway = unmanagedNetworks.get(0); - } - - return setNics(gateway, ips, unmanagedNetworks); - } - - public VirtualMachineTask setNics(final Network<?> gatewayNetwork, final List<Ip<?, ?>> ips) { - return setNics(gatewayNetwork, ips, null); - } - - public VirtualMachineTask setNics(final Network<?> gatewayNetwork, final List<Ip<?, ?>> ips, - final List<UnmanagedNetwork> unmanagedNetworks) { - // Remove the gateway configuration and the current nics - Iterables.removeIf(target.getLinks(), - Predicates.or(LinkPredicates.isNic(), LinkPredicates.rel(ParentLinkName.NETWORK_GATEWAY))); - - // Add the given nics in the appropriate order - int i = 0; - if (ips != null) { - for (i = 0; i < ips.size(); i++) { - RESTLink source = LinkUtils.getSelfLink(ips.get(i).unwrap()); - RESTLink link = new RESTLink("nic" + i, source.getHref()); - link.setType(ips.get(i).unwrap().getBaseMediaType()); - target.addLink(link); - } - } - - // Add unmanaged network references, if given - if (unmanagedNetworks != null) { - for (UnmanagedNetwork unmanaged : unmanagedNetworks) { - RESTLink source = checkNotNull(unmanaged.unwrap().searchLink("ips"), ValidationErrors.MISSING_REQUIRED_LINK - + "ips"); - - RESTLink link = new RESTLink("nic" + i, source.getHref()); - link.setType(UnmanagedIpDto.BASE_MEDIA_TYPE); - target.addLink(link); - i++; - } - } - - VirtualMachineTask task = update(true); - if (gatewayNetwork == null) { - return task; - } - - // If there is a gateway network, we have to wait until the network - // configuration links are - // available - if (task != null) { - VirtualMachineState originalState = target.getState(); - VirtualMachineMonitor monitor = context.utils().injector().getInstance(MonitoringService.class) - .getVirtualMachineMonitor(); - monitor.awaitState(originalState, this); - } - - // Set the new network configuration - - // Refresh virtual machine, to get the new configuration links - refresh(); - - VMNetworkConfigurationsDto configs = context.getApi().getCloudApi().listNetworkConfigurations(target); - - Iterables.removeIf(target.getLinks(), LinkPredicates.rel(ParentLinkName.NETWORK_GATEWAY)); - for (VMNetworkConfigurationDto config : configs.getCollection()) { - if (config.getGateway().equalsIgnoreCase(gatewayNetwork.getGateway())) { - target.addLink(new RESTLink(ParentLinkName.NETWORK_GATEWAY, config.getEditLink().getHref())); - break; - } - } - - return update(true); - } - - // TODO: Get current gateway network - - public void setGatewayNetwork(final Network<?> network) { - context.getApi().getCloudApi().setGatewayNetwork(target, network.unwrap()); - refresh(); // First refresh the target and its links - } - - /** - * Checks if the virtual machine is persistent. - * <p> - * Persistent virtual machines have the system disc in an external volume. - * This way, when the virtual machine is undeployed, the contents of the - * system disk remain in the storage device and the user can deploy the - * virtual machine again without losing the data in the system disk. - * - * @return Boolean indicating if the virtual machine is persistent. - */ - public boolean isPersistent() { - return getTemplate().unwrap().searchLink("volume") != null; - } - - public boolean hasDvd() { - return target.getDvd() != null; - } - - public void attachDvd() { - DvdManagementDto dvd = new DvdManagementDto(); - RESTLink link = new RESTLink("image", ""); - dvd.addLink(link); - target.setDvd(dvd); - } - - public void detachDvd() { - target.setDvd(null); - } - - // Builder - - public static Builder builder(final ApiContext<AbiquoApi> context, final VirtualAppliance virtualAppliance, - final VirtualMachineTemplate template) { - return new Builder(context, virtualAppliance, template); - } - - public static class Builder { - private final ApiContext<AbiquoApi> context; - - private VirtualAppliance virtualAppliance; - - private final VirtualMachineTemplate template; - - private String nameLabel; - - private String internalName; - - private String description; - - private Integer ram; - - private Integer cpu; - - private Integer vncPort; - - private String vncAddress; - - private Integer idState; - - private Integer idType; - - private String password; - - private String keymap; - - private String uuid; - - private boolean dvd; - - public Builder(final ApiContext<AbiquoApi> context, final VirtualAppliance virtualAppliance, - final VirtualMachineTemplate template) { - super(); - checkNotNull(virtualAppliance, ValidationErrors.NULL_RESOURCE + VirtualAppliance.class); - this.virtualAppliance = virtualAppliance; - this.template = template; - this.context = context; - } - - public Builder nameLabel(final String nameLabel) { - this.nameLabel = checkNotNull(nameLabel, "nameLabel must not be null"); - return this; - } - - public Builder description(final String description) { - this.description = description; - return this; - } - - public Builder ram(final int ram) { - this.ram = ram; - return this; - } - - public Builder cpu(final int cpu) { - this.cpu = cpu; - return this; - } - - public Builder password(final String password) { - this.password = password; - return this; - } - - public Builder keymap(final String keymap) { - this.keymap = keymap; - return this; - } - - public Builder dvd(final boolean dvd) { - this.dvd = dvd; - return this; - } - - // This methods are used only to build a builder from an existing - // VirtualMachine but should - // never be used by the user. This fields are set automatically by Abiquo - - private Builder vncPort(final int vdrpPort) { - this.vncPort = vdrpPort; - return this; - } - - private Builder vncAddress(final String vdrpIP) { - this.vncAddress = vdrpIP; - return this; - } - - private Builder idState(final int idState) { - this.idState = idState; - return this; - } - - private Builder idType(final int idType) { - this.idType = idType; - return this; - } - - private Builder internalName(final String internalName) { - this.internalName = internalName; - return this; - } - - public Builder virtualAppliance(final VirtualAppliance virtualAppliance) { - checkNotNull(virtualAppliance, ValidationErrors.NULL_RESOURCE + VirtualAppliance.class); - this.virtualAppliance = virtualAppliance; - return this; - } - - public VirtualMachine build() { - VirtualMachineWithNodeExtendedDto dto = new VirtualMachineWithNodeExtendedDto(); - dto.setNodeName(checkNotNull(nameLabel, ValidationErrors.MISSING_REQUIRED_FIELD + "nameLabel")); - dto.setDescription(description); - dto.setHdInBytes(template.getHdRequired()); - dto.setVdrpIP(vncAddress); - - if (cpu != null) { - dto.setCpu(cpu); - } - - if (ram != null) { - dto.setRam(ram); - } - - if (vncPort != null) { - dto.setVdrpPort(vncPort); - } - - if (idState != null) { - dto.setIdState(idState); - } - - if (idType != null) { - dto.setIdType(idType); - } - - if (internalName != null) { - dto.setName(internalName); - } - - dto.setPassword(password); - dto.setKeymap(keymap); - dto.setUuid(uuid); - - // DVD - if (dvd) { - DvdManagementDto dvd = new DvdManagementDto(); - RESTLink link = new RESTLink("image", ""); - dvd.addLink(link); - dto.setDvd(dvd); - } - - VirtualMachine virtualMachine = new VirtualMachine(context, dto); - virtualMachine.virtualAppliance = virtualAppliance; - virtualMachine.template = template; - - return virtualMachine; - } - - public static Builder fromVirtualMachine(final VirtualMachine in) { - return VirtualMachine.builder(in.context, in.virtualAppliance, in.template).internalName(in.getInternalName()) - .nameLabel(in.getNameLabel()).description(in.getDescription()).ram(in.getRam()).cpu(in.getCpu()) - .vncAddress(in.getVncAddress()).vncPort(in.getVncPort()).idState(in.getIdState()).idType(in.getIdType()) - .password(in.getPassword()).keymap(in.getKeymap()).dvd(in.hasDvd()); - } - } - - // Delegate methods - - public Integer getCpu() { - return target.getCpu(); - } - - public String getDescription() { - return target.getDescription(); - } - - // Read-only field. This value is computed from the size of the Template - public Long getHdInBytes() { - return target.getHdInBytes(); - } - - public Integer getId() { - return target.getId(); - } - - public int getIdState() { - return target.getIdState(); - } - - public int getIdType() { - return target.getIdType(); - } - - public String getNameLabel() { - return target.getNodeName(); - } - - public String getOwnerName() { - return target.getUserName() + " " + target.getUserSurname(); - } - - public String getInternalName() { - return target.getName(); - } - - public String getPassword() { - return target.getPassword(); - } - - public Integer getRam() { - return target.getRam(); - } - - public String getUuid() { - return target.getUuid(); - } - - public String getVncAddress() { - return target.getVdrpIP(); - } - - public int getVncPort() { - return target.getVdrpPort(); - } - - public String getKeymap() { - return target.getKeymap(); - } - - public void setCpu(final int cpu) { - target.setCpu(cpu); - } - - public void setDescription(final String description) { - target.setDescription(description); - } - - public void setNameLabel(final String nameLabel) { - target.setNodeName(nameLabel); - } - - public void setPassword(final String password) { - target.setPassword(password); - } - - public void setRam(final int ram) { - target.setRam(ram); - } - - public void setKeymap(final String keymap) { - target.setKeymap(keymap); - } - - private static VolumeManagementDto[] toVolumeDto(final Volume... volumes) { - checkNotNull(volumes, "must provide at least one volume"); - - VolumeManagementDto[] dtos = new VolumeManagementDto[volumes.length]; - for (int i = 0; i < volumes.length; i++) { - dtos[i] = volumes[i].unwrap(); - } - - return dtos; - } - - private static DiskManagementDto[] toHardDiskDto(final HardDisk... hardDisks) { - checkNotNull(hardDisks, "must provide at least one hard disk"); - - DiskManagementDto[] dtos = new DiskManagementDto[hardDisks.length]; - for (int i = 0; i < hardDisks.length; i++) { - dtos[i] = hardDisks[i].unwrap(); - } - - return dtos; - } - - private static Predicate<Volume> volumeIdIn(final Volume... volumes) { - return new Predicate<Volume>() { - List<Integer> ids = volumeIds(Arrays.asList(volumes)); - - @Override - public boolean apply(final Volume input) { - return ids.contains(input.getId()); - } - }; - } - - private static Predicate<HardDisk> hardDiskIdIn(final HardDisk... hardDisks) { - return new Predicate<HardDisk>() { - List<Integer> ids = hardDisksIds(Arrays.asList(hardDisks)); - - @Override - public boolean apply(final HardDisk input) { - return ids.contains(input.getId()); - } - }; - } - - private static List<Integer> volumeIds(final List<Volume> volumes) { - return Lists.transform(volumes, new Function<Volume, Integer>() { - @Override - public Integer apply(final Volume input) { - return input.getId(); - } - }); - } - - private static List<Integer> hardDisksIds(final List<HardDisk> HardDisk) { - return Lists.transform(HardDisk, new Function<HardDisk, Integer>() { - @Override - public Integer apply(final HardDisk input) { - return input.getId(); - } - }); - } - - @Override - public String toString() { - return "VirtualMachine [id=" + getId() + ", state=" + target.getState().name() + ", cpu=" + getCpu() - + ", description=" + getDescription() + ", hdInBytes=" + getHdInBytes() + ", idType=" + getIdType() - + ", nameLabel=" + getNameLabel() + ", internalName=" + getInternalName() + ", password=" + getPassword() - + ", ram=" + getRam() + ", uuid=" + getUuid() + ", vncAddress=" + getVncAddress() + ", vncPort=" - + getVncPort() + ", keymap=" + getKeymap() + ", dvd=" + hasDvd() + "]"; - } -}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java deleted file mode 100644 index 30cb26b..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplate.java +++ /dev/null @@ -1,325 +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.cloud; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Date; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWrapper; -import org.jclouds.abiquo.domain.cloud.options.ConversionOptions; -import org.jclouds.abiquo.domain.config.Category; -import org.jclouds.abiquo.domain.enterprise.Enterprise; -import org.jclouds.abiquo.domain.infrastructure.Datacenter; -import org.jclouds.abiquo.domain.infrastructure.Tier; -import org.jclouds.abiquo.domain.task.ConversionTask; -import org.jclouds.abiquo.domain.task.VirtualMachineTemplateTask; -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.ConversionState; -import com.abiquo.model.enumerator.DiskFormatType; -import com.abiquo.model.enumerator.HypervisorType; -import com.abiquo.model.rest.RESTLink; -import com.abiquo.model.transport.AcceptedRequestDto; -import com.abiquo.server.core.appslibrary.CategoryDto; -import com.abiquo.server.core.appslibrary.ConversionDto; -import com.abiquo.server.core.appslibrary.ConversionsDto; -import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto; -import com.abiquo.server.core.appslibrary.VirtualMachineTemplatePersistentDto; -import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto; -import com.google.inject.TypeLiteral; - -/** - * Adds high level functionality to {@link VirtualMachineTemplateDto}. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Virtual+Machine+Template+Resource" - * > - * http://community.abiquo.com/display/ABI20/Virtual+Machine+Template+Resource - * </a> - */ -public class VirtualMachineTemplate extends DomainWrapper<VirtualMachineTemplateDto> { - /** - * Constructor to be used only by the builder. - */ - protected VirtualMachineTemplate(final ApiContext<AbiquoApi> context, final VirtualMachineTemplateDto target) { - super(context, target); - } - - // Domain operations - - public void delete() { - context.getApi().getVirtualMachineTemplateApi().deleteVirtualMachineTemplate(target); - target = null; - } - - public void update() { - target = context.getApi().getVirtualMachineTemplateApi().updateVirtualMachineTemplate(target); - } - - public VirtualMachineTemplateTask makePersistent(final VirtualDatacenter vdc, final Volume volume, - final String persistentTemplateName) { - RESTLink storageLink = volume.unwrap().getEditLink(); - storageLink.setRel("volume"); - return makePersistent(vdc, storageLink, persistentTemplateName, null); - } - - public VirtualMachineTemplateTask makePersistent(final VirtualDatacenter vdc, final Tier tier, - final String persistentTemplateName, final String persistentVolumeName) { - // infrastructure - RESTLink storageLink = tier.unwrap().getEditLink(); - if (storageLink == null) { - // cloud - storageLink = tier.unwrap().searchLink("self"); - } - storageLink.setRel(ParentLinkName.TIER); - return makePersistent(vdc, storageLink, persistentTemplateName, persistentVolumeName); - } - - private VirtualMachineTemplateTask makePersistent(final VirtualDatacenter vdc, final RESTLink storageLink, - final String persistentTemplateName, final String persistentVolumeName) { - VirtualMachineTemplatePersistentDto persistentData = new VirtualMachineTemplatePersistentDto(); - persistentData.setPersistentTemplateName(persistentTemplateName); - persistentData.setPersistentVolumeName(persistentVolumeName); - RESTLink vdcLink = new RESTLink(ParentLinkName.VIRTUAL_DATACENTER, vdc.unwrap().getEditLink().getHref()); - RESTLink templateLink = new RESTLink(ParentLinkName.VIRTUAL_MACHINE_TEMPLATE, target.getEditLink().getHref()); - - persistentData.addLink(vdcLink); - persistentData.addLink(storageLink); - persistentData.addLink(templateLink); - - // SCG: - // A simple user should not have permissions to obtain a datacenter - // repository, but at this - // point we have the datacenter repository and enterprise ids in the own - // target uri. So we - // can obtain the path where do the POST - // Assumption that to create a new object a user needs to get the parent - // object cannot be - // applied in this case - String editUri = getURI().getPath(); - Pattern p = Pattern.compile("\\d+"); - Matcher m = p.matcher(editUri); - m.find(); - Integer idEnt = Integer.valueOf(m.group()); - m.find(); - Integer idDcRepo = Integer.valueOf(m.group()); - - AcceptedRequestDto<String> response = context.getApi().getVirtualMachineTemplateApi() - .createPersistentVirtualMachineTemplate(idEnt, idDcRepo, persistentData); - - return getTask(response).asVirtualMachineTemplateTask(); - } - - // Children access - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Category+Resource#CategoryResource-Retrieveacategory" - * > http://community.abiquo.com/display/ABI20/Category+Resource# - * CategoryResource- Retrieveacategory</a> - */ - public Category getCategory() { - Integer categoryId = target.getIdFromLink(ParentLinkName.CATEGORY); - CategoryDto category = context.getApi().getConfigApi().getCategory(categoryId); - return wrap(context, Category.class, category); - } - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/Abiquo/Volume+Resource#VolumeResource-Retrieveavolume" - * > http://community.abiquo.com/display/Abiquo/Volume+Resource# - * VolumeResource- Retrieveavolume</a> - */ - public Volume getVolume() { - if (this.isPersistent()) { - HttpResponse rp = checkNotNull(context.getApi().get(target.searchLink("volume")), "volume"); - - ParseXMLWithJAXB<VolumeManagementDto> parser = new ParseXMLWithJAXB<VolumeManagementDto>( - context.utils().xml(), TypeLiteral.get(VolumeManagementDto.class)); - - VolumeManagementDto dto = parser.apply(rp); - return new Volume(context, dto); - } - return null; - } - - public boolean isPersistent() { - return target.searchLink("volume") != null; - } - - // Parent access - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Enterprise+Resource#EnterpriseResource-RetrieveanEnterprise" - * > http://community.abiquo.com/display/ABI20/Enterprise+Resource# - * EnterpriseResource- RetrieveanEnterprise</a> - */ - public Enterprise getEnterprise() { - Integer enterpriseId = target.getIdFromLink(ParentLinkName.ENTERPRISE); - return wrap(context, Enterprise.class, context.getApi().getEnterpriseApi().getEnterprise(enterpriseId)); - } - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Datacenter+Resource#DatacenterResource-RetrieveaDatacenter" - * > http://community.abiquo.com/display/ABI20/Datacenter+Resource# - * DatacenterResource- RetrieveaDatacenter</a> - */ - public Datacenter getDatacenter() { - Integer repositoryId = target.getIdFromLink(ParentLinkName.DATACENTER_REPOSITORY); - return wrap(context, Datacenter.class, context.getApi().getInfrastructureApi().getDatacenter(repositoryId)); - } - - /** - * List all the conversions for the virtual machine template. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Conversion+Resource#ConversionResource-ListConversions" - * > http://community.abiquo.com/display/ABI20/Conversion+Resource# - * ConversionResource- ListConversions</a> - * @return all the conversions of the virtual machine template - */ - public Iterable<Conversion> listConversions() { - ConversionsDto convs = context.getApi().getVirtualMachineTemplateApi().listConversions(target); - return wrap(context, Conversion.class, convs.getCollection()); - } - - /** - * List conversions for a virtual machine template. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Conversion+Resource#ConversionResource-ListConversions" - * > http://community.abiquo.com/display/ABI20/Conversion+Resource# - * ConversionResource- ListConversions</a> - * @param hypervisor - * , Optionally filter conversions compatible with the provided - * hypervisor - * @param state - * , Optionally filter conversions with the desired state - * @return all the conversions of the virtual machine template applying the - * constrains - */ - public Iterable<Conversion> listConversions(final HypervisorType hypervisor, final ConversionState state) { - ConversionsDto convs = context - .getApi() - .getVirtualMachineTemplateApi() - .listConversions(target, - ConversionOptions.builder().hypervisorType(hypervisor).conversionState(state).build()); - return wrap(context, Conversion.class, convs.getCollection()); - } - - /** - * Starts a new conversion for a virtual machine template. - * - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Conversion+Resource#ConversionResource-RequestConversion" - * > http://community.abiquo.com/display/ABI20/Conversion+Resource# - * ConversionResource- RequestConversion</a> - * @param diskFormat - * , desired target format for the request template - * @return The task reference to track its progress - */ - public ConversionTask requestConversion(final DiskFormatType diskFormat) { - ConversionDto request = new ConversionDto(); - request.setTargetFormat(diskFormat); - - AcceptedRequestDto<String> taskRef = context.getApi().getVirtualMachineTemplateApi() - .requestConversion(target, diskFormat, request); - - return taskRef == null ? null : getTask(taskRef).asConversionTask(); - } - - // Delegate methods - - public Integer getCpuRequired() { - return target.getCpuRequired(); - } - - public Date getCreationDate() { - return target.getCreationDate(); - } - - public String getCreationUser() { - return target.getCreationUser(); - } - - public String getDescription() { - return target.getDescription(); - } - - public Long getDiskFileSize() { - return target.getDiskFileSize(); - } - - public DiskFormatType getDiskFormatType() { - return DiskFormatType.valueOf(target.getDiskFormatType()); - } - - public Long getHdRequired() { - return target.getHdRequired(); - } - - public String getName() { - return target.getName(); - } - - public String getPath() { - return target.getPath(); - } - - public Integer getRamRequired() { - return target.getRamRequired(); - } - - public boolean isChefEnabled() { - return target.isChefEnabled(); - } - - public void setChefEnabled(final boolean chefEnabled) { - target.setChefEnabled(chefEnabled); - } - - public void setName(final String name) { - target.setName(name); - } - - public Integer getId() { - return target.getId(); - } - - public String getIconUrl() { - return target.getIconUrl(); - } - - @Override - public String toString() { - return "VirtualMachineTemplate [id=" + getId() + ", cpuRequired=" + getCpuRequired() + ", creationDate=" - + getCreationDate() + ", creationUser=" + getCreationUser() + ", description=" + getDescription() - + ", diskFileSize=" + getDiskFileSize() + ", diskFormatType=" + getDiskFormatType() + ", hdRequired=" - + getHdRequired() + ", name=" + getName() + ", path=" + getPath() + ", ramRequired=" + getRamRequired() - + ", chefEnabled=" + isChefEnabled() + "]"; - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplateInVirtualDatacenter.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplateInVirtualDatacenter.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplateInVirtualDatacenter.java deleted file mode 100644 index 3540593..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/VirtualMachineTemplateInVirtualDatacenter.java +++ /dev/null @@ -1,44 +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.cloud; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Wrapper to hold the information of a virtual machine template scoped to a - * concrete hypervisor type. - */ -public class VirtualMachineTemplateInVirtualDatacenter { - private VirtualMachineTemplate template; - - private VirtualDatacenter zone; - - public VirtualMachineTemplateInVirtualDatacenter(final VirtualMachineTemplate template, final VirtualDatacenter zone) { - super(); - this.template = checkNotNull(template, "template"); - this.zone = checkNotNull(zone, "zone"); - } - - public VirtualMachineTemplate getTemplate() { - return template; - } - - public VirtualDatacenter getZone() { - return zone; - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/Volume.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/Volume.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/Volume.java deleted file mode 100644 index 9c33d1a..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/Volume.java +++ /dev/null @@ -1,238 +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.cloud; - -import static com.abiquo.model.enumerator.VolumeState.ATTACHED; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWrapper; -import org.jclouds.abiquo.domain.infrastructure.Tier; -import org.jclouds.abiquo.domain.task.VirtualMachineTask; -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.VolumeState; -import com.abiquo.model.rest.RESTLink; -import com.abiquo.model.transport.AcceptedRequestDto; -import com.abiquo.server.core.cloud.VirtualDatacenterDto; -import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto; -import com.abiquo.server.core.infrastructure.storage.TierDto; -import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto; -import com.google.inject.Key; -import com.google.inject.TypeLiteral; - -/** - * Adds high level functionality to {@link VolumeManagementDto}. - * - * @see API: <a - * href="http://community.abiquo.com/display/ABI20/Volume+Resource"> - * http://community.abiquo.com/display/ABI20/Volume+Resource</a> - */ -public class Volume extends DomainWrapper<VolumeManagementDto> { - /** The default state for volumes. */ - public static final VolumeState DEFAULT_STATE = VolumeState.DETACHED; - - /** The virtual datacenter where the volume belongs. */ - private VirtualDatacenter virtualDatacenter; - - /** The tier where the volume belongs. */ - private Tier tier; - - /** - * Constructor to be used only by the builder. - */ - protected Volume(final ApiContext<AbiquoApi> context, final VolumeManagementDto target) { - super(context, target); - } - - // Domain operations - - public void delete() { - context.getApi().getCloudApi().deleteVolume(target); - target = null; - } - - public void save() { - target = context.getApi().getCloudApi().createVolume(virtualDatacenter.unwrap(), target); - } - - public VirtualMachineTask update() { - AcceptedRequestDto<String> taskRef = context.getApi().getCloudApi().updateVolume(target); - return taskRef == null ? null : getTask(taskRef).asVirtualMachineTask(); - } - - // Parent access - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Virtual+Datacenter+Resource#VirtualDatacenterResource-RetrieveaVirtualDatacenter" - * > http://community.abiquo.com/display/ABI20/Virtual+Datacenter+ - * Resource# VirtualDatacenterResource-RetrieveaVirtualDatacenter</a> - */ - public VirtualDatacenter getVirtualDatacenter() { - Integer virtualDatacenterId = target.getIdFromLink(ParentLinkName.VIRTUAL_DATACENTER); - VirtualDatacenterDto dto = context.getApi().getCloudApi().getVirtualDatacenter(virtualDatacenterId); - virtualDatacenter = wrap(context, VirtualDatacenter.class, dto); - return virtualDatacenter; - } - - /** - * Retrieve the virtual machine this volume is attached to. - * - * @return The virtual machine this volume is attached to, or null if it is - * not attached. - */ - public VirtualMachine getVirtualMachine() { - checkState(ATTACHED == VolumeState.valueOf(target.getState()), "Volume is not attached to a VM"); - RESTLink vmLink = checkNotNull(target.searchLink(ParentLinkName.VIRTUAL_MACHINE), - ValidationErrors.MISSING_REQUIRED_LINK + " " + ParentLinkName.VIRTUAL_MACHINE); - vmLink.setType(VirtualMachineWithNodeExtendedDto.BASE_MEDIA_TYPE); - HttpResponse response = context.getApi().get(vmLink); - - ParseXMLWithJAXB<VirtualMachineWithNodeExtendedDto> parser = context.utils().injector() - .getInstance(Key.get(new TypeLiteral<ParseXMLWithJAXB<VirtualMachineWithNodeExtendedDto>>(){})); - return wrap(context, VirtualMachine.class, parser.apply(response)); - } - - public Tier getTier() { - Integer tierId = target.getIdFromLink(ParentLinkName.TIER); - TierDto dto = context.getApi().getCloudApi().getStorageTier(virtualDatacenter.unwrap(), tierId); - tier = wrap(context, Tier.class, dto); - return tier; - } - - // Actions - - /** - * Move the volume to the given virtual datacenter. - * - * @param newVirtualDatacenter - * The destination virtual datacenter. - */ - public void moveTo(final VirtualDatacenter newVirtualDatacenter) { - target = context.getApi().getCloudApi().moveVolume(unwrap(), newVirtualDatacenter.unwrap()); - } - - // Builder - - public static Builder builder(final ApiContext<AbiquoApi> context, final VirtualDatacenter virtualDatacenter, - final Tier tier) { - return new Builder(context, virtualDatacenter, tier); - } - - public static class Builder { - private ApiContext<AbiquoApi> context; - - private String name; - - private String description; - - private Long sizeInMb; - - private VirtualDatacenter virtualDatacenter; - - private Tier tier; - - public Builder(final ApiContext<AbiquoApi> context, final VirtualDatacenter virtualDatacenter, final Tier tier) { - super(); - checkNotNull(virtualDatacenter, ValidationErrors.NULL_RESOURCE + VirtualDatacenter.class); - checkNotNull(tier, ValidationErrors.NULL_RESOURCE + Tier.class); - this.context = context; - this.virtualDatacenter = virtualDatacenter; - this.tier = tier; - } - - public Builder name(final String name) { - this.name = name; - return this; - } - - public Builder description(final String description) { - this.description = description; - return this; - } - - public Builder sizeInMb(final long sizeInMb) { - this.sizeInMb = sizeInMb; - return this; - } - - public Volume build() { - VolumeManagementDto dto = new VolumeManagementDto(); - dto.setName(name); - dto.setDescription(description); - dto.setSizeInMB(sizeInMb); - dto.setState(DEFAULT_STATE.name()); - - RESTLink link = tier.unwrap().searchLink("self"); - checkNotNull(link, ValidationErrors.MISSING_REQUIRED_LINK); - dto.addLink(new RESTLink("tier", link.getHref())); - - Volume volume = new Volume(context, dto); - volume.virtualDatacenter = virtualDatacenter; - volume.tier = tier; - - return volume; - } - } - - // Delegate methods - - public Integer getId() { - return target.getId(); - } - - public String getState() { - return target.getState(); - } - - public String getName() { - return target.getName(); - } - - public void setName(final String name) { - target.setName(name); - } - - public long getSizeInMB() { - return target.getSizeInMB(); - } - - public void setSizeInMB(final long sizeInMB) { - target.setSizeInMB(sizeInMB); - } - - public String getDescription() { - return target.getDescription(); - } - - public void setDescription(final String description) { - target.setDescription(description); - } - - @Override - public String toString() { - return "Volume [id=" + getId() + ", state=" + getState() + ", name=" + getName() + ", sizeInMB=" + getSizeInMB() - + ", description=" + getDescription() + "]"; - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/ConversionOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/ConversionOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/ConversionOptions.java deleted file mode 100644 index 1652fef..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/ConversionOptions.java +++ /dev/null @@ -1,70 +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.cloud.options; - -import org.jclouds.http.options.BaseHttpRequestOptions; - -import com.abiquo.model.enumerator.ConversionState; -import com.abiquo.model.enumerator.HypervisorType; - -/** - * Available options to filter virtual machine template conversions - */ -public class ConversionOptions extends BaseHttpRequestOptions { - - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - ConversionOptions options = new ConversionOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder { - private HypervisorType hypervisorType; - - private ConversionState conversionState; - - /** Only conversions compatible with this hypervisor */ - public Builder hypervisorType(final HypervisorType hypervisorType) { - this.hypervisorType = hypervisorType; - return this; - } - - /** Only conversions with the provided state */ - public Builder conversionState(final ConversionState conversionState) { - this.conversionState = conversionState; - return this; - } - - public ConversionOptions build() { - ConversionOptions options = new ConversionOptions(); - - if (hypervisorType != null) { - options.queryParameters.put("hypervisor", hypervisorType.name()); - } - if (conversionState != null) { - options.queryParameters.put("state", conversionState.name()); - } - - return options; - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualApplianceOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualApplianceOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualApplianceOptions.java deleted file mode 100644 index 2cf0a82..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualApplianceOptions.java +++ /dev/null @@ -1,55 +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.cloud.options; - -import org.jclouds.http.options.BaseHttpRequestOptions; - -/** - * Available options to query virtual appliances. - */ -public class VirtualApplianceOptions extends BaseHttpRequestOptions { - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - VirtualApplianceOptions options = new VirtualApplianceOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder { - - private Boolean available; - - public Builder available(final boolean available) { - this.available = available; - return this; - } - - public VirtualApplianceOptions build() { - VirtualApplianceOptions options = new VirtualApplianceOptions(); - - if (available != null) { - options.queryParameters.put("available", String.valueOf(available)); - } - - return options; - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualDatacenterOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualDatacenterOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualDatacenterOptions.java deleted file mode 100644 index 8d960d4..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualDatacenterOptions.java +++ /dev/null @@ -1,70 +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.cloud.options; - -import org.jclouds.http.options.BaseHttpRequestOptions; - -/** - * Available options to query virtual datacenters. - */ -public class VirtualDatacenterOptions extends BaseHttpRequestOptions { - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - VirtualDatacenterOptions options = new VirtualDatacenterOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder { - private Integer datacenterId; - - private Integer enterpriseId; - - /** - * Set the optional datacenter. - */ - public Builder datacenterId(final int datacenterId) { - this.datacenterId = datacenterId; - return this; - } - - /** - * Set the optional enterprise. - */ - public Builder enterpriseId(final int enterpriseId) { - this.enterpriseId = enterpriseId; - return this; - } - - public VirtualDatacenterOptions build() { - VirtualDatacenterOptions options = new VirtualDatacenterOptions(); - - if (datacenterId != null) { - options.queryParameters.put("datacenter", datacenterId.toString()); - } - - if (enterpriseId != null) { - options.queryParameters.put("enterprise", enterpriseId.toString()); - } - return options; - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java deleted file mode 100644 index 5e1d4b6..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineOptions.java +++ /dev/null @@ -1,55 +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.cloud.options; - -import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; -import org.jclouds.http.options.BaseHttpRequestOptions; - -/** - * Available options to query virtual machine. - */ -public class VirtualMachineOptions extends BaseHttpRequestOptions { - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - VirtualMachineOptions options = new VirtualMachineOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder extends BaseFilterOptionsBuilder<Builder> { - private Boolean force; - - public Builder force(final Boolean force) { - this.force = force; - return this; - } - - public VirtualMachineOptions build() { - VirtualMachineOptions options = new VirtualMachineOptions(); - - if (force != null) { - options.queryParameters.put("force", String.valueOf(force)); - } - - return addFilterOptions(options); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java deleted file mode 100644 index 6743e2c..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VirtualMachineTemplateOptions.java +++ /dev/null @@ -1,101 +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.cloud.options; - -import org.jclouds.abiquo.domain.config.Category; -import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; -import org.jclouds.http.options.BaseHttpRequestOptions; - -import com.abiquo.model.enumerator.HypervisorType; -import com.abiquo.model.enumerator.StatefulInclusion; - -/** - * Available options to query virtual machine templates. - */ -public class VirtualMachineTemplateOptions extends BaseHttpRequestOptions { - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - VirtualMachineTemplateOptions options = new VirtualMachineTemplateOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder extends BaseFilterOptionsBuilder<Builder> { - private StatefulInclusion persistent; - - private HypervisorType hypervisorType; - - private Category category; - - private String categoryName; - - private Integer idTemplate; - - public Builder persistent(final StatefulInclusion persistent) { - this.persistent = persistent; - return this; - } - - public Builder hypervisorType(final HypervisorType hypervisorType) { - this.hypervisorType = hypervisorType; - return this; - } - - public Builder category(final Category category) { - this.category = category; - return this; - } - - public Builder categoryName(final String categoryName) { - this.categoryName = categoryName; - return this; - } - - public Builder idTemplate(final Integer idTemplate) { - this.idTemplate = idTemplate; - return this; - } - - public VirtualMachineTemplateOptions build() { - VirtualMachineTemplateOptions options = new VirtualMachineTemplateOptions(); - - if (persistent != null) { - options.queryParameters.put("stateful", persistent.name()); - } - if (hypervisorType != null) { - options.queryParameters.put("hypervisorTypeName", hypervisorType.name()); - } - if (category != null) { - options.queryParameters.put("categoryName", category.getName()); - } - - if (category == null && categoryName != null) { - options.queryParameters.put("categoryName", categoryName); - } - - if (idTemplate != null) { - options.queryParameters.put("idTemplate", String.valueOf(idTemplate)); - } - - return addFilterOptions(options); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java deleted file mode 100644 index 9740969..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/cloud/options/VolumeOptions.java +++ /dev/null @@ -1,55 +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.cloud.options; - -import org.jclouds.abiquo.domain.options.FilterOptions.BaseFilterOptionsBuilder; -import org.jclouds.http.options.BaseHttpRequestOptions; - -/** - * Available options to query volumes. - */ -public class VolumeOptions extends BaseHttpRequestOptions { - public static Builder builder() { - return new Builder(); - } - - @Override - protected Object clone() throws CloneNotSupportedException { - VolumeOptions options = new VolumeOptions(); - options.queryParameters.putAll(queryParameters); - return options; - } - - public static class Builder extends BaseFilterOptionsBuilder<Builder> { - private Boolean onlyAvailable; - - public Builder onlyAvailable(final boolean onlyAvailable) { - this.onlyAvailable = onlyAvailable; - return this; - } - - public VolumeOptions build() { - VolumeOptions options = new VolumeOptions(); - - if (onlyAvailable != null) { - options.queryParameters.put("available", String.valueOf(onlyAvailable)); - } - - return addFilterOptions(options); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Category.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Category.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Category.java deleted file mode 100644 index 2fbf7e3..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Category.java +++ /dev/null @@ -1,163 +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.config; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWrapper; -import org.jclouds.rest.ApiContext; - -import com.abiquo.server.core.appslibrary.CategoryDto; - -/** - * Adds high level functionality to {@link CategoryDto}. - * - * @see API: <a - * href="http://community.abiquo.com/display/ABI20/Category+Resource"> - * http://community.abiquo.com/display/ABI20/Category+Resource</a> - */ - -public class Category extends DomainWrapper<CategoryDto> { - /** The default value for the default category flag. */ - private static final boolean DEFAULT_DEFAULT_CATEGORY = false; - - /** The default value for the erasable flag. */ - private static final boolean DEFAULT_ERASABLE = true; - - /** - * Constructor to be used only by the builder. This resource cannot be - * created. - */ - private Category(final ApiContext<AbiquoApi> context, final CategoryDto target) { - super(context, target); - } - - // Domain operations - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Category+Resource#CategoryResource-Deleteacategory" - * > http://community.abiquo.com/display/ABI20/Category+Resource# - * CategoryResource-Deleteacategory</a> - */ - public void delete() { - context.getApi().getConfigApi().deleteCategory(target); - target = null; - } - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Category+Resource#CategoryResource-Createacategory" - * > http://community.abiquo.com/display/ABI20/Category+Resource# - * CategoryResource-Createacategory</a> - */ - public void save() { - target = context.getApi().getConfigApi().createCategory(target); - } - - /** - * @see API: <a href= - * "http://community.abiquo.com/display/ABI20/Category+Resource#CategoryResource-Updateanexistingcategory" - * > http://community.abiquo.com/display/ABI20/Category+Resource# - * CategoryResource-Updateanexistingcategory</a> - */ - public void update() { - target = context.getApi().getConfigApi().updateCategory(target); - } - - // 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 Boolean erasable = DEFAULT_ERASABLE; - - private Boolean defaultCategory = DEFAULT_DEFAULT_CATEGORY; - - public Builder(final ApiContext<AbiquoApi> context) { - super(); - this.context = context; - } - - public Builder name(final String name) { - this.name = name; - return this; - } - - public Builder defaultCategory(final boolean defaultCategory) { - this.defaultCategory = defaultCategory; - return this; - } - - public Builder erasable(final boolean erasable) { - this.erasable = erasable; - return this; - } - - public Category build() { - CategoryDto dto = new CategoryDto(); - dto.setErasable(erasable); - dto.setDefaultCategory(defaultCategory); - dto.setName(name); - Category category = new Category(context, dto); - - return category; - } - - public static Builder fromCategory(final Category in) { - Builder builder = Category.builder(in.context).name(in.getName()).erasable(in.isErasable()) - .defaultCategory(in.isDefaultCategory()); - - return builder; - } - } - - // Delegate methods - - public Integer getId() { - return target.getId(); - } - - public String getName() { - return target.getName(); - } - - public boolean isDefaultCategory() { - return target.isDefaultCategory(); - } - - public boolean isErasable() { - return target.isErasable(); - } - - public void setDefaultCategory(final boolean defaultCategory) { - target.setDefaultCategory(defaultCategory); - } - - public void setErasable(final boolean erasable) { - target.setErasable(erasable); - } - - public void setName(final String name) { - target.setName(name); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/config/License.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/License.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/config/License.java deleted file mode 100644 index e926a78..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/License.java +++ /dev/null @@ -1,107 +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.config; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWrapper; - -import org.jclouds.rest.ApiContext; - -import com.abiquo.server.core.config.LicenseDto; - -/** - * Adds high level functionality to {@link LicenseDto}. - */ -public class License extends DomainWrapper<LicenseDto> { - /** - * Constructor to be used only by the builder. - */ - protected License(final ApiContext<AbiquoApi> context, final LicenseDto target) { - super(context, target); - } - - // Domain operations - - public void remove() { - context.getApi().getConfigApi().removeLicense(target); - target = null; - } - - public void add() { - target = context.getApi().getConfigApi().addLicense(target); - } - - // Builder - - public static Builder builder(final ApiContext<AbiquoApi> context, final String code) { - return new Builder(context, code); - } - - public static class Builder { - private ApiContext<AbiquoApi> context; - - private String code; - - public Builder(final ApiContext<AbiquoApi> context, final String code) { - super(); - this.context = context; - this.code = code; - } - - public Builder code(final String code) { - this.code = code; - return this; - } - - public License build() { - LicenseDto dto = new LicenseDto(); - dto.setCode(code); - - License license = new License(context, dto); - return license; - } - - public static Builder fromLicense(final License in) { - return License.builder(in.context, in.getCode()); - } - } - - // Delegate methods - - public String getCode() { - return target.getCode(); - } - - public String getExpiration() { - return target.getExpiration(); - } - - public Integer getId() { - return target.getId(); - } - - public Integer getNumCores() { - return target.getNumcores(); - } - - @Override - public String toString() { - return "License [id=" + getId() + ", code=" + getCode() + ", expiration=" + getExpiration() - + ", numCores=" + getNumCores() + "]"; - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Privilege.java ---------------------------------------------------------------------- diff --git a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Privilege.java b/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Privilege.java deleted file mode 100644 index 852dbe3..0000000 --- a/abiquo/src/main/java/org/jclouds/abiquo/domain/config/Privilege.java +++ /dev/null @@ -1,52 +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.config; - -import org.jclouds.abiquo.AbiquoApi; -import org.jclouds.abiquo.domain.DomainWrapper; -import org.jclouds.rest.ApiContext; - -import com.abiquo.server.core.enterprise.PrivilegeDto; - -/** - * Adds high level functionality to {@link PrivilegeDto}. - */ -public class Privilege extends DomainWrapper<PrivilegeDto> { - /** - * Constructor to be used only by the builder. This resource cannot be - * created. - */ - private Privilege(final ApiContext<AbiquoApi> context, final PrivilegeDto target) { - super(context, target); - } - - // Delegate methods - - public Integer getId() { - return target.getId(); - } - - public String getName() { - return target.getName(); - } - - @Override - public String toString() { - return "Privilege [id=" + getId() + ", name=" + getName() + "]"; - } - -}
