如何使用 pyvmomi 检索 ESXi 主机上所有存储适配器的列表



我最近开始使用pyvmomi来自动化一些任务。

我需要使用 pyvmomi 检索存储适配器列表。但是,我没有找到示例或API。

我写了一个名为vmwc的python包来为Python提供一个简单的VMWare SDK客户端(它基本上用高级功能包装pyvmomi)。

以下代码片段来自其源代码。此函数枚举 ESXi 的数据存储 + 磁盘信息(源)

def get_datastores(self):
    # Search for all ESXi hosts
    objview = self._content.viewManager.CreateContainerView(self._content.rootFolder, [vim.HostSystem], True)
    esxi_hosts = objview.view
    objview.Destroy()
    for esxi_host in esxi_hosts:
        # All Filesystems on ESXi host
        storage_system = esxi_host.configManager.storageSystem
        host_file_sys_vol_mount_info = storage_system.fileSystemVolumeInfo.mountInfo
        for host_mount_info in host_file_sys_vol_mount_info:
            # Extract only VMFS volumes
            if host_mount_info.volume.type != "VMFS":
                continue
            datastore = {
                'name': host_mount_info.volume.name,
                'disks': [item.diskName for item in host_mount_info.volume.extent],
                'uuid': host_mount_info.volume.uuid,
                'capacity': host_mount_info.volume.capacity,
                'vmfs_version': host_mount_info.volume.version,
                'local': host_mount_info.volume.local,
                'ssd': host_mount_info.volume.ssd
            }
            yield datastore

顺便说一句,这就是您使用 vmwc 执行此操作的方式

#!/usr/bin/env python
from vmwc import VMWareClient

def main():
    host = '192.168.1.1'
    username = '<username>'
    password = '<password>'
    with VMWareClient(host, username, password) as client:
        for datastore in client.get_datastores():
            print (datastore)

if __name__ == '__main__':
    main()

最新更新