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 ...
随机推荐
- splunk dga
https://splunkbase.splunk.com/app/3559/ 详细参考: https://www.slideshare.net/Splunk/using-machine-learni ...
- php中的Exception
如果定制的EXCEPTION搞定了,默认的,就自然不在话下罗. 直接上最曲折的过程. InvalidIdException.php <?php namespace Bookstore\Excep ...
- 不能走路(walk)
[题目背景] 小G 同学总是在树上走路.小S 看不下去了,决定阻止小G 同学. [题目描述] 有一棵 n 个点的树,树上有 m 条路径,每条路径为 x[i]到y[i] 的树上最短路径(不经过相同的边) ...
- hive表分区相关操作
Hive 表分区 Hive表的分区就是一个目录,分区字段不和表的字段重复 创建分区表: create table tb_partition(id string, name string) PARTIT ...
- 类数组对象与arguments
类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ['name', 'age', 'sex']; var arrayLike = { ...
- JS的ES6的Symbol
一.Symbol 1.什么是Symbol: Symbol是ES6新添加的原始类型(ES5已有原始数据类型:String,Number,boolean,function,undefined,object ...
- ffmpeg结合SDL编写播放器(一)
ffmpeg 工具是一个高效快速的命令行工具,进行视音频不同格式之间的转换. ffmpeg命令行 ffmpeg可以读取任意数量的输入“文件”(可以是常规文件,管道,网络流,抓取设备等)读取,由 -i ...
- LSTM代码
tensorflow的关于LSTM的代码,经过反复的调试和修改,终于运行成功了,可以把训练过程的结果保存起来,然后预测的时候直接取出来.花了很长时间才把官网上的代码调试成功,里面的坑有很多需要填补,还 ...
- AttributeError: module 'pytest' has no attribute 'allure'
解决 pip3 uninstall pytest-allure-adaptor pip3 install allure-pytest 参考: https://www.cnblogs.com/lansa ...
- 冰多多团队alpha阶段发布说明
标题:冰多多Alpha阶段发布说明 Alpha版本功能介绍 我们项目当前是两个部分,前端编辑器和后端mtermux是分开的,是两个独立的app项目,还没有完美的连起来(我们alpha阶段目标任务是不必 ...