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.");
  • 相关阅读:
    RedGlove 权限管理系统(1)权限概述
    SPQuery查询语法简要说明
    DataGridView使用技巧大全
    实战asp.net MVC+ADO.NET EntityFramework
    RedGlove 权限管理系统(2)功能模块设计
    C# 如果何从线程中操作控件
    PageHelper 类 和 ValidateHelper 类
    字符串帮助类
    XMLHelper 类
    Android中截取当前屏幕的功能
  • 原文地址:https://www.cnblogs.com/vincenshen/p/8799378.html
Copyright © 2011-2022 走看看