@Override public void beforeStartVmOnKvm(KVMHostInventory host, VmInstanceSpec spec, StartVmCmd cmd) { VolumeInventory root = spec.getDestRootVolume(); if (!root.getInstallPath().startsWith(VolumeTO.FUSIONSTOR)) { return; } cmd.getAddons().put("qemuPath", QEMUPATH); cmd.setRootVolume(convertVolumeToFusionstorIfNeeded(root, cmd.getRootVolume())); List<VolumeTO> dtos = new ArrayList<VolumeTO>(); for (VolumeTO to : cmd.getDataVolumes()) { VolumeInventory dvol = null; for (VolumeInventory vol : spec.getDestDataVolumes()) { if (vol.getUuid().equals(to.getVolumeUuid())) { dvol = vol; break; } } dtos.add(convertVolumeToFusionstorIfNeeded(dvol, to)); } cmd.setDataVolumes(dtos); List<CdRomTO> cdRomTOS = CollectionUtils.transformToList(cmd.getCdRoms(), new Function<CdRomTO, CdRomTO>() { @Override public CdRomTO call(CdRomTO arg) { return convertCdRomToFusionstorIfNeeded(arg); } }); cmd.setCdRoms(cdRomTOS); }
@Override public void beforeStartVmOnKvm(KVMHostInventory host, VmInstanceSpec spec, StartVmCmd cmd) { cmd.setRootVolume(convertVolumeToCephIfNeeded(spec.getDestRootVolume(), cmd.getRootVolume())); List<VolumeTO> dtos = new ArrayList<VolumeTO>(); for (VolumeTO to : cmd.getDataVolumes()) { VolumeInventory dvol = null; for (VolumeInventory vol : spec.getDestDataVolumes()) { if (vol.getUuid().equals(to.getVolumeUuid())) { dvol = vol; break; } } dtos.add(convertVolumeToCephIfNeeded(dvol, to)); } cmd.setDataVolumes(dtos); List<CdRomTO> cdRomTOS = CollectionUtils.transformToList(cmd.getCdRoms(), new Function<CdRomTO, CdRomTO>() { @Override public CdRomTO call(CdRomTO arg) { return convertCdRomToCephIfNeeded(arg); } }); cmd.setCdRoms(cdRomTOS); CephPrimaryStorageVO cephPrimaryStorageVO = dbf.findByUuid(spec.getDestRootVolume().getPrimaryStorageUuid(), CephPrimaryStorageVO.class); if (cephPrimaryStorageVO != null && !CephSystemTags.NO_CEPHX.hasTag(cephPrimaryStorageVO.getUuid())) { cmd.getAddons().put(CephConstants.CEPH_SCECRET_KEY, cephPrimaryStorageVO.getUserKey()); cmd.getAddons().put(CephConstants.CEPH_SECRECT_UUID, CephSystemTags.KVM_SECRET_UUID.getTokenByResourceUuid(cephPrimaryStorageVO.getUuid(), CephSystemTags.KVM_SECRET_UUID_TOKEN)); } }