理解pyvmomi中的vim
Understand vim in pyvmomi
我想在pyvmomi中理解vim。
我知道 vim 是这样导入的:from pyvmomi import vim
我试图找到pyvmomi中定义vim的位置,但我还没有找到。
我尝试了以下步骤:
>>> 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 中定义。
大多数情况下,这些对象都可以在这里找到:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/ServerObjects.py 和
https://github.com/vmware/pyvmomi/blob/master/pyVmomi/QueryTypes.py 和
https://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 中的工具创建的,位于此处:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/VmomiSupport.py
要进一步了解 vim 的定义位置和方式,请查看 ServerObjects.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
方法。此方法需要几个参数:
- vmodlName(VMware 托管对象设计语言名称)
- wsdlName(类型的 WSDL 名称)
- parent(父类型的 VMODL 名称。即它是否扩展了其他一些 class)
- 版本(类型的版本。这不是 vSphere 版本更多 API 版本。这些版本在 WSDL 中找到)
- props(类型的属性)
到目前为止,对于我们的示例,我们有 vim.AboutInfo
作为 vmodlName。 vim
部分只是 AboutInfo
对象的命名空间。
接下来我们有 AboutInfo
作为 WSDL 名称。这只是对象的名称。
接下来是vmodl.DynamicData
。这是 AboutInfo
扩展的 class。请在此处查看 SOAP 文档:http://www.yavijava.com/docs/vim.AboutInfo.html
接下来是支持 API 版本的 vim.version.version1
。
最后是道具部分。这是一个元组列表,描述对象的各种属性及其类型以及它们是否可选。这些也可以,但可以在上面的文档 link 中看到,其中为对象定义了属性。
解析器使用所有这些信息为您动态构建对象,并构建您的 XML 有效负载并发送到服务器。
所以要回答什么是 vim 以及它是如何定义的:vim 只是 vSphere 知道的服务器端对象的命名空间,它在 pyVmomi 中使用 vmodlName
对应SOAPWSDL/Documentation(见link中的vim.AboutInfo.html
)
我想在pyvmomi中理解vim。
我知道 vim 是这样导入的:from pyvmomi import vim
我试图找到pyvmomi中定义vim的位置,但我还没有找到。
我尝试了以下步骤:
>>> 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 中定义。
大多数情况下,这些对象都可以在这里找到:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/ServerObjects.py 和 https://github.com/vmware/pyvmomi/blob/master/pyVmomi/QueryTypes.py 和 https://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 中的工具创建的,位于此处:https://github.com/vmware/pyvmomi/blob/master/pyVmomi/VmomiSupport.py
要进一步了解 vim 的定义位置和方式,请查看 ServerObjects.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
方法。此方法需要几个参数:
- vmodlName(VMware 托管对象设计语言名称)
- wsdlName(类型的 WSDL 名称)
- parent(父类型的 VMODL 名称。即它是否扩展了其他一些 class)
- 版本(类型的版本。这不是 vSphere 版本更多 API 版本。这些版本在 WSDL 中找到)
- props(类型的属性)
到目前为止,对于我们的示例,我们有 vim.AboutInfo
作为 vmodlName。 vim
部分只是 AboutInfo
对象的命名空间。
接下来我们有 AboutInfo
作为 WSDL 名称。这只是对象的名称。
接下来是vmodl.DynamicData
。这是 AboutInfo
扩展的 class。请在此处查看 SOAP 文档:http://www.yavijava.com/docs/vim.AboutInfo.html
接下来是支持 API 版本的 vim.version.version1
。
最后是道具部分。这是一个元组列表,描述对象的各种属性及其类型以及它们是否可选。这些也可以,但可以在上面的文档 link 中看到,其中为对象定义了属性。
解析器使用所有这些信息为您动态构建对象,并构建您的 XML 有效负载并发送到服务器。
所以要回答什么是 vim 以及它是如何定义的:vim 只是 vSphere 知道的服务器端对象的命名空间,它在 pyVmomi 中使用 vmodlName
对应SOAPWSDL/Documentation(见link中的vim.AboutInfo.html
)