vSphere SDK for Java - 为虚拟机添加磁盘
示例代码:
import com.vmware.vim25.*;
import com.vmware.vim25.mo.*;
import org.springframework.stereotype.Service; import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import java.util.concurrent.atomic.AtomicInteger; @Service
public class VirtualMachineService { private ServiceInstance vCenterServiceInstance; private InventoryNavigator inventoryNavigator; public VirtualMachineService() {
vCenterServiceInstance = this.vcInit();
inventoryNavigator = new InventoryNavigator(vCenterServiceInstance.getRootFolder());
} public ServiceInstance vcInit(){
try {
return new ServiceInstance(new URL("https://10.110.164.133/sdk"), "administrator@vsphere.local", "VMware1!", true);
} catch (MalformedURLException | RemoteException e) {
e.printStackTrace();
}
return null;
}private VirtualMachine getVirtualMachineByName(String virtualMachineName) throws RemoteException {
return (VirtualMachine) inventoryNavigator.searchManagedEntity("VirtualMachine", virtualMachineName);
}public static VirtualDeviceConfigSpec createVirtualDiskSpec(int diskSizeGb, Integer unitNumber, Integer controllerKey, String fileName ) { // assemble diskBackingInfo
VirtualDiskFlatVer2BackingInfo diskBackingInfo = new VirtualDiskFlatVer2BackingInfo();
diskBackingInfo.setThinProvisioned(true);
diskBackingInfo.setDiskMode("persistent");
diskBackingInfo.setFileName(fileName); // assemble virtualDisk
VirtualDisk virtualDisk = new VirtualDisk();
virtualDisk.setBacking(diskBackingInfo);
virtualDisk.setUnitNumber(unitNumber);
virtualDisk.setCapacityInKB(diskSizeGb * 1024 * 1024);
virtualDisk.setControllerKey(controllerKey);
virtualDisk.setKey(-1); // assemble virtualDeviceConfigSpec
VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec();
diskSpec.setFileOperation(VirtualDeviceConfigSpecFileOperation.create);
diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add);
diskSpec.setDevice(virtualDisk);
return diskSpec;
} // 获取虚拟机磁盘管理的ControllerKey
private int getControllerKeyByVirtualMachine(VirtualMachine vm) {
AtomicInteger controllerKey = new AtomicInteger();
if (vm != null) {
VirtualDevice[] devices = vm.getConfig().getHardware().getDevice();
if (devices != null && devices.length > 0) {
for (VirtualDevice device : devices) {
if (device instanceof VirtualDisk) {
controllerKey.set(device.getControllerKey());
}
}
}
}
return controllerKey.get();
} // 获取虚拟机已生成UnitNumber
private int getUnitNumberByVirtualMachine(VirtualMachine vm) {
AtomicInteger unitNumber = new AtomicInteger();
if (vm != null) {
VirtualDevice[] devices = vm.getConfig().getHardware().getDevice();
if (devices != null && devices.length > 0) {
for (VirtualDevice device : devices) {
if (device instanceof VirtualDisk) {
unitNumber.set(device.getUnitNumber());
}
}
}
}
unitNumber.set(unitNumber.get() + 1);
return unitNumber.get();
} private String getFreeDataStoreName(VirtualMachine vm, int size) throws Exception {
Datastore[] dataStores = vm.getDatastores();
for(Datastore datastore: dataStores)
{
DatastoreSummary ds = datastore.getSummary();
if(ds.getFreeSpace() > size)
{
return ds.getName();
}
}
return null;
} public static void main(String[] args) throws Exception {
VirtualMachineService virtualMachineService = new VirtualMachineService(); VirtualMachine virtualMachine = virtualMachineService.getVirtualMachineByName("T-001"); Integer controllerKey = virtualMachineService.getControllerKeyByVirtualMachine(virtualMachine);
Integer unitNumber = virtualMachineService.getUnitNumberByVirtualMachine(virtualMachine);
int diskSize = 2;
String diskName = "test_disk"; String dsName = virtualMachineService.getFreeDataStoreName(virtualMachine, diskSize);
String fileName = "[" + dsName + "] " + virtualMachine.getName() + "/" + diskName + ".vmdk";
VirtualDeviceConfigSpec virtualDeviceConfigSpec = createVirtualDiskSpec(diskSize, unitNumber, controllerKey, fileName); VirtualMachineConfigSpec virtualMachineConfigSpec = new VirtualMachineConfigSpec();
VirtualDeviceConfigSpec[] diskSpecArray = {virtualDeviceConfigSpec};
virtualMachineConfigSpec.setDeviceChange(diskSpecArray);
Task task = virtualMachine.reconfigVM_Task(virtualMachineConfigSpec);
task.waitForTask();
}
}
vSphere SDK for Java - 为虚拟机添加磁盘的更多相关文章
- exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现
exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现解决: 计算机---> 管理: 这里可以选择磁盘,格式,分区, 改盘符等操作
- 使用版本 1.0.0 的 Azure ARM SDK for Java 创建虚拟机时报错
问题描述 我们可以通过使用 Azure ARM SDK 来管理 Azure 上的资源,因此我们也可以通过 SDK 来创建 ARM 类型的虚拟机,当我们使用 1.0.0 版本的 Azure SDK fo ...
- vSphere SDK for Java - 从模板部署虚拟机并配置IP地址
vSphere for Java类库:vijava 虚拟机配置类 package com.vmware.vcenter_event.VirtualMachine; import com.vmwa ...
- vSphere SDK for Java 示例
示例代码: package com.vmware.event.connect; import java.net.MalformedURLException; import java.net.URL; ...
- 虚拟机添加磁盘LVM分区
参考博客:http://kimjinlsgd.blog.51cto.com/1918030/932210 一.查看磁盘情况 新添加一块磁盘. [root@VMhost /]# fdisk -l Dis ...
- Installing vSphere SDK for Perl
Installing vSphere SDK for Perl 你可以安装vSphere SDK 在Linux 或者Microsoft Windows 系统,或者 部署 VSphere Managem ...
- vmware vsphere client 虚拟机动态添加磁盘
0x00 事件 为了在虚拟机添加了磁盘之后,不重启机器加载新磁盘. 如上图,添加了一块 10G 的磁盘之后. 在虚拟机中是看不到新添加的磁盘: 0x01 解决 运行如下命令,通过重新扫描 SCSI ( ...
- ViutualBox虚拟机里添加磁盘
1.首先在VirtualBox界面给虚拟机添加一块磁盘 2. 启动系统,查看当前磁盘空间 Last login: Tue Mar 15 22:24:47 2016 from 192.168.1.100 ...
- VMware虚拟机下为Ubuntu添加磁盘
20G的磁盘还是不够用啊,正好复习下磁盘分区和逻辑卷. 关闭虚拟机,打开VMware,右键虚拟机点击设置,点下下方的添加,就可以添加磁盘了. 进入虚拟机,查看: root@ubuntu:/# fdis ...
随机推荐
- 2019年杭电多校第一场 1009题String(HDU6586+模拟+单调栈)
题目链接 传送门 题意 给你一个字符串,要你构造一个长为\(k\)的子串使得每个字母出现的次数在\([L_i,R_i](0\leq i\leq26)\)间且字典序最小. 思路 做这种题目就是要保持思路 ...
- Vuex之Mutation
[前言] 数据在页面是获取到了,但是如果需要修改count值怎么办?更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.Vuex 中的 mutation 非常类似于事件:每个 ...
- ArcGIS 将自定义工具发布到ArcGIS Server,作为Geoprocessing Service
新建自定义工具过程可参考上一篇博客:http://www.cnblogs.com/oceanking/p/3933681.html 1.执行自定义工具.此步骤不可省略 打开ArcCatalog,双击自 ...
- flutter 从创建到渲染的大体流程
从创建到渲染的大体流程是:根据Widget生成Element,然后创建相应的RenderObject并关联到Element.renderObject属性上,最后再通过RenderObject来完成布局 ...
- 模板内部不支持原生js的方法?》》artTemplate模版方法注册window全部事件方法
我的模板中出现了: {{parseInt(hasshakenum)}} 结果报错: Template Error resultPageTMP Render Error parseInt is not ...
- Java8新特性之forEach+Lambda 表达式遍历Map和List
这是Java8系列的第二篇,今天来说一下Java8中forEach的简单使用.我们使用对比的方式来看应该会看得更加清楚,更能理解: 一.遍历Map ============Java8之前的方式==== ...
- Objective-C Classes Are also Objects
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC ...
- scala 型变
型变是复杂类型的子类型关系与其组件类型的子类型关系的相关性. Scala支持 泛型类 的类型参数的型变注释,允许它们是协变的,逆变的,或在没有使用注释的情况下是不变的. 在类型系统中使用型变允许我们在 ...
- 解决在IDEA中无法使用Scanner输入的问题
今天写了一段代码用来测试输入,发现不管怎么样搜无法输入数据,代码如下: @Testpublic void func01(){ Scanner scanner = new Scanner(System. ...
- [POJ3468]关于整数的简单题 (你想要的)树状数组区间修改区间查询
#include <cstdio> #include <algorithm> #include <cstring> #include <cctype> ...