Vijava 学习笔记(指定虚拟机添加虚拟磁盘修订功能版本)
来源:互联网 发布:java中什么是方法重载 编辑:程序博客网 时间:2024/06/05 17:28
条件一:为指定的虚拟机添加新的磁盘,前提条件是虚拟机必须已经是按照了Vmware Tool 工具的虚拟机,否则以下的虚拟机添加虚拟磁盘功能代码可能会成功或不成功。
指定虚拟机设备截图:
源代码:
package com.vmware.client;import com.vmware.util.Session;import com.vmware.vim25.*;import com.vmware.vim25.mo.*;/** * Created by vixuan-008 on 2015/5/27. */public class AddVMDisk { public static void main(String[] args) { ServiceInstance serviceInstance = null; try { String vmname = "IAAS"; //获取 HostSystem serviceInstance = Session.getInstance("***", "root", "vmware"); Folder rootFolder = serviceInstance.getRootFolder(); VirtualMachine vm = (VirtualMachine) new InventoryNavigator(rootFolder).searchManagedEntity("VirtualMachine", vmname); VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); if (vm == null) { System.out.println("No VM " + vmname + " found"); serviceInstance.getServerConnection().logout(); return; } int diskSize = 10*1024; // mode: persistent|independent_persistent,independent_nonpersistent String diskMode = "persistent"; String diskName = "vijava_disk"; VirtualDeviceConfigSpec vdiskSpec = createDiskSpec("local02-2",1000, diskSize, diskMode,vm); VirtualDeviceConfigSpec[] vdiskSpecArray = {vdiskSpec}; vmConfigSpec.setDeviceChange(vdiskSpecArray); Task task = vm.reconfigVM_Task(vmConfigSpec); String result = task.waitForMe(); if (result.equals(Task.SUCCESS)) { System.out.println("success"); } else { System.out.println("failed"); } serviceInstance.getServerConnection().logout(); } catch (Exception e) { e.printStackTrace(); serviceInstance.getServerConnection().logout(); return; } } public static VirtualDeviceConfigSpec createDiskSpec(String dsName, int cKey, long diskSizeKB, String diskMode,VirtualMachine vm) { VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec(); diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add); diskSpec.setFileOperation( VirtualDeviceConfigSpecFileOperation.create); VirtualDisk vd = new VirtualDisk(); vd.setCapacityInKB(diskSizeKB); diskSpec.setDevice(vd); vd.setKey(getkey(vm)); vd.setUnitNumber(getUnitNumber(vm)); vd.setControllerKey(getcontrollerkey(vm)); VirtualDiskFlatVer2BackingInfo diskfileBacking = new VirtualDiskFlatVer2BackingInfo(); String fileName = "[" + dsName + "]"+"vixan.cn127744"; diskfileBacking.setFileName(fileName); diskfileBacking.setDiskMode(diskMode); diskfileBacking.setThinProvisioned(true); vd.setBacking(diskfileBacking); return diskSpec; } //获取虚拟机磁盘管理的controlerkey public static int getcontrollerkey(VirtualMachine vm){ int controllerkey=0; if(vm!=null){ VirtualDevice[] devices=vm.getConfig().getHardware().getDevice(); if(devices !=null && devices.length>0){ for(int i=0;i<devices.length;i++){ VirtualDevice device=devices[i]; if(device instanceof VirtualDisk){ controllerkey=device.getControllerKey(); } } } } return controllerkey; } //获取虚拟机已生成key public static int getkey(VirtualMachine vm){ int key=0; if(vm!=null){ VirtualDevice[] devices=vm.getConfig().getHardware().getDevice(); if(devices !=null && devices.length>0){ for(int i=0;i<devices.length;i++){ VirtualDevice device=devices[i]; if(device instanceof VirtualDisk){ key=device.getKey(); } } } } key=key+1; return key; } //获取虚拟机已生成UnitNumber public static int getUnitNumber(VirtualMachine vm){ int UnitNumber=0; if(vm!=null){ VirtualDevice[] devices=vm.getConfig().getHardware().getDevice(); if(devices !=null && devices.length>0){ for(int i=0;i<devices.length;i++){ VirtualDevice device=devices[i]; if(device instanceof VirtualDisk){ UnitNumber=device.getUnitNumber(); } } } } UnitNumber=UnitNumber+1; return UnitNumber; }}
0 0
- Vijava 学习笔记(指定虚拟机添加虚拟磁盘修订功能版本)
- Vijava 学习笔记之(Template 克隆虚拟机并修改Template 指定虚拟磁盘大小)
- Vijava学习笔记之(为指定的SCSI控制器,添加关联磁盘。主要针对虚拟机)
- Vijava 学习笔记之(VirtualMachine 移除指定虚拟磁盘)
- Vijava (更改虚拟机配置信息(内存、CPU和添加新磁盘)终极版本)
- Vijava 学习笔记之(VirtualMachine 更改虚拟机系统磁盘大小)
- Vijava 学习笔记之(Template 克隆虚拟机并指定自定义规范)
- Vijava 学习笔记之 VirtualMachine(虚拟磁盘已用容量和空闲容量)
- Vijava 学习笔记之(获取用户指定自定义规范)
- Vijava 学习笔记之(模板生成虚拟机)
- Vijava 学习笔记 删除虚拟机(delete Virtual Machine)
- Vijava 学习笔记之HostSystem 包含虚拟机和虚拟网卡v
- Vijava 学习笔记之 虚拟机连接
- Vijava (模板部署虚拟机,并指定自定义规范(终极版本))
- 不重启VMWare虚拟机添加虚拟磁盘的方法(上)
- Vijava 学习笔记之(虚拟机可扩容CPU核数、内存大小和关联DataStore)
- Vijava 学习笔记之(VirtualMachineRelocateSpec类)
- Vijava 学习笔记之模板
- Internal Sorting: List Merge Sort: Sorting by Merging
- ubuntu系统下源的问题
- solr5.0 tomcat安装部署
- 容器+AOP 实现动态部署(二)
- question1-在插入排序中运用二元搜索代替线性查找
- Vijava 学习笔记(指定虚拟机添加虚拟磁盘修订功能版本)
- Tk on Python
- Mac 下解压Android NDK 的 .bin文件
- Welcome to Linux From Scratch!
- 数据结构与算法分析-栈
- 20 款超棒免费的 Bootstrap 管理和前端模板
- 移植busybox-1.14.0
- <fmt:parseNumber/>解析数字
- "晴天"天气app的开源库逐步学习(一)