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

com.github.narcissujsk.openstackjsk.model.compute.Server Maven / Gradle / Ivy

The newest version!
package com.github.narcissujsk.openstackjsk.model.compute;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.github.narcissujsk.openstackjsk.model.ModelEntity;
import com.github.narcissujsk.openstackjsk.model.common.Link;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.github.narcissujsk.openstackjsk.model.compute.*;
import com.github.narcissujsk.openstackjsk.model.compute.Fault;
import com.github.narcissujsk.openstackjsk.model.compute.Flavor;
import com.github.narcissujsk.openstackjsk.model.compute.Image;

/**
 * A server is a virtual machine instance on a compute based system.  
 * 
 * @author Jeremy Unruh
 */
public interface Server extends ModelEntity {

	/**
	 * Servers contain a status attribute that can be used as an indication of the current server
	 * state. Servers with an ACTIVE status are available for use.
	 */
	public enum Status {
	    /** The server is active */
		ACTIVE, 
		/** The server has not finished the original build process */
		BUILD, 
		/** The server is currently being rebuilt */
		REBUILD, 
		/** The server is suspended, either by request or necessity. This status appears for only the following hypervisors: 
		 * XenServer/XCP, KVM, and ESXi. Administrative users may suspend an instance if it is infrequently used or to 
		 * perform system maintenance. When you suspend an instance, its VM state is stored on disk, all memory is written to disk, 
		 * and the virtual machine is stopped. Suspending an instance is similar to placing a device in hibernation; 
		 * memory and vCPUs become available to create other instances.
		 */
		SUSPENDED, 
		/** In a paused state, the state of the server is stored in RAM. A paused server continues to run in frozen state. */
		PAUSED, 
		/** Server is performing the differential copy of data that changed during its initial copy. Server is down for this stage. */
		RESIZE, 
		/** System is awaiting confirmation that the server is operational after a move or resize. */
		VERIFY_RESIZE, 
		/** The resize or migration of a server failed for some reason. The destination server is being cleaned up and 
		 *  the original source server is restarting. */
		REVERT_RESIZE, 
		/** The password is being reset on the server. */
		PASSWORD, 
		/** The server is in a soft reboot state. A reboot command was passed to the operating system. */
		REBOOT, 
		/**  The server is hard rebooting. This is equivalent to pulling the power plug on a physical server, 
		 *   plugging it back in, and rebooting it. 
		 */
		HARD_REBOOT, 
		/** The server is permanently deleted. */
		DELETED, 
		/** The state of the server is unknown. Contact your cloud provider. */
		UNKNOWN, 
		/** The server is in error. */
		ERROR, 
		/** The server is powered off and the disk image still persists. */
		STOPPED, 
		/** The virtual machine (VM) was powered down by the user, but not through the OpenStack Compute API. */
		SHUTOFF, 
		/** The server is currently being migrated */
		MIGRATING,
		/** The server is shelved*/
		SHELVED,
		/** The server is shelved_offloaded, server removed from the hypervisor to minimize resource usage. */
		SHELVED_OFFLOADED,
		/** The server is in rescue mode*/
		RESCUE,
		/** OpenStack4j could not find a Status mapping for the current reported Status.  File an issue indicating the missing state */
		UNRECOGNIZED;

		@JsonCreator
		public static Status forValue(String value) {
			if (value != null)
			{
				for (Status s : Status.values()) {
					if (s.name().equalsIgnoreCase(value))
						return s;
				}
			}
			return Status.UNRECOGNIZED;
		}
		
		@JsonValue
	    public String value() {
	        return name().toLowerCase();
	    }
	}
	
	enum DiskConfig {
		MANUAL, AUTO;
		
		@JsonCreator
		public static DiskConfig forValue(String value) {
			if (value != null && value.equalsIgnoreCase("auto"))
				return DiskConfig.AUTO;
			return DiskConfig.MANUAL;
		}
	}

	/**
	 * @return the identifier for the server
	 */
	String getId();

	/**
	 * @return the descriptive name for the server
	 */
	String getName();

	/**
	 * @return the addresses assigned to the server
	 */
	Addresses getAddresses();

	/**
	 * @return external reference links
	 */
	List getLinks();

	/**
	 * @return the image identifier
	 */
	String getImageId();
	
	/**
	 * @return the image used to boot the server with
	 */
	Image getImage();

	/**
	 * @return the flavor identifier
	 */
	String getFlavorId();
	
	/**
	 * @return the flavor to boot into
	 */
	Flavor getFlavor();

	/**
	 * @return the accessible IPV4 address (if applicable)
	 */
	String getAccessIPv4();

	/**
	 * @return the accessible IPV6 address (if applicable)
	 */
	String getAccessIPv6();

	/**
	 * @return the configDrive
	 */
	String getConfigDrive();

	/**
	 * @return the status
	 */
	Status getStatus();

	/**
	 * @return the progress
	 */
	int getProgress();

	/**
	 * @return the fault
	 */
	Fault getFault();

	/**
	 * @return the tenant id
	 */
	String getTenantId();

	/**
	 * @return the user id
	 */
	String getUserId();

	/**
	 * @return the key name
	 */
	String getKeyName();

	/**
	 * @return the host id
	 */
	String getHostId();

	/**
	 * @return the updated
	 */
	Date getUpdated();

	/**
	 * @return the created
	 */
	Date getCreated();

	/**
	 * @return the metadata
	 */
	Map getMetadata();

	//List getSecurityGroups();

	/**
	 * @return the task state
	 */
	String getTaskState();

	/**
	 * @return the power state
	 */
	String getPowerState();

	/**
	 * @return the vm state
	 */
	String getVmState();

	/**
	 * @return the host
	 */
	String getHost();

	/**
	 * @return the instance name
	 */
	String getInstanceName();

	/**
	 * @return the hypervisor hostname
	 */
	String getHypervisorHostname();

	/**
	 * Disk config attribute from the Disk Config Extension (alias "OS-DCF")..
	 *
	 * @return the current disk configuration
	 */
	DiskConfig getDiskConfig();

	/**
	 * @return the availability zone
	 */
	String getAvailabilityZone();

	/** 
	 * @return the last time the server was launched
	 */
	Date getLaunchedAt();

	/**
	 * @return the last termination date
	 */
	Date getTerminatedAt();

	/**
	 * @return the OS extended volumes attached
	 */
	List getOsExtendedVolumesAttached();

	/**
	 * @return the UUID for this server
	 */
	String getUuid();

	/**
	 * @return the administrative password to the VM
	 */
	String getAdminPass();

    /**
     * @return security groups attached to the VM
     */
    List getSecurityGroups();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy