use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddVmCommand method init.
@Override
protected void init() {
super.init();
T parameters = getParameters();
if (parameters.getVmStaticData() != null) {
Guid templateIdToUse = getParameters().getVmStaticData().getVmtGuid();
if (parameters.getVmStaticData().isUseLatestVersion()) {
VmTemplate latest = vmTemplateDao.getTemplateWithLatestVersionInChain(templateIdToUse);
if (latest != null) {
// as it may have different set of disks
if (!templateIdToUse.equals(latest.getId())) {
getParameters().setDiskInfoDestinationMap(new HashMap<>());
}
setVmTemplate(latest);
templateIdToUse = latest.getId();
getParameters().getVmStaticData().setVmtGuid(templateIdToUse);
}
}
setVmTemplateId(templateIdToUse);
// API backward compatibility
if (getVmDeviceUtils().shouldOverrideSoundDevice(getParameters().getVmStaticData(), getEffectiveCompatibilityVersion(), getParameters().isSoundDeviceEnabled())) {
parameters.setSoundDeviceEnabled(true);
}
if (parameters.isConsoleEnabled() == null) {
parameters.setConsoleEnabled(false);
}
vmDevicesSourceId = (getInstanceTypeId() != null) ? getInstanceTypeId() : parameters.getVmStaticData().getVmtGuid();
imageTypeId = parameters.getVmStaticData().getImageTypeId();
vmInterfacesSourceId = parameters.getVmStaticData().getVmtGuid();
vmDisksSource = getVmTemplate();
}
parameters.setEntityInfo(new EntityInfo(VdcObjectType.VM, getVmId()));
// override values here for validate to run with correct values, has to come before init-disks
if (isCompatibilityVersionSupportedByCluster(getEffectiveCompatibilityVersion())) {
updateVmObject();
}
if (getParameters().getVmStaticData().getDefaultDisplayType() == DisplayType.none && !parameters.isConsoleEnabled()) {
parameters.getVmStaticData().setUsbPolicy(UsbPolicy.DISABLED);
}
initTemplateDisks();
initStoragePoolId();
diskInfoDestinationMap = getParameters().getDiskInfoDestinationMap();
if (diskInfoDestinationMap == null) {
diskInfoDestinationMap = new HashMap<>();
}
vmHandler.updateDefaultTimeZone(parameters.getVmStaticData());
vmHandler.autoSelectResumeBehavior(getParameters().getVmStaticData(), getCluster());
// Fill the migration policy if it was omitted
if (getParameters().getVmStaticData() != null && getParameters().getVmStaticData().getMigrationSupport() == null) {
setDefaultMigrationPolicy();
}
if (vmDisksSource != null) {
parameters.setUseCinderCommandCallback(!vmDisksSource.getDiskTemplateMap().isEmpty());
}
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddVmCommand method addPermissionSubjectForAdminLevelProperties.
protected void addPermissionSubjectForAdminLevelProperties(List<PermissionSubject> permissionList) {
VmStatic vmFromParams = getParameters().getVmStaticData();
VmTemplate vmTemplate = getVmTemplate();
if (vmFromParams != null && vmTemplate != null) {
// user needs specific permission to change custom properties
if (!Objects.equals(vmFromParams.getCustomProperties(), vmTemplate.getCustomProperties())) {
permissionList.add(new PermissionSubject(getClusterId(), VdcObjectType.Cluster, ActionGroup.CHANGE_VM_CUSTOM_PROPERTIES));
}
// if the template is blank we ignore his pinned hosts
if (vmTemplate.isBlank()) {
return;
}
Set<Guid> dedicatedVmForVdsFromUser = new HashSet<>(vmFromParams.getDedicatedVmForVdsList());
Set<Guid> dedicatedVmForVdsFromTemplate = new HashSet<>(vmTemplate.getDedicatedVmForVdsList());
// host-specific parameters can be changed by administration role only
if (!dedicatedVmForVdsFromUser.equals(dedicatedVmForVdsFromTemplate) || !StringUtils.isEmpty(vmFromParams.getCpuPinning())) {
permissionList.add(new PermissionSubject(getClusterId(), VdcObjectType.Cluster, ActionGroup.EDIT_ADMIN_VM_PROPERTIES));
}
}
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddVmCommand method addDiskPermissions.
private void addDiskPermissions() {
List<Guid> newDiskImageIds = new ArrayList<>(srcDiskIdToTargetDiskIdMapping.values());
Permission[] permsArray = new Permission[newDiskImageIds.size()];
for (int i = 0; i < newDiskImageIds.size(); i++) {
permsArray[i] = new Permission(getUserIdOfDiskOperator(), PredefinedRoles.DISK_OPERATOR.getId(), newDiskImageIds.get(i), VdcObjectType.Disk);
}
multiLevelAdministrationHandler.addPermission(permsArray);
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddVmCommand method makeNewImage.
private DiskImage makeNewImage(Guid storageId, DiskImage image) {
DiskImage newImage = new DiskImage();
newImage.setImageId(image.getImageId());
newImage.setDiskAlias(image.getDiskAlias());
newImage.setVolumeFormat(image.getVolumeFormat());
newImage.setVolumeType(image.getVolumeType());
ArrayList<Guid> storageIds = new ArrayList<>();
storageIds.add(storageId);
newImage.setStorageIds(storageIds);
newImage.setQuotaId(image.getQuotaId());
// Find out the correct disk profile for storage domain
newImage.setDiskProfileId(diskProfileDao.getAllForStorageDomain(storageId).stream().filter(p -> image.getDiskProfileIds().contains(p.getId())).findFirst().map(p -> p.getId()).orElse(null));
return newImage;
}
use of org.ovirt.engine.core.compat.Guid in project ovirt-engine by oVirt.
the class AddVmPoolCommand method getJobMessageProperties.
@Override
public Map<String, String> getJobMessageProperties() {
if (jobProperties == null) {
jobProperties = new HashMap<>();
VmPool vmPool = getParameters().getVmPool();
String vmPoolName = vmPool == null ? StringUtils.EMPTY : vmPool.getName();
jobProperties.put(VdcObjectType.VmPool.name().toLowerCase(), vmPoolName);
Guid vmTemplateId = getVmTemplateId();
String templateName = getVmTemplateName();
if (StringUtils.isEmpty(templateName)) {
templateName = vmTemplateId == null ? StringUtils.EMPTY : vmTemplateId.toString();
}
jobProperties.put(VdcObjectType.VmTemplate.name().toLowerCase(), templateName);
}
return jobProperties;
}
Aggregations