了解pyvmomi中的vim

2024-09-30 08:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想了解pyvmomi中的vim。
我知道vim是这样导入的:from pyvmomi import vim
我试图找到vim在pyvmomi中的定义,但是我还没有找到。在

我尝试了以下步骤:

>>> inspect.getfile(vim)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/inspect.py", line 420, in getfile
    'function, traceback, frame, or code object'.format(object
TypeError: <pyVmomi.VmomiSupport.LazyModule object at 0xb50690> is not a     module, class, method, function, traceback, frame, or code object
>>> globals()['vim']
<pyVmomi.VmomiSupport.LazyModule object at 0xb50690>
>>> locals()['vim']
<pyVmomi.VmomiSupport.LazyModule object at 0xb50690>
>>> vim

然而,我不知道vim在LazyModule中是如何定义的

我想了解
https://github.com/vmware/pyvmomi/tree/master/docs/vim 最初在pyVmomi中定义。在


Tags: in定义objectlinefunctionvimatfile
1条回答
网友
1楼 · 发布于 2024-09-30 08:29:47

这些对象大多在这里找到:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/ServerObjects.pyhttps://github.com/vmware/pyvmomi/blob/master/pyVmomi/QueryTypes.pyhttps://github.com/vmware/pyvmomi/blob/master/pyVmomi/CoreTypes.py

最近添加了SMS支持,这些SMS对象位于此处:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/SmsObjects.py

SPBM对象在这里:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/PbmObjects.py

这些对象是动态创建的,不应编辑此文件的内容,因为它是由VMWare使用其内部构建系统自动生成的。对象是使用VmomiSupport中的工具创建的,VmomiSupport位于此处:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/VmomiSupport.py

要进一步扩展vim在何处以及如何定义,让我们看看服务器对象.py公司名称:

CreateDataType("vim.AboutInfo", "AboutInfo", "vmodl.DynamicData", "vim.version.version1", [("name", "string", "vim.version.version1", 0), ("fullName", "string", "vim.version.version1", 0), ("vendor", "string", "vim.version.version1", 0), ("version", "string", "vim.version.version1", 0), ("build", "string", "vim.version.version1", 0), ("localeVersion", "string", "vim.version.version1", F_OPTIONAL), ("localeBuild", "string", "vim.version.version1", F_OPTIONAL), ("osType", "string", "vim.version.version1", 0), ("productLineId", "string", "vim.version.version1", 0), ("apiType", "string", "vim.version.version1", 0), ("apiVersion", "string", "vim.version.version1", 0), ("instanceUuid", "string", "vim.version.version5", F_OPTIONAL), ("licenseProductName", "string", "vim.version.version5", F_OPTIONAL), ("licenseProductVersion", "string", "vim.version.version5", F_OPTIONAL)])

这里使用从VmomiSupport导入的CreateDataType方法。此方法需要几个参数:

  1. vmodlName(VMware托管对象设计语言名称)
  2. wsdlName(类型的WSDL名称)
  3. parent(父类型的VMODL名称。ie是否扩展了其他类)
  4. 版本(类型的版本。这不是vSphere版本更是API版本。这些版本可以在WSDL中找到)
  5. 道具(类型属性)

到目前为止,在我们的示例中,vmodlName有vim.AboutInfo。其中的vim部分只是AboutInfo对象的名称空间。在

接下来,我们将AboutInfo作为WSDL名称。这只是对象的名称。在

接下来是vmodl.DynamicData。这是AboutInfo扩展的类。请参阅此处的SOAP文档:http://www.yavijava.com/docs/vim.AboutInfo.html

下一个是vim.version.version1,该版本对应于支持的API版本。在

最后是道具部分。这是一个元组列表,描述对象的各种属性及其类型,以及它们是否可选。这些属性也可以在上面的文档中看到。在

解析器使用所有这些信息为您动态地构建对象,并构建发送到服务器的XML有效负载。在

所以要回答什么是vim以及它是如何定义的:vim只是vSphere知道的服务器端对象的名称空间,它在pyVmomi中使用与soapwsdl/Documentation相对应的vmodlName来定义它(请参阅该链接中的vim.AboutInfo.html

相关问题 更多 >

    热门问题