Hello, i want to do a p2v job to only convert the C: drive of my source machine, wich is the one with the os.
i modified the dot net sample with this code:
- converterStorageParams.cloningMode = "volumeBasedCloning";
- ConverterComputerSpec computerSpec = new ConverterComputerSpec();
- computerSpec.location = Common.BuildLiveSourceLocation(_sourceName, _sourceUsername, _sourcePassword,
- _sourceOsType, false, "");
- ConverterComputerInfo computerInfo = _converterServer._converterService.ConverterQuery(_converterServer._converterServerContent.queryManager, computerSpec);
- //
- ConverterStorageParamsManagedTargetDiskParams targetdisk;
- for (int diskcount = 0; diskcount < computerInfo.osInfo.logicalVolumeInfo.Length; diskcount++)
- {
- if (computerInfo.osInfo.logicalVolumeInfo[diskcount].mountPoint[0] == "C:")
- {
- ConverterStorageParamsVolumeCloningParams volume;
- volume = new ConverterStorageParamsVolumeCloningParams();
- volume.resize = false;
- volume.sourceVolumeId = computerInfo.osInfo.logicalVolumeInfo[diskcount].volumeId;
- targetdisk = new ConverterStorageParamsManagedTargetDiskParams();
- targetdisk.volumesToClone = new ConverterStorageParamsVolumeCloningParams[]{volume};
- targetdisk.datastoreName = "SnapServer";
- converterStorageParams.targetDiskParams = new ConverterStorageParamsManagedTargetDiskParams[1];
- converterStorageParams.targetDiskParams[0] = targetdisk;
- }
- }
- converterStorageParams.vmxDatastoreName = "SnapServer";
It is working but i end up with a VM that don't boot on the disk. i was thinking it was due to volumebasedcloning (wich seems to not be the case after checking the worker logs when adding a job through gui) so i changed my code to use diskbasedcloning:
- converterStorageParams.cloningMode = "diskBasedCloning";
- ConverterComputerSpec computerSpec = new ConverterComputerSpec();
- computerSpec.location = Common.BuildLiveSourceLocation(_sourceName, _sourceUsername, _sourcePassword,
- _sourceOsType, false, "");
- ConverterComputerInfo computerInfo = _converterServer._converterService.ConverterQuery(_converterServer._converterServerContent.queryManager, computerSpec);
- //
- ConverterStorageParamsManagedTargetDiskParams targetdisk;
- string volumec="";
- for (int diskcount = 0; diskcount < computerInfo.osInfo.logicalVolumeInfo.Length; diskcount++)
- {
- if (computerInfo.osInfo.logicalVolumeInfo[diskcount].mountPoint[0] == "C:")
- {
- volumec = computerInfo.osInfo.logicalVolumeInfo[diskcount].volumeId;
- break;
- }
- }
- for (int diskcount2 = 0; diskcount2 < computerInfo.hardwareInfo.storage.volume.Length; diskcount2++)
- {
- if (computerInfo.hardwareInfo.storage.volume[diskcount2].volumeId == volumec)
- {
- targetdisk = new ConverterStorageParamsManagedTargetDiskParams();
- targetdisk.sourceDiskId = computerInfo.hardwareInfo.storage.volume[diskcount2].diskId[0];
- targetdisk.datastoreName = "SnapServer";
- converterStorageParams.targetDiskParams = new ConverterStorageParamsManagedTargetDiskParams[1];
- converterStorageParams.targetDiskParams[0] = targetdisk;
- break;
- }
- }
- converterStorageParams.vmxDatastoreName = "SnapServer";
wich give me a " TaskImpl has failed with MethodFault::Exception: vmodl.fault.InvalidArgument" error.
i'm kind of running in circle, can anyone point me to the right direction to achieve my goal?
thanks.