天天看點

VMware vSphere Web Services SDK程式設計指南(十二 虛拟機配置)- 12.4 添加裝置至虛拟機

12.4 添加裝置至虛拟機

使用 VirtualMachineConfigSpec.deviceChange 屬性(一個 VirtualDeviceSpec)建立虛拟機時,你可以添加裝置至虛拟機,通過使用一個支援對象(backing object),你可以指定虛拟裝置應該映射到的主機裝置,一個 backing 對象表示與虛拟裝置相關聯的主機裝置。

■   Backing option objects – 可以通過提取相關的 backing 選項對象來查找主機支援哪些裝置。

■   Backing information object – backing 資訊對象允許你為虛拟裝置配置提供資料,通路一個 VirtualDeviceBackinInfo 對象如下所示:

VirtualMachineConfigSpec.deviceChange[].device.backing

要添加一個裝置至虛拟機,必須首先查明在相應的 ESX/ESXi 主機上哪些裝置是其所支援的,然後指定一個 VirtualDevice 對象,執行下面的這些任務添加裝置至虛拟機:

1   通過調用 QueryConfigOption 方法查明你的 ESXi 系統支援哪些裝置,通過 VirtualMachine.environmentBrowser 屬性查明哪些裝置你可以通路。該方法傳回一個指明 ESXi/ESXi 支援什麼裝置的VirtualMachineConfigOption 資料對象。例如,VirtualMachineConfigOption.hardwareOptions 包括有關所支援的 CPU 和記憶體及一組 VirtualDeviceOption 資料對象的資訊。

注意:不能使用 QueryConfigOption 方法來建立另外一個預設裝置的執行個體,如果試着添加一個預設裝置,如一個 IDE 控制器,伺服器會忽略該操作。

2   為裝置指定 backing 資訊,不同對象的對象定義的實際過程不同。如,對于一個 CD-ROM 透傳裝置,使用 VirtualCdromPassthroughBackingInfo 裝置,VirtualDevice.backing 屬性是一個由該裝置擴充的 VirtualDeviceBackingInfo 對象。

下面的代碼片段添加了一個 CD-ROM 透傳裝置:

VirtualCdromPassthroughBackingInfo vcpbi = new VirtualCdromPassthroughBackingInfo();
// Does the virtual device have exclusive access to the CD-ROM device?
vcpbi.setExclusive(false);
// Specifies the device name.
vcpbi.setDeviceName('cdrom0');
           

3   為裝置指定連接配接資訊

      VirtualDevice.connectable 屬性是一個 VirtualDeviceConnectInfo 資料對象,當虛拟機在運作時,該對象提供有關限制删除裝置的資訊。如果裝置不可移動,則該屬性為 null。

VirtualDeviceConnectInfo vdci = new VirtualDeviceConnectInfo();
// Allow the guest to control whether the virtual device is connected?
vdci.setAllowGuestControl(false);
// Is the device currently connected?
vdci.setConnected(true);
// Connect the device when the virtual machine starts?
vdci.setStartConnected(true);
           

4   定義 controller key,虛拟裝置 key,及單元号

      使用整數屬性定義這些項: controllerKey、key 和 unitNumber。可在 API 參考文檔中檢視 VirtualDevice 資料對象。

5   指定裝置資訊

      deviceInfo 屬性是一個 Description 資料對象,該對象有一個 name 屬性和一個 summary 屬性,可以為每個屬性提供一個字元值以描述裝置。

Description vddesc = new Description();
vddesc.setLabel('CD-ROM Device cdrom0');
vddesc.setSummary('The CD-ROM device for this virtual machine.');
           

6   将虛拟裝置指定為 VirtualDeviceConfigSpec 的 device 屬性。

7   将 VirtualDeviceConfigSpec 作為 deviceChange 屬性指定到 VirtualMachineConfigSpec 對象,該對象是傳入 Folder.CreateVM_Task 或 VirtualMachine.ReconfigVM_Task 方法的參數。

      下面是一個 CD-ROM 透傳裝置的完整代碼片段:

VirtualDevice vd = new VirtualDevice();
vd.setBacking(vcpbi);
vd.setConnectable(vdci);
vd.setControllerKey();
vd.setDeviceInfo(vddesc);
vd.setKey();
vd.setUnitNumber();
           

原文:

VMware vSphere 6.5 Documentation Center:Adding Devices to Virtual Machines

繼續閱讀