【问题标题】:Check if a PyVmomi object is of a certain class in python检查 PyVmomi 对象是否属于 python 中的某个类
【发布时间】:2020-12-14 20:39:35
【问题描述】:

我正在尝试弄清楚如何检查对象是否属于特定类,它适用于“str”、“int”等类,但不适用于模块中的自定义类。

这是我尝试过的。

In [36]: type(cluster)                                                                                                                                                                                 
Out[36]: pyVmomi.VmomiSupport.vim.ComputeResource

In [37]: type(cluster) == pyVmomi.VmomiSupport.vim.ComputeResource                                                                                                                                     
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/source/modregk_bga/eti-data-pipelines/datapipes/lm-sql-capacity/libs/vcenser.py in <module>
----> 1 type(cluster) == pyVmomi.VmomiSupport.vim.ComputeResource

AttributeError: module 'pyVmomi.VmomiSupport' has no attribute 'vim'

In [38]: type ("str")                                                                                                                                                                                  
Out[38]: str

In [39]: type ("str") == str                                                                                                                                                                           
Out[39]: True

In [40]: isinstance(cluster.summary, pyVmomi.VmomiSupport.vim.ComputeResource.Summary)                                                                                                                 
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/source/modregk_bga/eti-data-pipelines/datapipes/lm-sql-capacity/libs/vcenser.py in <module>
----> 1 isinstance(cluster.summary, pyVmomi.VmomiSupport.vim.ComputeResource.Summary)

AttributeError: module 'pyVmomi.VmomiSupport' has no attribute 'vim'

In [41]: 

【问题讨论】:

    标签: python pyvmomi


    【解决方案1】:

    通过使用isinstance,它可以做你想做的事。
    例如,这里使用 isinstance 检查对象是否为集群。

    #!/usr/bin/env python
    from pyVim.connect import SmartConnect, Disconnect
    from pyVmomi import vim
    import ssl
    import atexit
    
    host = 'change me to vCenter IP or hostname'
    username = 'administrator@vsphere.local'
    password = 'change me to user password'
    mob = vim.ComputeResource
    
    if __name__ == "__main__":
        context = None
        if hasattr(ssl, '_create_unverified_context'):
            context = ssl._create_unverified_context()
    
        si = SmartConnect(host=host,
                          user=username,
                          pwd=password,
                          sslContext=context)
    
        atexit.register(Disconnect, si)
    
        content = si.content
    
        mob_list = content.viewManager.CreateContainerView(content.rootFolder,
                                                           [mob],
                                                           True)
    
        for mob in mob_list.view:
            # Check if an object is the cluster
            if isinstance(mob, vim.ComputeResource):
                print("%s is Cluster object" % mob.name)
    

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      相关资源
      最近更新 更多