All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jclouds.savvis.vpdc.domain.VM Maven / Gradle / Ivy

The newest version!
/**
 * 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.savvis.vpdc.domain;

import static com.google.common.base.Preconditions.checkNotNull;

import java.net.URI;
import java.util.Set;

import org.jclouds.ovf.NetworkSection;
import org.jclouds.ovf.OperatingSystemSection;
import org.jclouds.ovf.ProductSection;
import org.jclouds.ovf.Section;
import org.jclouds.ovf.VirtualHardwareSection;
import org.jclouds.ovf.internal.BaseVirtualSystem;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;

/**
 * A virtual application (vApp) is a software solution, packaged in OVF containing one or more
 * virtual machines. A vApp can be authored by Developers at ISVs and VARs or by IT Administrators
 * in Enterprises and Service Providers.
 * 
 * @author Adrian Cole
 */
public class VM extends BaseVirtualSystem implements Resource {
   /**
    * Objects such as vAppTemplate, vApp, and Vm have a status attribute whose value indicates the
    * state of the object. Status for an object, such as a vAppTemplate or vApp, whose Children (Vm
    * objects) each have a status of their own, is computed from the status of the Children.
    * 
    * 

NOTE

*

* The deployment status of an object is indicated by the value of its deployed attribute. * * @since vcloud api 0.8 * * @author Adrian Cole */ public enum Status { /** * When the VM is in Designing,Saved,Inqueue, has issue in pre provisioning or any exception * cases. VM is not in Savvis VPDC (may the VM has been removed) or cannot get VM state due to * unknown exception */ UNRESOLVED, /** * When the Savvis VPDC is in Provisioning, PartiallyDeployed, Failed and the VM failed in * provisioning or pending infrastructure notification */ RESOLVED, /** * When the VM is deployed in vmware and powered off. */ OFF, /** * We do not support suspended state. */ SUSPENDED, /** * When the VM is deployed in vmware and powered on. */ ON, /** * The VM is deployed in vmware but the state of VM may be Uninitialized, Start, Stop, Resume, * Reset, RebootGuest, Error, Failed, Unknown, PoweringOn, PoweringOff, Suspending, Stopping, * Starting, Resetting, RebootingGuest. Please call back the Get VApp Power State API after * few minute. */ UNKNOWN, UNRECOGNIZED; public String value() { switch (this) { case UNRESOLVED: return "0"; case RESOLVED: return "1"; case OFF: return "2"; case SUSPENDED: return "3"; case ON: return "4"; case UNKNOWN: return "5"; default: return "UNRECOGNIZED"; } } public static Status fromValue(String status) { try { return fromValue(Integer.parseInt(checkNotNull(status, "status"))); } catch (IllegalArgumentException e) { return UNRECOGNIZED; } } public static Status fromValue(int v) { switch (v) { case 0: return UNRESOLVED; case 1: return RESOLVED; case 2: return OFF; case 3: return SUSPENDED; case 4: return ON; case 5: return UNKNOWN; default: return UNRECOGNIZED; } } } public static Builder builder() { return new Builder(); } public static class Builder extends BaseVirtualSystem.Builder { protected String type; protected URI href; protected Status status; protected NetworkSection networkSection; protected Set networkConfigSections = Sets.newLinkedHashSet(); protected Set networkConnectionSections = Sets.newLinkedHashSet(); public Builder id(String id) { this.id = id; return this; } public Builder name(String name) { this.name = name; return this; } public Builder type(String type) { this.type = type; return this; } public Builder href(URI href) { this.href = href; return this; } public Builder status(Status status) { this.status = status; return this; } public Builder networkSection(NetworkSection networkSection) { this.networkSection = networkSection; return this; } /** * @see VM#getNetworkConfigSections */ public Builder networkConfigSection(NetworkConfigSection networkConfigSection) { this.networkConfigSections.add(checkNotNull(networkConfigSection, "networkConfigSection")); return this; } /** * @see VM#getNetworkConfigSections */ public Builder networkConfigSections(Iterable networkConfigSections) { this.networkConfigSections = ImmutableSet. copyOf(checkNotNull(networkConfigSections, "networkConfigSections")); return this; } /** * @see VM#getNetworkConnectionSections */ public Builder networkConnectionSection(NetworkConnectionSection networkConnectionSection) { this.networkConnectionSections.add(checkNotNull(networkConnectionSection, "networkConnectionSection")); return this; } /** * @see VM#getNetworkConnectionSections */ public Builder networkConnectionSections(Iterable networkConnectionSections) { this.networkConnectionSections = ImmutableSet. copyOf(checkNotNull( networkConnectionSections, "networkConnectionSections")); return this; } @Override public VM build() { return new VM(id, info, name, operatingSystem, virtualHardwareSections, productSections, additionalSections, type, href, status, networkSection, networkConfigSections, networkConnectionSections); } public Builder fromVM(VM in) { return fromVirtualSystem(in).type(in.getType()).href(in.getHref()).status(in.getStatus()).networkSection( in.getNetworkSection()).networkConfigSections(in.getNetworkConfigSections()) .networkConnectionSections(in.getNetworkConnectionSections()); } /** * {@inheritDoc} */ @Override public Builder additionalSection(String name, Section additionalSection) { return Builder.class.cast(super.additionalSection(name, additionalSection)); } /** * {@inheritDoc} */ @Override public Builder additionalSections(Multimap additionalSections) { return Builder.class.cast(super.additionalSections(additionalSections)); } /** * {@inheritDoc} */ @Override public Builder fromSection(Section in) { return Builder.class.cast(super.fromSection(in)); } /** * {@inheritDoc} */ @Override public Builder fromVirtualSystem(BaseVirtualSystem in) { return Builder.class.cast(super.fromVirtualSystem(in)); } /** * {@inheritDoc} */ @Override public Builder virtualHardwareSection(VirtualHardwareSection virtualHardwareSection) { return Builder.class.cast(super.virtualHardwareSection(virtualHardwareSection)); } /** * {@inheritDoc} */ @Override public Builder virtualHardwareSections(Iterable virtualHardwareSections) { return Builder.class.cast(super.virtualHardwareSections(virtualHardwareSections)); } /** * {@inheritDoc} */ @Override public Builder info(String info) { return Builder.class.cast(super.info(info)); } /** * {@inheritDoc} */ @Override public Builder operatingSystemSection(OperatingSystemSection operatingSystem) { return Builder.class.cast(super.operatingSystemSection(operatingSystem)); } /** * {@inheritDoc} */ @Override public Builder productSection(ProductSection productSection) { return Builder.class.cast(super.productSection(productSection)); } /** * {@inheritDoc} */ @Override public Builder productSections(Iterable productSections) { return Builder.class.cast(super.productSections(productSections)); } } protected final String type; protected final URI href; protected final Status status; protected final NetworkSection networkSection; protected final Set networkConfigSections; protected final Set networkConnectionSections; public VM(String id, String info, String name, OperatingSystemSection operatingSystem, Iterable virtualHardwareSections, Iterable productSections, Multimap additionalSections, String type, URI href, Status status, NetworkSection networkSection, Iterable networkConfigSections, Iterable networkConnectionSections) { super(id, info, name, operatingSystem, virtualHardwareSections, productSections, additionalSections); this.type = type; this.href = href; this.status = status; this.networkSection = networkSection; this.networkConfigSections = ImmutableSet.copyOf(checkNotNull(networkConfigSections, "networkConfigSections")); this.networkConnectionSections = ImmutableSet.copyOf(checkNotNull(networkConnectionSections, "networkConnectionSections")); } public Status getStatus() { return status; } public NetworkSection getNetworkSection() { return networkSection; } public Set getNetworkConfigSections() { return networkConfigSections; } public Set getNetworkConnectionSections() { return networkConnectionSections; } public String getType() { return type; } public URI getHref() { return href; } @Override public String toString() { return String .format( "[id=%s, name=%s, info=%s, href=%s,status=%s, type=%s, virtualHardwareSections=%s, operatingSystem=%s, productSections=%s, networkSection=%s, networkConfigSections=%s, networkConnectionSections=%s, additionalSections=%s]", id, name, info, href, status, type, virtualHardwareSections, operatingSystem, productSections, networkSection, networkConfigSections, networkConnectionSections, additionalSections); } @Override public int compareTo(Resource that) { return (this == that) ? 0 : getHref().compareTo(that.getHref()); } public Builder toBuilder() { return builder().fromVM(this); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy