private void importHostedEngineVM(Map vmStruct) { VM vm = VdsBrokerObjectsBuilder.buildVmsDataFromExternalProvider(vmStruct); if (vm != null) { vm.setImages(VdsBrokerObjectsBuilder.buildDiskImagesFromDevices(vmStruct)); vm.setInterfaces(VdsBrokerObjectsBuilder.buildVmNetworkInterfacesFromDevices(vmStruct)); for (DiskImage diskImage : vm.getImages()) { vm.getDiskMap().put(Guid.newGuid(), diskImage); } vm.setVdsGroupId(getVdsManager().getVdsGroupId()); getVdsEventListener().importHostedEngineVm(vm); } }
protected void processExternallyManagedVms() { // Fetching for details from the host // and marking the VMs for addition List<String> vmsToQuery = new ArrayList<>(externalVms.size()); for (Pair<VM, VmInternalData> pair : externalVms) { vmsToQuery.add(pair.getSecond().getVmDynamic().getId().toString()); } if (!vmsToQuery.isEmpty()) { // Query VDSM for VMs info, and creating a proper VMStatic to be used when importing them Map[] vmsInfo = getVmInfo(vmsToQuery); for (Map vmInfo : vmsInfo) { Guid vmId = Guid.createGuidFromString((String) vmInfo.get(VdsProperties.vm_guid)); VmStatic vmStatic = new VmStatic(); vmStatic.setId(vmId); vmStatic.setCreationDate(new Date()); vmStatic.setVdsGroupId(vdsManager.getVdsGroupId()); String vmNameOnHost = (String) vmInfo.get(VdsProperties.vm_name); if (StringUtils.equals( Config.<String>getValue(ConfigValues.HostedEngineVmName), vmNameOnHost)) { // its a hosted engine VM -> import it and skip the external VM phase importHostedEngineVM(vmInfo); continue; } else { vmStatic.setName(String.format(EXTERNAL_VM_NAME_FORMAT, vmNameOnHost)); vmStatic.setOrigin(OriginType.EXTERNAL); } vmStatic.setNumOfSockets( VdsBrokerObjectsBuilder.parseIntVdsProperty(vmInfo.get(VdsProperties.num_of_cpus))); vmStatic.setMemSizeMb( VdsBrokerObjectsBuilder.parseIntVdsProperty(vmInfo.get(VdsProperties.mem_size_mb))); vmStatic.setSingleQxlPci(false); externalVmsToAdd.add(vmStatic); log.info( "Importing VM '{}' as '{}', as it is running on the on Host, but does not exist in the engine.", vmNameOnHost, vmStatic.getName()); } } }