Search code examples
vmwarepyvmomi

Getting List of ESXs and system settings per ESX using pyVmomi


What are the parallel pyVmomi API for the following esxcli commands:

esxcli system settings advanced list --option /DataMover/HardwareAcceleratedMove
esxcli system settings advanced list --option /DataMover/HardwareAcceleratedInit
esxcli system settings advanced list --option /VMFS3/HardwareAcceleratedLocking
esxcli system settings advanced list --option /VMFS3/EnableBlockDelete
esxcli storage nmp device list

I would like to get this info for all ESXs that resides in a specific datacenter

Thanks,


Solution

  • import atexit
    
    from pyVim import connect
    from pyVmomi import vmodl
    from pyVmomi import vim
    
    import tools.cli as cli
    
    
    def print_host_info(host_machine):
        """
        Print information for a particular host machine 
        """
        print host_machine.config.network.dnsConfig.hostName
        print host_machine.config.product.version
        for option in host_machine.config.option:
             if option.key in ('VMFS3.UseATSForHBOnVMFS5','DataMover.HardwareAcceleratedInit','DataMover.HardwareAcceleratedMove','VMFS3.HardwareAcceleratedLocking','VMFS3.EnableBlockDelete') :
                 print option.key,option.value
    
    
    def main():
        """
        Simple command-line program for listing the hosts machines on a system.
        """
    
        args = cli.get_args()
    
        try:
            service_instance = connect.SmartConnect(host=args.host,
                                                    user=args.user,
                                                    pwd=args.password,
                                                    port=int(args.port))
    
            atexit.register(connect.Disconnect, service_instance)
    
            content = service_instance.RetrieveContent()
    
            container = content.rootFolder  # starting point to look into
            viewType = [vim.HostSystem]  # object types to look for
            recursive = True  # whether we should look into it recursively
            containerView = content.viewManager.CreateContainerView(
                container, viewType, recursive)
    
            children = containerView.view
            for child in children:
                print_host_info(child)
    
        except vmodl.MethodFault as error:
            print("Caught vmodl fault : " + error.msg)
            return -1
    
        return 0
    
    # Start program
    if __name__ == "__main__":
        main()