Как получить список всех адаптеров хранилища на хосте ESXi с помощью pyvmomi?

Недавно я начал использовать pyvmomi для автоматизации нескольких задач.

Мне нужно получить список адаптеров хранилища с помощью pyvmomi. Однако я не нашел примеров или API.


person Tejaswi    schedule 01.02.2019    source источник


Ответы (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()
person Jossef Harush    schedule 12.02.2019