package org.ovirt.engine.core.common.action;
import java.util.HashMap;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmEntityType;
import org.ovirt.engine.core.common.businessentities.VmStatic;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.utils.ValidationUtils;
import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
import org.ovirt.engine.core.common.validation.group.CreateEntity;
import org.ovirt.engine.core.common.validation.group.UpdateEntity;
import org.ovirt.engine.core.compat.Guid;
public class AddVmTemplateParameters extends VmTemplateManagementParameters implements HasVmIcon {
public enum Phase {
CREATE_TEMPLATE,
ASSIGN_ILLEGAL,
SEAL,
ASSIGN_LEGAL_SHARED
}
private static final long serialVersionUID = 2114985552063499069L;
private VmStatic masterVm;
private Guid vmTemplateId;
private VmEntityType templateType;
private String templateVersionName;
private Guid baseTemplateId;
private Guid destinationStorageDomainId;
private HashMap<Guid, DiskImage> diskInfoDestinationMap;
private String vmLargeIcon;
@Size(min = 1, max = BusinessEntitiesDefinitions.VM_TEMPLATE_NAME_SIZE, message = "VALIDATION_VM_TEMPLATE_NAME_MAX", groups = { CreateEntity.class, UpdateEntity.class })
@ValidI18NName(message = "ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS")
private String name;
@Pattern(regexp = ValidationUtils.ONLY_I18N_ASCII_OR_NONE,
message = "ACTION_TYPE_FAILED_DESCRIPTION_MAY_NOT_CONTAIN_SPECIAL_CHARS")
private String description;
private boolean publicUse;
private boolean copyVmPermissions;
private boolean sealTemplate;
/*
* This parameter is used to decide if to create sound device or not if it is null then legacy logic will be used:
* create device for desktop type
*/
private Boolean soundDeviceEnabled;
private Boolean consoleEnabled;
private Phase phase = Phase.CREATE_TEMPLATE;
public AddVmTemplateParameters() {
vmTemplateId = Guid.Empty;
templateType = VmEntityType.TEMPLATE;
}
public AddVmTemplateParameters(VmStatic masterVm, String name, String description) {
this();
this.masterVm = masterVm;
this.name = name;
this.description = description;
}
public AddVmTemplateParameters(VM vm, String name, String description) {
this(vm.getStaticData(), name, description);
}
public VmStatic getMasterVm() {
return masterVm;
}
public void setMasterVm(VmStatic masterVm) {
this.masterVm = masterVm;
}
public VM getVm() {
VM vm = new VM();
vm.setStaticData(masterVm);
return vm;
}
public void setVm(VM vm) {
masterVm = vm.getStaticData();
}
@Override
public Guid getVmTemplateId() {
return vmTemplateId;
}
public void setVmTemplateId(Guid vmTemplateId) {
this.vmTemplateId = vmTemplateId;
}
public VmEntityType getTemplateType() {
return templateType;
}
public void setTemplateType(VmEntityType templateType) {
this.templateType = templateType;
}
public String getTemplateVersionName() {
return templateVersionName;
}
public void setTemplateVersionName(String templateVersionName) {
this.templateVersionName = templateVersionName;
}
public Guid getBaseTemplateId() {
return baseTemplateId;
}
public void setBaseTemplateId(Guid baseTemplateId) {
this.baseTemplateId = baseTemplateId;
}
public Guid getDestinationStorageDomainId() {
return destinationStorageDomainId;
}
public void setDestinationStorageDomainId(Guid destinationStorageDomainId) {
this.destinationStorageDomainId = destinationStorageDomainId;
}
public HashMap<Guid, DiskImage> getDiskInfoDestinationMap() {
return diskInfoDestinationMap;
}
public void setDiskInfoDestinationMap(HashMap<Guid, DiskImage> diskInfoDestinationMap) {
this.diskInfoDestinationMap = diskInfoDestinationMap;
}
@Override
public String getVmLargeIcon() {
return vmLargeIcon;
}
@Override
public void setVmLargeIcon(String vmLargeIcon) {
this.vmLargeIcon = vmLargeIcon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public boolean isPublicUse() {
return publicUse;
}
public void setPublicUse(boolean publicUse) {
this.publicUse = publicUse;
}
public boolean isCopyVmPermissions() {
return copyVmPermissions;
}
public void setCopyVmPermissions(boolean copyVmPermissions) {
this.copyVmPermissions = copyVmPermissions;
}
public boolean isSealTemplate() {
return sealTemplate;
}
public void setSealTemplate(boolean sealTemplate) {
this.sealTemplate = sealTemplate;
}
public Boolean isSoundDeviceEnabled() {
return soundDeviceEnabled;
}
public void setSoundDeviceEnabled(boolean soundDeviceEnabled) {
this.soundDeviceEnabled = soundDeviceEnabled;
}
public Boolean isConsoleEnabled() {
return consoleEnabled;
}
public void setConsoleEnabled(Boolean consoleEnabled) {
this.consoleEnabled = consoleEnabled;
}
public Phase getPhase() {
return phase;
}
public void setPhase(Phase phase) {
this.phase = phase;
}
}