Как получить список всех адаптеров хранения на хосте ESXi, используя pyvmomi?
Недавно я начал использовать pyvmomi для автоматизации нескольких задач.
Мне нужно получить список адаптеров хранения, используя pyvmomi. Однако я не нашел примеров или API.
1 ответ
Решение
Я написал пакет python под названием vmwc, чтобы предоставить простой клиент VMWare SDK для Python (он в основном оборачивает 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()