package org.zstack.header.allocator;
import org.zstack.header.configuration.DiskOfferingInventory;
import org.zstack.header.host.HypervisorType;
import org.zstack.header.image.ImageInventory;
import org.zstack.header.vm.VmInstanceInventory;
import org.zstack.header.volume.VolumeFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*/
public class HostAllocatorSpec {
private List<String> avoidHostUuids;
private long cpuCapacity;
private long memoryCapacity;
private List<String> l3NetworkUuids;
private long diskSize;
private String hypervisorType;
private String allocatorStrategy;
private VmInstanceInventory vmInstance;
private ImageInventory image;
private String vmOperation;
private List<DiskOfferingInventory> diskOfferings = new ArrayList<>();
private Map<Object, Object> extraData = new HashMap<>();
private boolean allowNoL3Networks;
private boolean listAllHosts;
private String requiredBackupStorageUuid;
private String requiredPrimaryStorageUuid;
private Map<String, List<String>> backupStoragePrimaryStorageMetrics;
private boolean dryRun;
public String getRequiredPrimaryStorageUuid() {
return requiredPrimaryStorageUuid;
}
public void setRequiredPrimaryStorageUuid(String requiredPrimaryStorageUuid) {
this.requiredPrimaryStorageUuid = requiredPrimaryStorageUuid;
}
public boolean isDryRun() {
return dryRun;
}
public void setDryRun(boolean dryRun) {
this.dryRun = dryRun;
}
public String getRequiredBackupStorageUuid() {
return requiredBackupStorageUuid;
}
public void setRequiredBackupStorageUuid(String requiredBackupStorageUuid) {
this.requiredBackupStorageUuid = requiredBackupStorageUuid;
}
public boolean isListAllHosts() {
return listAllHosts;
}
public void setListAllHosts(boolean listAllHosts) {
this.listAllHosts = listAllHosts;
}
public boolean isAllowNoL3Networks() {
return allowNoL3Networks;
}
public void setAllowNoL3Networks(boolean allowNoL3Networks) {
this.allowNoL3Networks = allowNoL3Networks;
}
public List<DiskOfferingInventory> getDiskOfferings() {
return diskOfferings;
}
public void setDiskOfferings(List<DiskOfferingInventory> diskOfferings) {
this.diskOfferings = diskOfferings;
}
public String getVmOperation() {
return vmOperation;
}
public void setVmOperation(String vmOperation) {
this.vmOperation = vmOperation;
}
public List<String> getAvoidHostUuids() {
if (avoidHostUuids == null) {
avoidHostUuids = new ArrayList<>();
}
return avoidHostUuids;
}
public void setAvoidHostUuids(List<String> avoidHostUuids) {
this.avoidHostUuids = avoidHostUuids;
}
public long getCpuCapacity() {
return cpuCapacity;
}
public void setCpuCapacity(long cpuCapacity) {
this.cpuCapacity = cpuCapacity;
}
public long getMemoryCapacity() {
return memoryCapacity;
}
public void setMemoryCapacity(long memoryCapacity) {
this.memoryCapacity = memoryCapacity;
}
public List<String> getL3NetworkUuids() {
if (l3NetworkUuids == null) {
l3NetworkUuids = new ArrayList<>();
}
return l3NetworkUuids;
}
public void setL3NetworkUuids(List<String> l3NetworkUuids) {
this.l3NetworkUuids = l3NetworkUuids;
}
public long getDiskSize() {
return diskSize;
}
public void setDiskSize(long diskSize) {
this.diskSize = diskSize;
}
public String getHypervisorType() {
return hypervisorType;
}
public void setHypervisorType(String hypervisorType) {
this.hypervisorType = hypervisorType;
}
public String getAllocatorStrategy() {
return allocatorStrategy;
}
public void setAllocatorStrategy(String allocatorStrategy) {
this.allocatorStrategy = allocatorStrategy;
}
public VmInstanceInventory getVmInstance() {
return vmInstance;
}
public void setVmInstance(VmInstanceInventory vmInstance) {
this.vmInstance = vmInstance;
}
public Map<Object, Object> getExtraData() {
return extraData;
}
public void setExtraData(Map<Object, Object> extraData) {
this.extraData = extraData;
}
public ImageInventory getImage() {
return image;
}
public void setImage(ImageInventory image) {
this.image = image;
}
public static HostAllocatorSpec fromAllocationMsg(AllocateHostMsg msg) {
HostAllocatorSpec spec = new HostAllocatorSpec();
spec.setAllocatorStrategy(msg.getAllocatorStrategy());
spec.setAvoidHostUuids(msg.getAvoidHostUuids());
spec.setCpuCapacity(msg.getCpuCapacity());
spec.setDiskSize(msg.getDiskSize());
spec.setListAllHosts(msg.isListAllHosts());
spec.setDryRun(msg.isDryRun());
String hvType = null;
if (msg.getVmInstance() != null && msg.getVmInstance().getHypervisorType() != null) {
hvType = msg.getVmInstance().getHypervisorType();
}
if (hvType == null && msg.getImage() != null) {
HypervisorType type = VolumeFormat.getMasterHypervisorTypeByVolumeFormat(msg.getImage().getFormat());
if (type != null) {
hvType = type.toString();
}
}
spec.setHypervisorType(hvType);
spec.setMemoryCapacity(msg.getMemoryCapacity());
spec.setVmInstance(msg.getVmInstance());
spec.setL3NetworkUuids(msg.getL3NetworkUuids());
spec.setImage(msg.getImage());
spec.setVmOperation(msg.getVmOperation());
spec.setDiskOfferings(msg.getDiskOfferings());
spec.setAllowNoL3Networks(msg.isAllowNoL3Networks());
spec.setRequiredBackupStorageUuid(msg.getRequiredBackupStorageUuid());
spec.setRequiredPrimaryStorageUuid(msg.getRequiredPrimaryStorageUuid());
return spec;
}
public Map<String, List<String>> getBackupStoragePrimaryStorageMetrics() {
return backupStoragePrimaryStorageMetrics;
}
public void setBackupStoragePrimaryStorageMetrics(Map<String, List<String>> backupStoragePrimaryStorageMetrics) {
this.backupStoragePrimaryStorageMetrics = backupStoragePrimaryStorageMetrics;
}
}