/**
* 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 java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import com.abiquo.abiserver.business.hibernate.pojohb.infrastructure.DatastoreHB;
import com.abiquo.abiserver.business.hibernate.pojohb.infrastructure.PhysicalmachineHB;
import com.abiquo.abiserver.pojo.IPojo;
import com.abiquo.server.core.infrastructure.DatastoreDto;
import com.abiquo.server.core.infrastructure.MachineDto;
public class PhysicalMachine extends InfrastructureElement implements IPojo<PhysicalmachineHB>
{
/* ------------- Public atributes ------------- */
private DataCenter dataCenter;
private Rack rack;
private String description;
private int ram;
private int cpu;
private long hd;
private int ramUsed;
private int cpuUsed;
private long hdUsed;
/**
* This parameter identifies the state of the physicalMachine. 0 - Stopped 1 - Not Provisioned 2
* - Not managed 3 - Managed 4 - Halted
*/
private int idState;
private String vswitchName;
private String initiatorIQN;
private Set<Datastore> datastores;
private Integer idEnterprise;
private HyperVisor hypervisor;
private String ipmiIp;
private Integer ipmiPort;
private String ipmiUser;
private String ipmiPassword;
public PhysicalMachine()
{
super();
dataCenter = new DataCenter();
description = "";
ram = 0;
cpu = 0;
hd = 0;
ramUsed = 0;
cpuUsed = 0;
hdUsed = 0;
setVswitchName("");
idEnterprise = null;
ipmiIp = null;
ipmiPort = null;
ipmiUser = null;
ipmiPassword = null;
}
public DataCenter getDataCenter()
{
return dataCenter;
}
public void setDataCenter(final DataCenter dataCenter)
{
this.dataCenter = dataCenter;
}
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;
}
// used
public int getRamUsed()
{
return ramUsed;
}
public void setRamUsed(final int ram)
{
ramUsed = ram;
}
public int getCpuUsed()
{
return cpuUsed;
}
public void setCpuUsed(final int cpu)
{
cpuUsed = cpu;
}
public long getHdUsed()
{
return hdUsed;
}
public void setHdUsed(final long hd)
{
hdUsed = hd;
}
public int getIdState()
{
return idState;
}
public void setIdState(final int idState)
{
this.idState = idState;
}
/**
* @param vswitchName the vswitchName to set
*/
public void setVswitchName(final String vswitchName)
{
this.vswitchName = vswitchName;
}
/**
* @return the vswitchName
*/
public String getVswitchName()
{
return vswitchName;
}
/**
* @return the initiatorIQN
*/
public String getInitiatorIQN()
{
return initiatorIQN;
}
/**
* @param initiatorIQN, the new initiatorIQN to set
*/
public void setInitiatorIQN(final String initiatorIQN)
{
this.initiatorIQN = initiatorIQN;
}
/**
* @param datastores the datastores to set
*/
public void setDatastores(final Set<Datastore> datastores)
{
this.datastores = datastores;
}
/**
* @return the datastores
*/
public Set<Datastore> getDatastores()
{
return datastores;
}
public void setIdEnterprise(final Integer idEnterprise)
{
this.idEnterprise = idEnterprise;
}
public Integer getIdEnterprise()
{
return idEnterprise;
}
public String getIpmiIp()
{
return ipmiIp;
}
public void setIpmiIp(final String ipmiIp)
{
this.ipmiIp = ipmiIp;
}
public Integer getIpmiPort()
{
return ipmiPort;
}
public void setIpmiPort(final Integer ipmiPort)
{
this.ipmiPort = ipmiPort;
}
public String getIpmiUser()
{
return ipmiUser;
}
public void setIpmiUser(final String ipmiUser)
{
this.ipmiUser = ipmiUser;
}
public String getIpmiPassword()
{
return ipmiPassword;
}
public void setIpmiPassword(final String ipmiPassword)
{
this.ipmiPassword = ipmiPassword;
}
public HyperVisor getHypervisor()
{
return hypervisor;
}
public void setHypervisor(final HyperVisor hypervisor)
{
this.hypervisor = hypervisor;
}
@Override
public PhysicalmachineHB toPojoHB()
{
PhysicalmachineHB physicalMachineHB = new PhysicalmachineHB();
physicalMachineHB.setDataCenter(getDataCenter().toPojoHB());
physicalMachineHB.setIdPhysicalMachine(getId());
physicalMachineHB.setName(StringUtils.substring(getName(), 0, 255)); // a fully qualified
// domain name (FQDN)
// is 255 octets -
// where any one label
// can be 63 octets
// long at most (RFC
// 2181)
physicalMachineHB.setDescription(getDescription());
physicalMachineHB.setCpu(getCpu());
physicalMachineHB.setCpuUsed(getCpuUsed());
physicalMachineHB.setRam(getRam());
physicalMachineHB.setRamUsed(getRamUsed());
Rack rack = (Rack) getAssignedTo();
physicalMachineHB.setRack(rack.toPojoHB());
physicalMachineHB.setIdState(getIdState());
physicalMachineHB.setVswitchName(vswitchName);
physicalMachineHB.setInitiatorIQN(initiatorIQN);
physicalMachineHB.setIpmiIp(ipmiIp);
physicalMachineHB.setIpmiPort(ipmiPort);
physicalMachineHB.setIpmiUser(ipmiUser);
physicalMachineHB.setIpmiPassword(ipmiPassword);
Set<DatastoreHB> datastoresHB = new HashSet<DatastoreHB>();
if (datastores != null)
{
for (Datastore datastore : datastores)
{
datastoresHB.add(datastore.toPojoHB());
}
}
physicalMachineHB.setDatastoresHB(datastoresHB);
if (idEnterprise != null)
{
physicalMachineHB.setIdEnterprise(idEnterprise.intValue() != 0 ? idEnterprise : null);
}
if (hypervisor != null)
{
physicalMachineHB.setHypervisor(hypervisor.toPojoHB(physicalMachineHB));
}
return physicalMachineHB;
}
public Rack getRack()
{
return rack;
}
public void setRack(final Rack rack)
{
this.rack = rack;
}
public static PhysicalMachine create(final MachineDto dto, final DataCenter datacenter,
final Rack rack)
{
PhysicalMachine physicalMachine = new PhysicalMachine();
physicalMachine.setDataCenter(datacenter);
physicalMachine.setCpu(dto.getVirtualCpuCores());
physicalMachine.setCpuUsed(dto.getVirtualCpusUsed());
physicalMachine.setDescription(dto.getDescription());
physicalMachine.setId(dto.getId());
physicalMachine.setName(dto.getName());
physicalMachine.setAssignedTo(rack);
physicalMachine.setRam(dto.getVirtualRamInMb());
physicalMachine.setRamUsed(dto.getVirtualRamUsedInMb());
physicalMachine.setIdState(dto.getState().ordinal());
physicalMachine.setVswitchName(dto.getVirtualSwitch());
physicalMachine.setIpmiIp(dto.getIpmiIP());
physicalMachine.setIpmiPort(dto.getIpmiPort());
physicalMachine.setIpmiUser(dto.getIpmiUser());
physicalMachine.setIpmiPassword(dto.getIpmiPassword());
// FIXME: where is initiatorIQN?
// physicalMachine.setInitiatorIQN(dto.get);
return physicalMachine;
}
public static PhysicalMachine create(final MachineDto dto, final Rack rack)
{
PhysicalMachine physicalMachine = new PhysicalMachine();
// physicalMachine.setDataCenter(datacenter);
physicalMachine.setCpu(dto.getVirtualCpuCores());
physicalMachine.setCpuUsed(dto.getVirtualCpusUsed());
physicalMachine.setDescription(dto.getDescription());
physicalMachine.setId(dto.getId());
physicalMachine.setName(dto.getName());
physicalMachine.setAssignedTo(rack);
physicalMachine.setRam(dto.getVirtualRamInMb());
physicalMachine.setRamUsed(dto.getVirtualRamUsedInMb());
physicalMachine.setIdState(dto.getState().ordinal());
physicalMachine.setVswitchName(dto.getVirtualSwitch());
physicalMachine.setIpmiIp(dto.getIpmiIP());
physicalMachine.setIpmiPort(dto.getIpmiPort());
physicalMachine.setIpmiUser(dto.getIpmiUser());
physicalMachine.setIpmiPassword(dto.getIpmiPassword());
// FIXME: where is initiatorIQN?
// physicalMachine.setInitiatorIQN(dto.get);
return physicalMachine;
}
public void completeInfo(final MachineDto dto)
{
HyperVisor h = new HyperVisor();
h.setIp(dto.getIp());
h.setIpService(dto.getIpService());
if (dto.getType() != null)
{
h.setType(new HyperVisorType(dto.getType()));
}
h.setUser(dto.getUser());
h.setPassword(dto.getPassword());
if (dto.getPort() != null)
{
h.setPort(dto.getPort());
}
h.setId(dto.getId());
h.setName(dto.getName());
this.setHypervisor(h);
if (dto.getDatastores() != null && !dto.getDatastores().getCollection().isEmpty())
{
this.setDatastores(new HashSet<Datastore>());
for (DatastoreDto dataDto : dto.getDatastores().getCollection())
{
Datastore datastore = new Datastore();
datastore.setDatastoreUUID(dataDto.getDatastoreUUID());
datastore.setDirectory(dataDto.getDirectory());
datastore.setEnabled(dataDto.isEnabled());
datastore.setId(dataDto.getId());
datastore.setName(dataDto.getName());
datastore.setSize(dataDto.getSize());
datastore.setUsedSize(dataDto.getUsedSize());
datastore.setUUID(dataDto.getRootPath());
this.getDatastores().add(datastore);
}
}
}
}