Quantcast
Channel: VMware Communities : All Content - VMware vCenter Converter SDK
Viewing all articles
Browse latest Browse all 706

volumebased and/or diskbased cloning for bootable disk

$
0
0

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:

  1. converterStorageParams.cloningMode = "volumeBasedCloning";
  2.          ConverterComputerSpec computerSpec = new ConverterComputerSpec();
  3.          computerSpec.location = Common.BuildLiveSourceLocation(_sourceName, _sourceUsername, _sourcePassword,
  4.                                                                   _sourceOsType, false, "");
  5.          ConverterComputerInfo computerInfo = _converterServer._converterService.ConverterQuery(_converterServer._converterServerContent.queryManager, computerSpec);
  6.          //
  7.          ConverterStorageParamsManagedTargetDiskParams targetdisk;
  8.           for (int diskcount = 0; diskcount < computerInfo.osInfo.logicalVolumeInfo.Length; diskcount++)
  9.          {
  10.              if (computerInfo.osInfo.logicalVolumeInfo[diskcount].mountPoint[0] == "C:")
  11.              {
  12.                  ConverterStorageParamsVolumeCloningParams volume;
  13.                  volume = new ConverterStorageParamsVolumeCloningParams();
  14.                  volume.resize = false;
  15.                  volume.sourceVolumeId = computerInfo.osInfo.logicalVolumeInfo[diskcount].volumeId;
  16.                  targetdisk = new ConverterStorageParamsManagedTargetDiskParams();
  17.                  targetdisk.volumesToClone = new ConverterStorageParamsVolumeCloningParams[]{volume};
  18.                  targetdisk.datastoreName = "SnapServer";
  19.                  converterStorageParams.targetDiskParams = new ConverterStorageParamsManagedTargetDiskParams[1];
  20.                  converterStorageParams.targetDiskParams[0] = targetdisk;
  21.              }
  22.          }
  23.         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:

 

  1. converterStorageParams.cloningMode = "diskBasedCloning";
  2.          ConverterComputerSpec computerSpec = new ConverterComputerSpec();
  3.          computerSpec.location = Common.BuildLiveSourceLocation(_sourceName, _sourceUsername, _sourcePassword,
  4.                                                                   _sourceOsType, false, "");
  5.          ConverterComputerInfo computerInfo = _converterServer._converterService.ConverterQuery(_converterServer._converterServerContent.queryManager, computerSpec);
  6.          //
  7.          ConverterStorageParamsManagedTargetDiskParams targetdisk;
  8.          string volumec="";
  9.           for (int diskcount = 0; diskcount < computerInfo.osInfo.logicalVolumeInfo.Length; diskcount++)
  10.          {
  11.              if (computerInfo.osInfo.logicalVolumeInfo[diskcount].mountPoint[0] == "C:")
  12.              {
  13.                  volumec = computerInfo.osInfo.logicalVolumeInfo[diskcount].volumeId;
  14.                  break;
  15.              }
  16.          }
  17.           for (int diskcount2 = 0; diskcount2 < computerInfo.hardwareInfo.storage.volume.Length; diskcount2++)
  18.          {
  19.              if (computerInfo.hardwareInfo.storage.volume[diskcount2].volumeId == volumec)
  20.              {
  21.                  targetdisk = new ConverterStorageParamsManagedTargetDiskParams();
  22.                  targetdisk.sourceDiskId = computerInfo.hardwareInfo.storage.volume[diskcount2].diskId[0];
  23.                  targetdisk.datastoreName = "SnapServer";
  24.                  converterStorageParams.targetDiskParams = new ConverterStorageParamsManagedTargetDiskParams[1];
  25.                  converterStorageParams.targetDiskParams[0] = targetdisk;
  26.                  break;
  27.              }
  28.          }
  29.         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.


Viewing all articles
Browse latest Browse all 706

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>