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.
public VcVirtualMachineCreate(strVcVirtualMachineName: string, intMemoryInGB: number, intCPU: number, intHardDiskCapacityInGB: number, objVcDatastore: VcDatastore, objVcResourcePool: VcResourcePool, objVcHostSystem: VcHostSystem, objVcVmFolder: VcVmFolder, objVcDistributedVirtualPortgroup: VcDistributedVirtualPortgroup): void {
let objVcDatastoreInfo: VcDatastoreInfo = objVcDatastore.info;
let objVcVirtualMachineFileInfo: VcVirtualMachineFileInfo = new VcVirtualMachineFileInfo();
objVcVirtualMachineFileInfo.vmPathName = "[" + objVcDatastoreInfo.name + "]";
let objVcVirtualLsiLogicSASController: VcVirtualLsiLogicSASController = new VcVirtualLsiLogicSASController();
objVcVirtualLsiLogicSASController.key = 0;
objVcVirtualLsiLogicSASController.device = [];
objVcVirtualLsiLogicSASController.busNumber = 0;
objVcVirtualLsiLogicSASController.sharedBus = VcVirtualSCSISharing["noSharing"];
let objVcVirtualDeviceConfigSpecSCSI: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecSCSI.device = objVcVirtualLsiLogicSASController;
objVcVirtualDeviceConfigSpecSCSI.operation = VcVirtualDeviceConfigSpecOperation.add;
let objVcDVPortgroupConfigInfo: VcDVPortgroupConfigInfo = objVcDistributedVirtualPortgroup.config;
let objVcDistributedVirtualSwitch: VcDistributedVirtualSwitch = objVcDVPortgroupConfigInfo.distributedVirtualSwitch;
let objVcDistributedVirtualSwitchPortConnection: VcDistributedVirtualSwitchPortConnection = new VcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid = objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey = objVcDistributedVirtualPortgroup.key;
let objVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo = new VcVirtualEthernetCardDistributedVirtualPortBackingInfo();
objVcVirtualEthernetCardDistributedVirtualPortBackingInfo.port = objVcDistributedVirtualSwitchPortConnection;
let objVcVirtualDeviceConnectInfo: VcVirtualDeviceConnectInfo = new VcVirtualDeviceConnectInfo();
objVcVirtualDeviceConnectInfo.allowGuestControl = false;
objVcVirtualDeviceConnectInfo.connected = true;
objVcVirtualDeviceConnectInfo.startConnected = true;
let objVcVirtualVmxnet3: VcVirtualVmxnet3 = new VcVirtualVmxnet3();
objVcVirtualVmxnet3.addressType = "Generated";
objVcVirtualVmxnet3.backing = objVcVirtualEthernetCardDistributedVirtualPortBackingInfo;
objVcVirtualVmxnet3.key = 0;
objVcVirtualVmxnet3.unitNumber = 0;
objVcVirtualVmxnet3.connectable = objVcVirtualDeviceConnectInfo;
let objVcVirtualDeviceConfigSpecNETWORK: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecNETWORK.device = objVcVirtualVmxnet3;
objVcVirtualDeviceConfigSpecNETWORK.operation = VcVirtualDeviceConfigSpecOperation.add;
let objVcVirtualDiskFlatVer2BackingInfo: VcVirtualDiskFlatVer2BackingInfo = new VcVirtualDiskFlatVer2BackingInfo();
objVcVirtualDiskFlatVer2BackingInfo.diskMode = VcVirtualDiskMode["persistent"];
objVcVirtualDiskFlatVer2BackingInfo.fileName = "[" + objVcDatastoreInfo.name + "]";
objVcVirtualDiskFlatVer2BackingInfo.thinProvisioned = true;
let objVcVirtualDisk: VcVirtualDisk = new VcVirtualDisk();
objVcVirtualDisk.backing = objVcVirtualDiskFlatVer2BackingInfo;
objVcVirtualDisk.key = -2;
objVcVirtualDisk.controllerKey = 0;
objVcVirtualDisk.unitNumber = 0;
objVcVirtualDisk.capacityInKB = intHardDiskCapacityInGB * 1024 * 1024;
let objVcVirtualDeviceConfigSpecDISK: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecDISK.device = objVcVirtualDisk;
objVcVirtualDeviceConfigSpecDISK.fileOperation = VcVirtualDeviceConfigSpecFileOperation.create;
objVcVirtualDeviceConfigSpecDISK.operation = VcVirtualDeviceConfigSpecOperation.add;
let objVcVirtualIDEController: VcVirtualIDEController = new VcVirtualIDEController();
objVcVirtualIDEController.key = -1;
objVcVirtualIDEController.device = [];
objVcVirtualIDEController.busNumber = 0;
let objVcVirtualDeviceConfigSpecIDE: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecIDE.device = objVcVirtualIDEController;
objVcVirtualDeviceConfigSpecIDE.operation = VcVirtualDeviceConfigSpecOperation.add;
let strFilePathToISO: string = "Windows/Server/Windows Server 2022 ( x64 ).iso";
let objVcVirtualCdromIsoBackingInfo: VcVirtualCdromIsoBackingInfo = new VcVirtualCdromIsoBackingInfo();
objVcVirtualCdromIsoBackingInfo.fileName = "[InstallISOs] " + strFilePathToISO;
let objVcVirtualDeviceConnectInfoCDROM: VcVirtualDeviceConnectInfo = new VcVirtualDeviceConnectInfo();
objVcVirtualDeviceConnectInfoCDROM.allowGuestControl = true;
objVcVirtualDeviceConnectInfoCDROM.connected = true;
objVcVirtualDeviceConnectInfoCDROM.startConnected = true;
let objVcVirtualCdrom: VcVirtualCdrom = new VcVirtualCdrom();
objVcVirtualCdrom.backing = objVcVirtualCdromIsoBackingInfo;
objVcVirtualCdrom.controllerKey = 200;
objVcVirtualCdrom.key = 0;
objVcVirtualCdrom.unitNumber = 0;
objVcVirtualCdrom.connectable = objVcVirtualDeviceConnectInfoCDROM;
let objVcVirtualDeviceConfigSpecCDROM: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
objVcVirtualDeviceConfigSpecCDROM.device = objVcVirtualCdrom;
objVcVirtualDeviceConfigSpecCDROM.operation = VcVirtualDeviceConfigSpecOperation.add;
let arrVcVirtualDeviceConfigSpec:VcVirtualDeviceConfigSpec[] = [];
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecSCSI);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecNETWORK);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecDISK);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecIDE);
arrVcVirtualDeviceConfigSpec.push(objVcVirtualDeviceConfigSpecCDROM);
let objVcVirtualMachineConfigSpec: VcVirtualMachineConfigSpec = new VcVirtualMachineConfigSpec();
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";
let objVcTask: VcTask = objVcVmFolder.createVM_Task(objVcVirtualMachineConfigSpec, objVcResourcePool, objVcHostSystem);
let objVcVirtualMachine: VcVirtualMachine = this.WaitForVcTaskEnd(objVcTask, 1);
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
