Orchestrator Function: Create a New vCenter Virtual Machine

by Simon Sparks · 19 February 2014

To use this function add it to the class library file named vCenterService.ts

GitHub Repository: https://github.com/SimonSparksUK/Orchestrator

Filename: vCenterService.ts

Function VcVirtualMachineCreate

Description: The following is the function to create a new virtual machine in vCenter.

publicVcVirtualMachineCreate(strVcVirtualMachineName:string,intMemoryInGB:number,intCPU:number,intHardDiskCapacityInGB:number,objVcDatastore:VcDatastore,objVcResourcePool:VcResourcePool,objVcHostSystem:VcHostSystem,objVcVmFolder:VcVmFolder,objVcDistributedVirtualPortgroup:VcDistributedVirtualPortgroup):void{
letobjVcDatastoreInfo: VcDatastoreInfo=objVcDatastore.info;

letobjVcVirtualMachineFileInfo: VcVirtualMachineFileInfo=newVcVirtualMachineFileInfo();
objVcVirtualMachineFileInfo.vmPathName="["+objVcDatastoreInfo.name+"]";

letobjVcVirtualLsiLogicSASController: VcVirtualLsiLogicSASController=newVcVirtualLsiLogicSASController();
objVcVirtualLsiLogicSASController.key=0;
objVcVirtualLsiLogicSASController.device= [];
objVcVirtualLsiLogicSASController.busNumber=0;
objVcVirtualLsiLogicSASController.sharedBus=VcVirtualSCSISharing["noSharing"];

letobjVcVirtualDeviceConfigSpecSCSI: VcVirtualDeviceConfigSpec=newVcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecSCSI.device=objVcVirtualLsiLogicSASController;
objVcVirtualDeviceConfigSpecSCSI.operation=VcVirtualDeviceConfigSpecOperation.add;

letobjVcDVPortgroupConfigInfo: VcDVPortgroupConfigInfo=objVcDistributedVirtualPortgroup.config;

letobjVcDistributedVirtualSwitch: VcDistributedVirtualSwitch=objVcDVPortgroupConfigInfo.distributedVirtualSwitch;

letobjVcDistributedVirtualSwitchPortConnection: VcDistributedVirtualSwitchPortConnection=newVcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid=objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey=objVcDistributedVirtualPortgroup.key;

letobjVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo=newVcVirtualEthernetCardDistributedVirtualPortBackingInfo();
objVcVirtualEthernetCardDistributedVirtualPortBackingInfo.port=objVcDistributedVirtualSwitchPortConnection;

letobjVcVirtualDeviceConnectInfo: VcVirtualDeviceConnectInfo=newVcVirtualDeviceConnectInfo();
objVcVirtualDeviceConnectInfo.allowGuestControl=false;
objVcVirtualDeviceConnectInfo.connected=true;
objVcVirtualDeviceConnectInfo.startConnected=true;

letobjVcVirtualVmxnet3: VcVirtualVmxnet3=newVcVirtualVmxnet3();
objVcVirtualVmxnet3.addressType="Generated";
objVcVirtualVmxnet3.backing=objVcVirtualEthernetCardDistributedVirtualPortBackingInfo;
objVcVirtualVmxnet3.key=0;
objVcVirtualVmxnet3.unitNumber=0;
objVcVirtualVmxnet3.connectable=objVcVirtualDeviceConnectInfo;

letobjVcVirtualDeviceConfigSpecNETWORK: VcVirtualDeviceConfigSpec=newVcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecNETWORK.device=objVcVirtualVmxnet3;
objVcVirtualDeviceConfigSpecNETWORK.operation=VcVirtualDeviceConfigSpecOperation.add;

letobjVcVirtualDiskFlatVer2BackingInfo: VcVirtualDiskFlatVer2BackingInfo=newVcVirtualDiskFlatVer2BackingInfo();
objVcVirtualDiskFlatVer2BackingInfo.diskMode=VcVirtualDiskMode["persistent"];
objVcVirtualDiskFlatVer2BackingInfo.fileName="["+objVcDatastoreInfo.name+"]";
objVcVirtualDiskFlatVer2BackingInfo.thinProvisioned=true;

letobjVcVirtualDisk: VcVirtualDisk=newVcVirtualDisk();
objVcVirtualDisk.backing=objVcVirtualDiskFlatVer2BackingInfo;
objVcVirtualDisk.key=-2;
objVcVirtualDisk.controllerKey=0;
objVcVirtualDisk.unitNumber=0;
objVcVirtualDisk.capacityInKB=intHardDiskCapacityInGB*1024*1024;

letobjVcVirtualDeviceConfigSpecDISK: VcVirtualDeviceConfigSpec=newVcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecDISK.device=objVcVirtualDisk;
objVcVirtualDeviceConfigSpecDISK.fileOperation=VcVirtualDeviceConfigSpecFileOperation.create;
objVcVirtualDeviceConfigSpecDISK.operation=VcVirtualDeviceConfigSpecOperation.add;

letobjVcVirtualIDEController: VcVirtualIDEController=newVcVirtualIDEController();
objVcVirtualIDEController.key=-1;
objVcVirtualIDEController.device= [];
objVcVirtualIDEController.busNumber=0;

letobjVcVirtualDeviceConfigSpecIDE: VcVirtualDeviceConfigSpec=newVcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecIDE.device=objVcVirtualIDEController;
objVcVirtualDeviceConfigSpecIDE.operation=VcVirtualDeviceConfigSpecOperation.add;

letstrFilePathToISO:string="Windows/Server/Windows Server 2022 ( x64 ).iso";

letobjVcVirtualCdromIsoBackingInfo: VcVirtualCdromIsoBackingInfo=newVcVirtualCdromIsoBackingInfo();
objVcVirtualCdromIsoBackingInfo.fileName="[InstallISOs]"+strFilePathToISO;

letobjVcVirtualDeviceConnectInfoCDROM: VcVirtualDeviceConnectInfo=newVcVirtualDeviceConnectInfo();
objVcVirtualDeviceConnectInfoCDROM.allowGuestControl=true;
objVcVirtualDeviceConnectInfoCDROM.connected=true;
objVcVirtualDeviceConnectInfoCDROM.startConnected=true;

letobjVcVirtualCdrom: VcVirtualCdrom=newVcVirtualCdrom();
objVcVirtualCdrom.backing=objVcVirtualCdromIsoBackingInfo;
objVcVirtualCdrom.controllerKey=200;
objVcVirtualCdrom.key=0;
objVcVirtualCdrom.unitNumber=0;
objVcVirtualCdrom.connectable=objVcVirtualDeviceConnectInfoCDROM;

letobjVcVirtualDeviceConfigSpecCDROM: VcVirtualDeviceConfigSpec=newVcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecCDROM.device=objVcVirtualCdrom;
objVcVirtualDeviceConfigSpecCDROM.operation=VcVirtualDeviceConfigSpecOperation.add;

letarrVcVirtualDeviceConfigSpec:VcVirtualDeviceConfigSpec[]= [];
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecSCSI);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecNETWORK);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecDISK);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecIDE);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecCDROM);

letobjVcVirtualMachineConfigSpec: VcVirtualMachineConfigSpec=newVcVirtualMachineConfigSpec();
objVcVirtualMachineConfigSpec.name=strVcVirtualMachineName;
objVcVirtualMachineConfigSpec.guestId=VcVirtualMachineGuestOsIdentifier["windows9Server64Guest"]
objVcVirtualMachineConfigSpec.memoryMB=intMemoryInGB*1024;
objVcVirtualMachineConfigSpec.numCPUs=intCPU;
objVcVirtualMachineConfigSpec.files=objVcVirtualMachineFileInfo;
objVcVirtualMachineConfigSpec.deviceChange=arrVcVirtualDeviceConfigSpec;
objVcVirtualMachineConfigSpec.cpuHotAddEnabled=false;
objVcVirtualMachineConfigSpec.cpuHotRemoveEnabled=false;
objVcVirtualMachineConfigSpec.memoryHotAddEnabled=false;
objVcVirtualMachineConfigSpec.changeTrackingEnabled=true;
objVcVirtualMachineConfigSpec.version="vmx-09";

letobjVcTask: VcTask=objVcVmFolder.createVM_Task(objVcVirtualMachineConfigSpec,objVcResourcePool,objVcHostSystem);

letobjVcVirtualMachine: VcVirtualMachine=this.WaitForVcTaskEnd(objVcTask,1);
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like