Disclaimer: This code snippet is provided without any guarantee. I've copied and modified it from an enhanced version of the SDK samples I use. It is a kind of addendum to the samples for informative purposes.
private void CreateConversionJob()
{
ConverterServerConversionConversionJobSpec jobSpec = BuildConversionJobSpec();
if (jobSpec == null)
{
System.Console.WriteLine("ERROR: Failed to build Conversion Job specification.");
return;
}
ConverterServerConversionConversionJobInfo conversionJobInfo = _converterServer.SubmitJob(jobSpec);
if (conversionJobInfo == null)
{
System.Console.WriteLine("ERROR: Failed to submit P2V Conversion Job.");
return;
}
System.Console.WriteLine("Conversion Job Id = {0} created ", conversionJobInfo.key);
if (conversionJobInfo.mostRecentError == null) {
System.Console.WriteLine("successfully.");
} else {
System.Console.WriteLine(". Most recent error: {0}", conversionJobInfo.mostRecentError.localizedMessage);
}
}
private ConverterServerConversionConversionJobSpec
BuildConversionJobSpec()
{
ConverterServerConversionConversionJobSpec jobSpec =
new ConverterServerConversionConversionJobSpec();
jobSpec.name = ""some job name";
jobSpec.description = "some job description";
jobSpec.firstRunSpecified = false;
jobSpec.startSuspended = false;
jobSpec.startSuspendedSpecified = true;
jobSpec.source = BuildSourceSpec();
jobSpec.conversionParams = BuildConversionParams();
return jobSpec;
}
private ConverterComputerSpec
BuildSourceSpec()
{
ConverterComputerSpec sourceSpec = new ConverterComputerSpec();
sourceSpec.location = BuildManagedVMLocation();
return sourceSpec;
}
private ConverterComputerSpecManagedVmLocation
BuildManagedVMLocation()
{
ConverterComputerSpecManagedVmLocation managedVMLocation =
new ConverterComputerSpecManagedVmLocation();
ConverterVimConnectionSpecLoginVimCredentials vimCredentials =
new ConverterVimConnectionSpecLoginVimCredentials();
vimCredentials.password = "VC/ESX password";
vimCredentials.username = "VC/ESX user name";
ConverterVimConnectionSpec vimConnectionSpec = new ConverterVimConnectionSpec();
vimConnectionSpec.hostname = "VC/ESX name or IP address";
vimConnectionSpec.credentials = vimCredentials;
vimConnectionSpec.verifyPeer = false;
vimConnectionSpec.verifyPeerSpecified = true;
vimConnectionSpec.sslThumbprint = null;
managedVMLocation.vimConnect = vimConnectionSpec;
managedVMLocation.vmName = "source VM name";
ManagedObjectReference vmMoRef = new ManagedObjectReference();
vmMoRef.type = "VirtualMachine";
vmMoRef.Value = "MoId of the source VM";
managedVMLocation.vm = vmMoRef;
return managedVMLocation;
}
private ConverterConversionParams
BuildConversionParams()
{
ConverterConversionParams conversionParams = new ConverterConversionParams();
conversionParams.doClone = true;
conversionParams.doCloneSpecified = true;
conversionParams.cloningParams = BuildCloningParams();
conversionParams.doReconfig = false;
conversionParams.doReconfigSpecified = true;
conversionParams.doInstallTools = false;
conversionParams.doInstallToolsSpecified = true;
conversionParams.doCustomize = false;
conversionParams.doCustomizeSpecified = true;
conversionParams.customizationParams = null;
conversionParams.powerOnTargetVM = false;
conversionParams.powerOnTargetVMSpecified = true;
conversionParams.removeRestoreCheckpoints = false;
conversionParams.removeRestoreCheckpointsSpecified = true;
conversionParams.throttlingParams = null;
return conversionParams;
}
private ConverterCloningParams
BuildCloningParams()
{
ConverterCloningParams cloningParams = new ConverterCloningParams();
ConverterTargetVmSpec targetVMSpec = new ConverterTargetVmSpec();
targetVMSpec.name = "some VM name";
targetVMSpec.location = BuildHostedTargetVMLocation();
cloningParams.target = targetVMSpec;
ConverterBasicHardwareParams hardwareParams = new ConverterBasicHardwareParams();
cloningParams.basicHardwareParams = hardwareParams;
cloningParams.ovfParams = new ConverterOvfParams();
cloningParams.ovfParams = new ConverterOvfParams();
cloningParams.ovfParams.ova = false;
cloningParams.ovfParams.certificateFile = false;
cloningParams.ovfParams.manifestFile = false;
return cloningParams;
}
private ConverterTargetVmSpecVmLocation
BuildHostedTargetVMLocation()
{
ConverterTargetVmSpecHostedVmLocation targetVMLocation =
new ConverterTargetVmSpecHostedVmLocation();
targetVMLocation.directory = "the destination directory path";
return targetVMLocation;
}