public void addNewNetworkCard(VirtualMachine vm, String netName, String nicName, String nicType) throws NetworkConfigurationException { try { VirtualMachineConfigSpec vmSpec = new VirtualMachineConfigSpec(); VirtualDeviceConfigSpec nicSpec = createNicSpec(netName, nicName, nicType); vmSpec.setDeviceChange(new VirtualDeviceConfigSpec[] {nicSpec}); Task task = vm.reconfigVM_Task(vmSpec); @SuppressWarnings("unused") String result = task.waitForTask(); } catch(Exception e) { throw new NetworkConfigurationException("Exception while adding network card to VM: " + e.getClass().getCanonicalName(), e); } }
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForMe();
Task task = vm.reconfigVM_Task(vmConfigSpec); result = task.waitForMe();
public void configStaticIp(ServiceInstance si, String vmName, String ip, String netmask, String gateway, String dns1, String dns2) throws Exception { VirtualMachine vm = (VirtualMachine) new InventoryNavigator(si.getRootFolder()).searchManagedEntity("VirtualMachine", vmName); if (vm == null) { System.out.println("Not found vm:" + vmName); return; } VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); OptionValue[] extraConfig = new OptionValue[1]; extraConfig[0] = new OptionValue(); //Use machine.id to store the ip related information. This information will be written to the .vmx file of the virtual machine. //And it can be retrieved with vmware tools inside the virtual machine, so the virtual machine can set up the ip, netmask, geteway, dns, etc. according to the information. //There are two sample scripts to retrive the information and set up the ip in the virtual machine, one for Linux(CentOS 6) and Windows(win 7): //Linux: src/main/resources/setup-ip.sh //Windows: src/main/resources/setup-ip.bat //More introduction about the machine.id can be found from: //http://tech.lazyllama.com/2010/06/22/passing-info-from-powercli-into-your-vm-using-guestinfo-variables/ //https://communities.vmware.com/thread/443727?start=0&tstart=0 extraConfig[0].setKey("machine.id"); //The format of ip_config is: ip:ip_value,netmask:netmask_value,gateway:gateway_value,dns1:dns1_value,dns2:dns2_value extraConfig[0].setValue("ip:" + ip + ",netmask:" + netmask + ",gateway:" + gateway + ",dns1:" + dns1 + ",dns2:" + dns2); vmConfigSpec.setExtraConfig(extraConfig); Task task = vm.reconfigVM_Task(vmConfigSpec); String result = task.waitForTask(); if (Task.SUCCESS.equals(result)) { System.out.println("Configure static IP for vm:" + vmName + " successfully!"); } else { throw new Exception("Configure static IP failed: result=" + result); } }
Task task = vm.reconfigVM_Task(vmConfigSpec); result = task.waitForMe();
vmConfigSpec.setDeviceChange( new VirtualDeviceConfigSpec[]{vdiskSpec} ); Task task = vm.reconfigVM_Task(vmConfigSpec);
vmConfigSpec.setDeviceChange( new VirtualDeviceConfigSpec[]{vdiskSpec} ); Task task = vm.reconfigVM_Task(vmConfigSpec);
Task task = vm.reconfigVM_Task(vmConfigSpec); String result = task.waitForTask(); if (!Task.SUCCESS.equals(result)) {
vm1.reconfigVM_Task(vmcs1); vm2.reconfigVM_Task(vmcs2);
vm1.reconfigVM_Task(vmcs1); vm2.reconfigVM_Task(vmcs2);
Task task = vm.reconfigVM_Task(vmConfigSpec);
public void attachNic(VirtualMachine vm, VirtualEthernetCard nic, Network network) throws RemoteException, InterruptedException { VirtualEthernetCardNetworkBackingInfo backing = (VirtualEthernetCardNetworkBackingInfo) nic.getBacking(); backing.setDeviceName(network.getName()); backing.setNetwork(network.getMOR()); nic.setBacking(backing); nic.getDeviceInfo().setSummary(network.getName()); VirtualDeviceConfigSpec nicSpec = new VirtualDeviceConfigSpec(); nicSpec.setOperation(VirtualDeviceConfigSpecOperation.edit); nicSpec.setDevice(nic); VirtualDeviceConfigSpec[] configSpecs = new VirtualDeviceConfigSpec[1]; configSpecs[0] = nicSpec; VirtualMachineConfigSpec machineConfigSpec = new VirtualMachineConfigSpec(); machineConfigSpec.setDeviceChange(configSpecs); Task task = vm.reconfigVM_Task(machineConfigSpec); String status = task.waitForTask(); if (!status.equals("success")) { String message = task.getTaskInfo().getError().getLocalizedMessage(); throw new RemoteException("Failed: " + message); } }
@Override public BusinessWrapper<Boolean> vmModifyName(VmServerDO vmServer) { String vmName = vmServer.getInsideIp() + ":" + vmServer.getServerName(); if (vmServer.getVmName().equals(vmName)) return new BusinessWrapper<>(true); this.login(); try { VirtualMachine vm = (VirtualMachine) new InventoryNavigator( serviceInstance.getRootFolder()).searchManagedEntity("VirtualMachine", vmServer.getVmName()); if (vm == null) { logger.error("vcsa 查询错误:" + " No VM " + vmServer.getVmName() + " found"); serviceInstance.getRootFolder().getServerConnection().logout(); return new BusinessWrapper<>(false); } VmServerDO vmServerDO = new VmServerDO(vm); VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); vmConfigSpec.setName(vmServerDO.getInsideIp() + ":" + vmServerDO.getServerName()); Task task = vm.reconfigVM_Task(vmConfigSpec); if (task.waitForMe() == Task.SUCCESS) { serviceInstance.getRootFolder().getServerConnection().logout(); return new BusinessWrapper<>(true); } else { serviceInstance.getRootFolder().getServerConnection().logout(); return new BusinessWrapper<>(false); } } catch (Exception e) { serviceInstance.getRootFolder().getServerConnection().logout(); logger.error("vcsa 查询错误"); } return new BusinessWrapper<>(true); }
public void addHardDisk(String diskFilePath, VirtualDiskMode diskMode) throws Exception { VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec(); VirtualDeviceConfigSpec[] vdiskSpecArray = {diskSpec}; vmConfigSpec.setDeviceChange(vdiskSpecArray); VirtualDiskFlatVer2BackingInfo diskfileBacking = new VirtualDiskFlatVer2BackingInfo(); diskfileBacking.setFileName(diskFilePath); diskfileBacking.setDiskMode(diskMode.toString()); VirtualSCSIController scsiController = getFirstAvailableController(VirtualSCSIController.class); int unitNumber = getFirstFreeUnitNumberForController(scsiController); VirtualDisk disk = new VirtualDisk(); disk.setControllerKey(scsiController.key); disk.setUnitNumber(unitNumber); disk.setBacking(diskfileBacking); //Unlike required by API ref, the capacityKB is optional. So skip setCapacityInKB() method. disk.setKey(-100); diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add); diskSpec.setDevice(disk); Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForTask(200, 100); }
public void createHardDisk(int diskSizeMB, VirtualDiskType type, VirtualDiskMode mode) throws Exception { VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec(); VirtualDiskFlatVer2BackingInfo diskfileBacking = new VirtualDiskFlatVer2BackingInfo(); diskfileBacking.setFileName(""); diskfileBacking.setDiskMode(mode.toString()); diskfileBacking.setThinProvisioned(type==VirtualDiskType.thin); VirtualSCSIController scsiController = getFirstAvailableController(VirtualSCSIController.class); int unitNumber = getFirstFreeUnitNumberForController(scsiController); VirtualDisk disk = new VirtualDisk(); disk.setControllerKey(scsiController.key); disk.setUnitNumber(unitNumber); disk.setBacking(diskfileBacking); disk.setCapacityInKB(1024 * diskSizeMB); disk.setKey(-1); diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add); diskSpec.setFileOperation(VirtualDeviceConfigSpecFileOperation.create); diskSpec.setDevice(disk); VirtualDeviceConfigSpec vdiskSpec = diskSpec; VirtualDeviceConfigSpec [] vdiskSpecArray = {vdiskSpec}; vmConfigSpec.setDeviceChange(vdiskSpecArray); Task task = vm.reconfigVM_Task(vmConfigSpec); task.waitForTask(200, 100); }