如何使用 pyvmomi 检索 ESXi 主机上所有存储适配器的列表?
How to retrieve the list of all storage adapters on an ESXi host using pyvmomi?
我最近开始使用 pyvmomi 来自动执行一些任务。
我需要使用 pyvmomi 检索存储适配器列表。
但是,我没有找到示例或 API。
我写了一个名为 vmwc 的 python 包来为 Python 提供一个简单的 VMWare SDK 客户端(它基本上用高级功能包装了 pyvmomi)。
以下片段来自其源代码。该函数枚举ESXi的数据存储+磁盘信息(source)
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()
我最近开始使用 pyvmomi 来自动执行一些任务。
我需要使用 pyvmomi 检索存储适配器列表。 但是,我没有找到示例或 API。
我写了一个名为 vmwc 的 python 包来为 Python 提供一个简单的 VMWare SDK 客户端(它基本上用高级功能包装了 pyvmomi)。
以下片段来自其源代码。该函数枚举ESXi的数据存储+磁盘信息(source)
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()