/* * Copyright (c) 2013 Technische Universitat Wien (TUW), Distributed Systems Group. http://dsg.tuwien.ac.at * * This work was partially supported by the European Commission in terms of the CELAR FP7 project (FP7-ICT-2011-8 #317790), http://www.celarcloud.eu/ * * Licensed 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 at.ac.tuwien.dsg.cloud.salsa.domainmodels.IaaS; import at.ac.tuwien.dsg.cloud.salsa.domainmodels.DomainEntity; import at.ac.tuwien.dsg.cloud.salsa.domainmodels.types.ServiceCategory; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * * This class acts as a container for all the information of Salsa Virtual Machine instances * * @author Duc-Hung Le TODO: Unified instance type. Currently: use String. */ public class VirtualMachineInfo extends DomainEntity { // info get from SALSA protected String provider; protected String baseImageID; protected String baseImageName; protected String instanceId; protected String privateIp; protected String publicIp; protected PackagesDependencies packagesDependencies; // Some info can get from OpenStack-based cloud protected String configDrive; protected String flavorName; protected String flavorID; protected String hostId; protected String keyname; protected String status; protected String tenantId; protected String updated; protected String userID; // some info at Operating system level protected String osName; protected String osArch; protected String osVersion; protected String sunOsPatchLevel; protected String sunCpuEndian; protected String javaVersion; protected String javaVendor; protected String javaRuntimeName; protected String fileEncoding; protected String fileEncodingPacket; public enum State { unknown, spawning, configuring, running, stopped, error } public VirtualMachineInfo() { } public VirtualMachineInfo(String provider, String instanceId, String name) { super(ServiceCategory.VirtualMachine, instanceId, name); this.provider = provider; this.instanceId = instanceId; // we always need this to update the unified state updateStateList(State.values()); } @Override public String toString() { return "SalsaInstanceDescription [provider=" + provider + ", instanceId=" + instanceId + ", privateIp=" + privateIp + ", state=" + status + "]"; } @Override public boolean equals(Object obj) { if (obj instanceof VirtualMachineInfo) { return instanceId.equals(((VirtualMachineInfo) obj) .getInstanceId()); } return false; } @Override public int hashCode() { int hash = 3; hash = 31 * hash + Objects.hashCode(this.instanceId); return hash; } // public Map<String, String> exportToMap() { // Map<String, String> resMap = new HashMap<>(); // Map<String, String> map = new HashMap<>(); // map.put("provider", this.provider); // map.put("baseImage", this.baseImage); // map.put("instanceType", this.instanceType); // map.put("instanceId", this.instanceId); // map.put("publicIp", this.publicIp); // map.put("privateIp", this.privateIp); // map.put("publicDNS", this.publicDNS); // Iterator iterator = map.entrySet().iterator(); // while (iterator.hasNext()) { // Map.Entry<String, String> mapEntry = (Map.Entry<String, String>) iterator.next(); // if (mapEntry.getValue() != null) { // resMap.put(mapEntry.getKey(), mapEntry.getValue()); // } // } // // return resMap; // } public static class PackagesDependencies { List<String> packageDependency; public List<String> getPackageDependency() { return packageDependency; } public void setPackageDependency(List<String> packageDependency) { if (this.packageDependency == null) { this.packageDependency = new ArrayList<>(); } this.packageDependency = packageDependency; } @Override public String toString() { return "PackagesDependencies [packageDependency=" + packageDependency + "]"; } } public String getProvider() { return provider; } public void setProvider(String provider) { this.provider = provider; } public String getBaseImageID() { return baseImageID; } public void setBaseImageID(String baseImageID) { this.baseImageID = baseImageID; } public String getBaseImageName() { return baseImageName; } public void setBaseImageName(String baseImageName) { this.baseImageName = baseImageName; } public String getInstanceId() { return instanceId; } public void setInstanceId(String instanceId) { this.instanceId = instanceId; } public String getPrivateIp() { return privateIp; } public void setPrivateIp(String privateIp) { this.privateIp = privateIp; } public String getPublicIp() { return publicIp; } public void setPublicIp(String publicIp) { this.publicIp = publicIp; } public PackagesDependencies getPackagesDependencies() { return packagesDependencies; } public void setPackagesDependencies(PackagesDependencies packagesDependencies) { this.packagesDependencies = packagesDependencies; } public String getConfigDrive() { return configDrive; } public void setConfigDrive(String configDrive) { this.configDrive = configDrive; } public String getFlavorName() { return flavorName; } public void setFlavorName(String flavorName) { this.flavorName = flavorName; } public String getFlavorID() { return flavorID; } public void setFlavorID(String flavorID) { this.flavorID = flavorID; } public String getHostId() { return hostId; } public void setHostId(String hostId) { this.hostId = hostId; } public String getKeyname() { return keyname; } public void setKeyname(String keyname) { this.keyname = keyname; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getTenantId() { return tenantId; } public void setTenantId(String tenantId) { this.tenantId = tenantId; } public String getUpdated() { return updated; } public void setUpdated(String updated) { this.updated = updated; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getOsName() { return osName; } public void setOsName(String osName) { this.osName = osName; } public String getOsArch() { return osArch; } public void setOsArch(String osArch) { this.osArch = osArch; } public String getOsVersion() { return osVersion; } public void setOsVersion(String osVersion) { this.osVersion = osVersion; } public String getSunOsPatchLevel() { return sunOsPatchLevel; } public void setSunOsPatchLevel(String sunOsPatchLevel) { this.sunOsPatchLevel = sunOsPatchLevel; } public String getSunCpuEndian() { return sunCpuEndian; } public void setSunCpuEndian(String sunCpuEndian) { this.sunCpuEndian = sunCpuEndian; } public String getJavaVersion() { return javaVersion; } public void setJavaVersion(String javaVersion) { this.javaVersion = javaVersion; } public String getJavaVendor() { return javaVendor; } public void setJavaVendor(String javaVendor) { this.javaVendor = javaVendor; } public String getJavaRuntimeName() { return javaRuntimeName; } public void setJavaRuntimeName(String javaRuntimeName) { this.javaRuntimeName = javaRuntimeName; } public String getFileEncoding() { return fileEncoding; } public void setFileEncoding(String fileEncoding) { this.fileEncoding = fileEncoding; } public String getFileEncodingPacket() { return fileEncodingPacket; } public void setFileEncodingPacket(String fileEncodingPacket) { this.fileEncodingPacket = fileEncodingPacket; } }