在vRO实现将已有虚拟机磁盘添加到另外的虚拟机上,以为vRA发布Oracle/SQL集群做准备:

// 脚本需要两个输入 vm_obj和diskPath
System.log("Attempting to attach " + diskPath + " to " + vcVM.name);
// Max number of vmdks attached to a single scsi controller
var MAX_NUMBER_ATTACHED_VMDKS = ; var devices = vcVm.config.hardware.device;
var diskFilePath = diskPath; // sample: [sharedata]abc/abc_1.vmdk
var controllerKey;
var unitNumber;
var usedUnitNumbers = [];
for each (controller in devices) {
var isScsi = controller instanceof VcVirtualBusLogicController || controller instanceof VcVirtualLsiLogicController
|| controller instanceof VcParaVirtualSCSIController || controller instanceof VcVirtualLsiLogicSASController;
if (!isScsi) {
continue;
} System.log("SCSI controller found: " + controller.deviceInfo.label);
for each (device in devices) {
if (device.controllerKey == controller.key) {
System.log("Device found: '" + device.deviceInfo.label + "' 'SCSI (" + controller.busNumber + ":" + device.unitNumber + ")'");
controllerKey = controller.key;
usedUnitNumbers.push(device.unitNumber);
}
}
break;
} if (usedUnitNumbers.length >= MAX_NUMBER_ATTACHED_VMDKS) {
throw "SCSI controller is full, the VMDK can not be attached!";
} var backing = new VcVirtualDiskFlatVer2BackingInfo();
backing.fileName = diskFilePath;
backing.diskMode = VcVirtualDiskMode.persistent; var connectable = new VcVirtualDeviceConnectInfo();
connectable.startConnected = true;
connectable.allowGuestControl = false;
connectable.connected = true; // Find the first available SCSI id
for (i = ; i < MAX_NUMBER_ATTACHED_VMDKS; i++) {
if (usedUnitNumbers.indexOf(i) == -) {
unitNumber = i;
System.log("Found available SCSI unit numebr '" + unitNumber + "'");
break;
}
} var device = new VcVirtualDisk();
device.backing = backing;
device.connectable = connectable;
device.controllerKey = controllerKey;
device.unitNumber = unitNumber; var deviceChange = new VcVirtualDeviceConfigSpec();
deviceChange.operation = VcVirtualDeviceConfigSpecOperation.add;
deviceChange.device = device;
var deviceChangeArray = [deviceChange]; var spec = new VcVirtualMachineConfigSpec();
spec.deviceChange = deviceChangeArray; var task = vcVm.reconfigVM_Task(spec);
System.log("Initiating reconfigure...");
System.getModule("com.vmware.library.vc.basic").vim3WaitTaskEnd(task,true,);
System.log("Reconfigure of VM '" + vcVm.name + "' successful.");

vRO 添加已有磁盘到VM的更多相关文章

  1. 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

     zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务 ...

  2. Azure上采用Json Template从已有的VHD创建VM

    从已有的VHD创建VM是使用Azure中经常要操作的内容. 本文将介绍如何采用Json Template从已经有的VHD创建VM. 一.准备VHD 在我的Azure账户中选择一台VM,如下图: 查看其 ...

  3. IIS:错误: 无法提交配置更改,因为文件已在磁盘上更改

    文件名: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 错误: 无法提交配置更改,因为文件已在磁盘上更改 通过 Micro ...

  4. (转)淘淘商城系列——VMware添加已配置好的虚拟机

    http://blog.csdn.net/yerenyuan_pku/article/details/72802323 我们有时候会碰到虚拟机环境搭建特别麻烦,很容易出错的问题,而这时我们又刚好有别人 ...

  5. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  6. 自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法

    最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常: {"无法添 ...

  7. 给KVM添加新的磁盘

    给KVM添加新的磁盘 两种方案 1 添加虚拟磁盘文件 2 添加物理磁盘 硬件配置: 物理主机(宿主机):foundation 物理主机磁盘情况: 我们有三块物理磁盘,sda.sdb和sdc(这里都是S ...

  8. oracle 11gR2 ASM添加和删除磁盘

    一.环境 oracle 11gR2 RAC + Oracle Linux Server release 5.9 二.实施 备注:安全起见,操作之前停数据库实例.ASM实例 1.节点1.2磁盘信息 -- ...

  9. Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。

    一.添加联系人 Intent addIntent = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("cont ...

随机推荐

  1. hdu 1815(二分+2-sat)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1815 题意:给出n个牛棚.两个特殊点S1,S2的坐标.S1.S2直连.牛棚只能连S1或S2,还有,某些 ...

  2. Mac下使用安装MongoDB

    1.安装方法1:Mac电脑上面安装很简单,直接下载需要的版本解压即可: 下载网址 https://www.mongodb.com/download-center?jmp=nav#community 方 ...

  3. Linux下汇编语言------计算n的阶乘

    用高级语言比方C语言写个阶乘非常easy,那如今就来熟悉下Linux使用AT&T汇编格式写一个程序来计算阶乘吧 写法一是 使用跳转指令实现.写法二是使用函数来实现 约定:本程序没有将结果打印在 ...

  4. Apache JMeter录制HTTPS的方法及测试中常见问题解决

    Jmeter录制https请求,录制不到的常见解决方案: cmd java -version 显示为1.7 以jdk1.7为例,打开\Java\jre7\lib\security 中的,java.se ...

  5. Android无线测试之—UiAutomator UiDevice API介绍七

    截图与等待空闲 一.截图和等待空闲相关知识: 1)图片缩放比例:例如图片从100像素缩小到50像素 2)图片质量:是指图片大小,质量越高图片越大,质量越低图片越小 3)File类:指的是一个文件或者一 ...

  6. Jquery Ajax Json ashx 实现前后台数据传输

    经过一个多星期的研究,各种查找资料终于自己实现了Jquery  Ajax Json ashx 的前后台数据交流功能 首先一点,Ajax只能对应一个ashx文件,多余两个,如果打开异步传输的async: ...

  7. view {display:block}

    view {display:block}

  8. Java基础 - 获取键盘输入

    package com.demo3; import java.util.Scanner; /* * 使用 Scanner 获取键盘输入供程序使用 * * 使用步骤: * A:导包 * import j ...

  9. PHP定界符{}的作用

    说明: PHP解析一个字符串为"Hello,$World"时会自动解析$World. {}是方便让PHP更快的查找,它告诉PHP这里面就是变量,不用再判断是否是变量了. 例子: $ ...

  10. testlink1.9.3测试管理工具安装

    一.下载testlink1.9.3rar安装包 下载地址:http://download.csdn.net/download/u010082992/7678491 二.安装IIS 在Server 20 ...