/** * Abiquo community edition * cloud management application for hybrid clouds * Copyright (C) 2008-2010 - Abiquo Holdings S.L. * * This application is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC * LICENSE as published by the Free Software Foundation under * version 3 of the License * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * LESSER GENERAL PUBLIC LICENSE v.3 for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package com.abiquo.abiserver.pojo.infrastructure; import org.apache.commons.lang.StringUtils; import com.abiquo.abiserver.business.hibernate.pojohb.infrastructure.StateEnum; import com.abiquo.abiserver.business.hibernate.pojohb.virtualappliance.VirtualmachineHB; import com.abiquo.abiserver.pojo.IPojo; import com.abiquo.abiserver.pojo.user.Enterprise; import com.abiquo.abiserver.pojo.user.User; import com.abiquo.abiserver.pojo.virtualimage.VirtualImage; import com.abiquo.abiserver.pojo.virtualimage.VirtualImageConversions; import com.abiquo.model.enumerator.HypervisorType; import com.abiquo.model.rest.RESTLink; import com.abiquo.server.core.cloud.VirtualMachineDto; public class VirtualMachine extends InfrastructureElement implements IPojo<VirtualmachineHB> { /* ------------- Public atributes ------------- */ private VirtualImage virtualImage; private String UUID; private String description; private int ram; private int cpu; private long hd; private Integer vdrpPort; private String vdrpIP; private State state; private State subState; private boolean highDisponibility; private int idType; private User user; private Enterprise enterprise; private VirtualImageConversions conversion; private Datastore datastore; private String password; /* ------------- Constructor ------------- */ public VirtualMachine() { super(); virtualImage = new VirtualImage(); UUID = ""; description = ""; ram = 0; cpu = 0; hd = 0; vdrpPort = 0; vdrpIP = ""; highDisponibility = false; password = ""; } public VirtualImage getVirtualImage() { return virtualImage; } public void setVirtualImage(final VirtualImage virtualImage) { this.virtualImage = virtualImage; } public String getUUID() { return UUID; } public void setUUID(final String uuid) { UUID = uuid; } public String getDescription() { return description; } public void setDescription(final String description) { this.description = description; } public int getRam() { return ram; } public void setRam(final int ram) { this.ram = ram; } public int getCpu() { return cpu; } public void setCpu(final int cpu) { this.cpu = cpu; } public long getHd() { return hd; } public void setHd(final long hd) { this.hd = hd; } public Integer getVdrpPort() { return vdrpPort; } public void setVdrpPort(final Integer vdrpPort) { this.vdrpPort = vdrpPort; } public String getVdrpIP() { return vdrpIP; } public void setVdrpIP(final String vdrpIP) { this.vdrpIP = vdrpIP; } public State getState() { return state; } public void setState(final State state) { this.state = state; } public void setSubState(final State subState) { this.subState = subState; } public State getSubState() { return subState; } public boolean isHighDisponibility() { return highDisponibility; } public boolean getHighDisponibility() { return highDisponibility; } public void setHighDisponibility(final boolean highDisponibility) { this.highDisponibility = highDisponibility; } public int getIdType() { return idType; } public void setIdType(final int idType) { this.idType = idType; } public User getUser() { return user; } public void setUser(final User user) { this.user = user; } public Enterprise getEnterprise() { return enterprise; } public void setEnterprise(final Enterprise enterprise) { this.enterprise = enterprise; } public String getPassword() { return password; } public void setPassword(final String password) { this.password = password; } @Override public VirtualmachineHB toPojoHB() { VirtualmachineHB virtualMachineHB = new VirtualmachineHB(); virtualMachineHB.setIdVm(getId()); HyperVisor hypervisor = (HyperVisor) getAssignedTo(); if (hypervisor == null) { virtualMachineHB.setHypervisor(null); } else { virtualMachineHB.setHypervisor(hypervisor.toPojoHB()); } if (conversion == null) { virtualMachineHB.setConversion(null); } else { virtualMachineHB.setConversion(conversion.toPojoHB()); } // Client sends sometimes a description null or "" if (StringUtils.isEmpty(state.getDescription())) { virtualMachineHB.setState(StateEnum.fromId(state.getId())); } else { virtualMachineHB.setState(StateEnum.valueOf(state.getDescription())); } if (subState != null) { // Client sends sometimes a description null or "" if (StringUtils.isEmpty(subState.getDescription())) { virtualMachineHB.setSubState(StateEnum.fromId(subState.getId())); } else { virtualMachineHB.setSubState(StateEnum.valueOf(subState.getDescription())); } } else { virtualMachineHB.setSubState(StateEnum.UNKNOWN); } virtualMachineHB.setImage(virtualImage == null ? null : virtualImage.toPojoHB()); virtualMachineHB.setUuid(UUID); virtualMachineHB.setName(getName()); virtualMachineHB.setDescription(description); virtualMachineHB.setRam(ram); virtualMachineHB.setCpu(cpu); virtualMachineHB.setHd(hd); virtualMachineHB.setVdrpIp(vdrpIP); virtualMachineHB.setVdrpPort(vdrpPort); virtualMachineHB.setHighDisponibility(highDisponibility ? 1 : 0); virtualMachineHB.setUserHB(user == null ? null : user.toPojoHB()); virtualMachineHB.setEnterpriseHB(enterprise == null ? null : enterprise.toPojoHB()); virtualMachineHB.setIdType(this.idType); virtualMachineHB.setDatastore(datastore == null ? null : datastore.toPojoHB()); virtualMachineHB.setPassword(password); return virtualMachineHB; } /** * @return the conversion */ public VirtualImageConversions getConversion() { return conversion; } /** * @param conversion the conversion to set */ public void setConversion(final VirtualImageConversions conversion) { this.conversion = conversion; } public void setDatastore(final Datastore datastore) { this.datastore = datastore; } public Datastore getDatastore() { return datastore; } public static VirtualMachine createFlexObject(final VirtualMachineDto dto) { VirtualMachine vm = new VirtualMachine(); vm.setId(dto.getId()); vm.setCpu(dto.getCpu()); vm.setHd(dto.getHdInBytes()); vm.setHighDisponibility(dto.getHighDisponibility() == 1 ? true : false); vm.setDescription(dto.getDescription()); vm.setName(dto.getName()); vm.setRam(dto.getRam()); vm.setState(new State(StateEnum.valueOf(dto.getState().name()))); vm.setVdrpPort(dto.getVdrpPort()); vm.setVdrpIP(dto.getVdrpIP()); if (dto.getIdType() == com.abiquo.server.core.cloud.VirtualMachine.MANAGED) { vm.setIdType(1); } else { vm.setIdType(0); } vm.setVirtualImage(null); // Set to null to avoid VirtualImage conversion fail to PojoHB and // because we don't use it // Build the hypervisor with the information available. // It will only be used to check the type. RESTLink vdcLink = dto.searchLink("machine"); HyperVisor hypervisor = new HyperVisor(); hypervisor.setType(new HyperVisorType(HypervisorType.valueOf(vdcLink.getTitle()))); vm.setAssignedTo(hypervisor); return vm; } }