zoukankan      html  css  js  c++  java
  • vRO 添加已有磁盘到VM

    在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 = 15; 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 = 0; i < MAX_NUMBER_ATTACHED_VMDKS; i++) { if (usedUnitNumbers.indexOf(i) == -1) { 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,3); System.log("Reconfigure of VM '" + vcVm.name + "' successful.");
  • 相关阅读:
    Java中Volatile关键字详解
    java hashmap&concurrentHashmap源理
    java CAS和AQS
    jvm内存模型
    springAop源码分析
    一个项目设置两个git地址,并最终实现一次性同时推送到到两个git地址上的方法总结
    H5实现横向滚动的方法总结
    tab吸顶的神奇-- css粘性属性
    H5制作显示轮播图的方法Swiper
    微信H5中禁止分享好友及分享到朋友圈的方法
  • 原文地址:https://www.cnblogs.com/vincenshen/p/8799378.html
Copyright © 2011-2022 走看看