@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));
}
}