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.
