oslo_vmware 包

子包

子模块

oslo_vmware.api 模块

用于 VMware ESX/VC 服务器的会话和 API 调用管理。

此模块包含用于调用 VIM API 的类。它支持在出现连接问题或服务器 API 调用过载的情况下自动重新建立会话和重试 API 调用。

class oslo_vmware.api.RetryDecorator(max_retry_count=-1, inc_sleep_time=10, max_sleep_time=60, exceptions=())

基类: object

用于在建议的异常时重试函数的装饰器。

装饰的函数会重试给定的次数,并且重试之间的睡眠时间会递增,直到达到最大睡眠时间。如果最大重试次数设置为 -1,则会无限次调用装饰的函数,直到抛出异常,并且捕获的异常不在建议的异常列表中。

class oslo_vmware.api.VMwareAPISession(host, server_username, server_password, api_retry_count, task_poll_interval, scheme='https', create_session=True, wsdl_loc=None, pbm_wsdl_loc=None, port=443, cacert=None, insecure=True, pool_size=10, connection_timeout=None, op_id_prefix='oslo.vmware')

基类: object

与服务器建立会话并处理所有对其进行的调用。

示例
api_session = VMwareAPISession(‘10.1.2.3’, ‘administrator’,

‘password’, 10, 0.1, create_session=False, port=443)

result = api_session.invoke_api(vim_util, ‘get_objects’,

api_session.vim, ‘HostSystem’, 100)

invoke_api(module, method, *args, **kwargs)

用于调用 API 的包装方法。

在因会话过载或连接问题而引发异常的情况下,API 调用会被重试。

参数:
  • module – 对应 VIM API 调用的模块

  • method – 模块中对应 VIM API 调用的方法

  • args – 方法的参数

  • kwargs – 方法的关键字参数

返回值:

API 调用返回的响应

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

is_current_session_active()

检查当前会话是否活动。

返回值:

如果会话活动则为 True;否则为 False

logout()

注销并终止当前会话。

property pbm
pbm_wsdl_loc_set(pbm_wsdl_loc)
property vim
wait_for_lease_ready(lease)

等待给定租约准备就绪。

此方法在租约准备就绪时返回。如果发生任何错误,将引发适当的异常。

参数:

lease – 要检查的租约

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

wait_for_task(task)

等待给定任务完成并返回结果。

将轮询任务,直到其完成。如果任务成功完成,该方法将返回任务信息。如果发生任何错误,将引发适当的异常。

参数:

task – 任务的托管对象引用

返回值:

任务成功完成后返回的任务信息

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.constants 模块

VMware 生态系统中的共享常量。

oslo_vmware.dvs_util 模块

oslo_vmware.dvs_util.add_port_group(session, dvs_moref, name, vlan_id=None, trunk_mode=False)

向 dvs_moref 添加新的端口组

参数:
  • session – vCenter soap 会话

  • dvs_moref – 托管的 DVS 对象引用

  • name – 端口组的名称

  • vlan_id – 端口的 vlan_id

  • trunk_mode – 指示端口是否处于 trunk 模式或使用上面的特定标记

返回值:

新的端口组 moref

oslo_vmware.dvs_util.delete_port_group(session, portgroup_moref)

删除特定的端口组

参数:
  • session – vCenter soap 会话

  • portgroup_moref – 托管的端口组对象引用

oslo_vmware.dvs_util.get_dvs_moref(value)

获取托管的 DVS 对象引用。

参数:

value – DVS 托管对象的值

返回值:

具有给定值和类型‘VmwareDistributedVirtualSwitch’的托管对象引用

oslo_vmware.dvs_util.get_port_group_spec(session, name, vlan_id, trunk_mode=False)

获取分布式端口组的端口组规范

参数:
  • session – vCenter soap 会话

  • name – 端口组的名称

  • vlan_id – 端口的 vlan_id

  • trunk_mode – 指示端口是否处于 trunk 模式或使用上面的特定标记

返回值:

端口组的配置。

oslo_vmware.dvs_util.get_portgroups(session, dvs_moref)

获取 dvs_moref 上所有配置的端口组

参数:
  • session – vCenter soap 会话

  • dvs_moref – 托管的 DVS 对象引用

返回值:

元组列表,格式如下:(端口组名称, 端口组 moref)

oslo_vmware.dvs_util.get_trunk_vlan_spec(session, start=0, end=4094)

获取端口组 trunk vlan 规范。

参数:
  • session – vCenter soap 会话

  • start – 起始 ID

  • end – 结束 ID

返回值:

端口使用 trunk 模式时的配置。这允许访客机管理 vlan ID。

oslo_vmware.dvs_util.get_vlan_spec(session, vlan_id)

获取端口组 vlan 规范。

参数:
  • session – vCenter soap 会话

  • vlan_id – 端口的 vlan_id

返回值:

当端口使用单个 vlan_id 时的配置

oslo_vmware.exceptions 模块

异常定义。

exception oslo_vmware.exceptions.AlreadyExistsException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 409
msg_fmt = 'Resource already exists.'
exception oslo_vmware.exceptions.CannotDeleteFileException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 403
msg_fmt = 'Cannot delete file.'
exception oslo_vmware.exceptions.DuplicateName(message=None, cause=None, details=None, **kwargs)

Bases: VimException

msg_fmt = 'Duplicate name.'
exception oslo_vmware.exceptions.FileAlreadyExistsException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 409
msg_fmt = 'File already exists.'
exception oslo_vmware.exceptions.FileFaultException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 409
msg_fmt = 'File fault.'
exception oslo_vmware.exceptions.FileLockedException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 403
msg_fmt = 'File locked.'
exception oslo_vmware.exceptions.FileNotFoundException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 404
msg_fmt = 'File not found.'
exception oslo_vmware.exceptions.ImageTransferException(message, cause=None)

Bases: VMwareDriverException

在图像传输期间发生错误时抛出。

exception oslo_vmware.exceptions.InvalidPowerStateException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 409
msg_fmt = 'Invalid power state.'
exception oslo_vmware.exceptions.InvalidPropertyException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 400
msg_fmt = 'Invalid property.'
exception oslo_vmware.exceptions.ManagedObjectNotFoundException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 404
msg_fmt = 'Managed object not found.'
exception oslo_vmware.exceptions.MissingParameter(message=None, details=None, **kwargs)

Bases: VMwareDriverException

msg_fmt = 'Missing parameter : %(param)s'
exception oslo_vmware.exceptions.NoDiskSpaceException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

msg_fmt = 'Insufficient disk space.'
exception oslo_vmware.exceptions.NoPermissionException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 403
msg_fmt = 'No Permission.'
exception oslo_vmware.exceptions.NotAuthenticatedException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

code = 403
msg_fmt = 'Not Authenticated.'
exception oslo_vmware.exceptions.TaskInProgress(message=None, cause=None, details=None, **kwargs)

Bases: VimException

msg_fmt = 'Entity has another operation in process.'
exception oslo_vmware.exceptions.ToolsUnavailableException(message=None, cause=None, details=None, **kwargs)

Bases: VimException

msg_fmt = 'VMware Tools is not running.'
exception oslo_vmware.exceptions.UseLinkedCloneConfigurationFault(message=None, details=None, **kwargs)

Bases: VMwareDriverConfigurationException

msg_fmt = 'No default value for use_linked_clone found.'
exception oslo_vmware.exceptions.VMwareDriverConfigurationException(message=None, details=None, **kwargs)

Bases: VMwareDriverException

所有配置异常的基类。

msg_fmt = 'VMware Driver configuration fault.'
exception oslo_vmware.exceptions.VMwareDriverException(message=None, details=None, **kwargs)

基础: Exception

oslo.vmware 的基类异常

要正确使用此类,请继承它并定义一个 ‘msg_fmt’ 属性。该 msg_fmt 将使用传递给构造函数的关键字参数进行打印。

property description
property msg
msg_fmt = 'An unknown exception occurred.'
exception oslo_vmware.exceptions.VimAttributeException(message, cause=None)

Bases: VMwareDriverException

当找不到特定属性时抛出。

exception oslo_vmware.exceptions.VimConnectionException(message, cause=None)

Bases: VMwareDriverException

当出现连接问题时抛出。

exception oslo_vmware.exceptions.VimException(message=None, cause=None, details=None, **kwargs)

Bases: VMwareDriverException

所有 VIM 相关异常的基类。

exception oslo_vmware.exceptions.VimFaultException(fault_list, message, cause=None, details=None)

Bases: VimException

当存在未识别的 VIM 故障时抛出的异常。

property description
exception oslo_vmware.exceptions.VimSessionOverLoadException(message, cause=None)

Bases: VMwareDriverException

当 VMware 服务器出现 API 调用过载时抛出。

oslo_vmware.exceptions.get_fault_class(name)

获取 VimException 的命名子类。

oslo_vmware.exceptions.register_fault_class(name, exception)
oslo_vmware.exceptions.translate_fault(localized_method_fault, excep_msg=None)

生成正确的 VimException 子类对象,

该异常基于 vmodl.LocalizedMethodFault。

参数:

excep_msg – 要设置给异常的消息。默认为故障的 localizedMessage。

oslo_vmware.image_transfer 模块

在 ESX/VC 和镜像服务之间进行镜像传输的函数和类。

oslo_vmware.image_transfer.copy_stream_optimized_disk(context, timeout_secs, write_handle, **kwargs)

将虚拟磁盘从 VMware 服务器复制到给定的写入句柄。

参数:
  • context – 上下文

  • timeout_secs – 等待复制完成的秒数

  • write_handle – 复制目标

  • kwargs – 配置源 VMDK 读取句柄的关键字参数

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException, ImageTransferException, ValueError

oslo_vmware.image_transfer.download_file(read_handle, host, port, dc_name, ds_name, cookies, upload_file_path, file_size, cacerts, timeout_secs)

将文件下载到 VMware 服务器。

参数:
  • read_handle – 文件读取句柄

  • host – VMware 服务器主机名或 IP 地址

  • port – VMware 服务器端口号

  • dc_name – 包含目标数据存储的 datacentre 名称

  • ds_name – 目标数据存储的名称

  • cookies – 在与 VMware 服务器建立 HTTP 连接时用于构建 cookie 头的 cookie

  • upload_file_path – 目标数据存储文件路径

  • file_size – 源文件大小

  • cacerts – 用于 SSL 验证的 CA 捆绑文件

  • timeout_secs – 等待下载完成的秒数

oslo_vmware.image_transfer.download_flat_image(context, timeout_secs, image_service, image_id, **kwargs)

将平面镜像从镜像服务下载到 VMware 服务器。

参数:
  • context – 镜像服务写入上下文

  • timeout_secs – 等待下载完成的秒数

  • image_service – 镜像服务句柄

  • image_id – 要下载的镜像的 ID

  • kwargs – 配置目标文件写入句柄的关键字参数

引发:

VimConnectionException, ImageTransferException, ValueError

oslo_vmware.image_transfer.download_image(image, image_meta, session, datastore, rel_path, bypass=True, timeout_secs=7200)

将镜像传输到数据存储。

参数:
  • image – 类文件迭代器

  • image_meta – 镜像元数据

  • session – VMwareAPISession 对象

  • datastore – Datastore 对象

  • rel_path – 文件将在数据存储中存储的路径

  • bypass – 如果设置为 True,则绕过 vCenter 下载镜像

  • timeout_secs – 等待传输完成的秒数

oslo_vmware.image_transfer.download_stream_optimized_data(context, timeout_secs, read_handle, **kwargs)

将流优化数据下载到 VMware 服务器。

参数:
  • context – 镜像服务写入上下文

  • timeout_secs – 等待下载完成的秒数

  • read_handle – 用于读取镜像数据的句柄

  • kwargs – 配置目标 VMDK 写入句柄的关键字参数

返回值:

为导入 VMware 服务器而创建的 VM 的托管对象引用

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException, ImageTransferException, ValueError

oslo_vmware.image_transfer.download_stream_optimized_image(context, timeout_secs, image_service, image_id, **kwargs)

将流优化镜像从镜像服务下载到 VMware 服务器。

参数:
  • context – 镜像服务写入上下文

  • timeout_secs – 等待下载完成的秒数

  • image_service – 镜像服务句柄

  • image_id – 要下载的镜像的 ID

  • kwargs – 配置目标 VMDK 写入句柄的关键字参数

返回值:

为导入 VMware 服务器而创建的 VM 的托管对象引用

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException, ImageTransferException, ValueError

oslo_vmware.image_transfer.upload_image(context, timeout_secs, image_service, image_id, owner_id, **kwargs)

将 VM 的磁盘文件上传到镜像服务。

参数:
  • context – 镜像服务写入上下文

  • timeout_secs – 等待上传完成的秒数

  • image_service – 镜像服务句柄

  • image_id – 上传目标镜像 ID

  • kwargs – 配置源 VMDK 读取句柄的关键字参数

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException, ImageTransferException, ValueError

oslo_vmware.image_util 模块

oslo_vmware.image_util.get_vmdk_name_from_ovf(ovf_handle)

从给定的 ovf 描述符中获取 vmdk 名称。

oslo_vmware.pbm 模块

VMware PBM 服务客户端和 PBM 相关实用方法

PBM 用于 VMware 数据存储中的基于策略的放置。更多详细信息请参阅 http://goo.gl/GR2o6U

class oslo_vmware.pbm.Pbm(protocol='https', host='localhost', port=443, wsdl_url=None, cacert=None, insecure=True, pool_maxsize=10, connection_timeout=None, op_id_prefix='oslo.vmware')

Bases: Service

提供对存储策略 API 访问的服务类。

retrieve_service_content()

在 SOAP 头中设置指定的 vCenter 会话 cookie

参数:

cookie – 要设置的 cookie

oslo_vmware.pbm.convert_datastores_to_hubs(pbm_client_factory, datastores)

将给定的数据存储 morefs 转换为 PbmPlacementHub morefs。

参数:
  • pbm_client_factory – 用于创建 PBM API 输入规范的工厂

  • datastores – 数据存储 morefs 列表

返回值:

PbmPlacementHub morefs 列表

oslo_vmware.pbm.filter_datastores_by_hubs(hubs, datastores)

获取与给定 hub 列表对应的过滤后的数据存储子集。

参数:
  • hubs – PbmPlacementHub morefs 列表

  • datastores – 所有候选数据存储

返回值:

对应于给定 hub 列表的数据存储子集

oslo_vmware.pbm.filter_hubs_by_profile(session, hubs, profile_id)

过滤并返回与给定配置文件匹配的 hub。

参数:
  • hubs – PbmPlacementHub morefs

  • profile_id – 配置文件 ID

返回值:

与给定配置文件匹配的 hub 子集

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.pbm.get_all_profiles(session)

获取 VC 服务器中定义的所有配置文件。

返回值:

PbmProfile 数据对象

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.pbm.get_pbm_wsdl_location(vc_version)

返回与 VC 版本对应的 PBM WSDL 文件位置。

参数:

vc_version – 点分隔的版本字符串。例如,“1.2”。

返回值:

pbm wsdl 文件位置。

oslo_vmware.pbm.get_profile_id_by_name(session, profile_name)

获取与给定配置文件名称对应的配置文件 UUID。

参数:

profile_name – 需要检索 UUID 的配置文件名称

返回值:

配置文件 UUID 字符串或 None(如果未找到配置文件)

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.pbm.get_profiles(session, vm)

查询与给定 VM 关联的存储配置文件。

参数:
  • session – VMwareAPISession 实例

  • vm – vm 引用

返回值:

配置文件 ID

oslo_vmware.pbm.get_profiles_by_ids(session, profile_ids)

按 ID 获取存储配置文件。

参数:
  • session – VMwareAPISession 实例

  • profile_ids – 配置文件 ID

返回值:

配置文件对象

oslo_vmware.rw_handles 模块

定义用于镜像传输的读写句柄的类。

此模块定义了各种用于在 VMware 服务器中读取和写入文件(包括 VMDK 文件)的类。它还包含一个用于从 glance 服务器读取镜像的类。

class oslo_vmware.rw_handles.FileHandle(file_handle)

基类: object

通过 HTTP 访问 VMware 服务器文件(包括 VMDK)的基类。

此类包装了后备文件句柄,并为各种子类提供了实用方法。

close()

关闭文件句柄。

fileno()

默认情况下,返回整数文件描述符,不支持此操作并引发 IOError

flush()

刷新内部缓冲区

get_size()

获取要读取文件的大小。

引发:

NotImplementedError

read(chunk_size)

读取一块数据。

参数:

chunk_size – 读取块大小

引发:

NotImplementedError

seek(offset)

将文件当前位置设置为偏移量

参数:

offset – 偏移量

tell()

获取文件句柄的位置

返回值:

position

write(data)

将数据写入文件。

参数:

data – 要写入的数据

引发:

NotImplementedError

class oslo_vmware.rw_handles.FileReadHandle(host_or_url, port=None, data_center_name=None, datastore_name=None, cookies=None, file_path=None, scheme='https', cacerts=False, thumbprint=None)

Bases: FileHandle

VMware 服务器中的文件读取句柄。

close()

关闭连接。

get_size()

获取要读取文件的大小。

引发:

NotImplementedError

read(length)

从文件中读取数据。 :param length: 要读取的数据量 :raises: VimConnectionException, VimException

class oslo_vmware.rw_handles.FileWriteHandle(host_or_url, port=None, data_center_name=None, datastore_name=None, cookies=None, file_path=None, file_size=None, scheme='https', cacerts=False, thumbprint=None)

Bases: FileHandle

VMware 服务器中的文件写入句柄。

close()

获取响应并关闭连接。

write(data)

将数据写入文件。

参数:

data – 要写入的数据

引发:

VimConnectionException, VimException

class oslo_vmware.rw_handles.ImageReadHandle(glance_read_iter)

基类: object

Glance 镜像的读取句柄。

close()

关闭读取句柄。

这是一个 NOP。

get_next()

从镜像迭代器中获取下一个项。

read(chunk_size)

从镜像数据迭代器中读取一项。

输入块大小被忽略,因为客户端 ImageBodyIterator 使用自己的块大小。

class oslo_vmware.rw_handles.VmdkHandle(session, lease, url, file_handle)

Bases: FileHandle

基于 HttpNfcLease 的 VMDK 句柄。

update_progress()

将进度更新到 lease。

此回调到 lease 对于在长时间运行的写入/读取操作中保持 lease 的有效性至关重要。

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

class oslo_vmware.rw_handles.VmdkReadHandle(session, host, port, vm_ref, vmdk_path, vmdk_size)

Bases: VmdkHandle

基于 HttpNfcLease 的 VMDK 读取句柄。

close()

释放 lease 并关闭连接。

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

read(chunk_size=65536)

从 VMDK 文件中读取一块数据。

参数:

chunk_size – 读取块的大小

返回值:

数据

引发:

VimException

tell()

获取文件句柄的位置

返回值:

position

class oslo_vmware.rw_handles.VmdkWriteHandle(session, host, port, rp_ref, vm_folder_ref, import_spec, vmdk_size, http_method='PUT')

Bases: VmdkHandle

基于 HttpNfcLease 的 VMDK 写入句柄。

此类在指定的资源池中创建 vApp 并上传虚拟磁盘内容。

close()

释放 lease 并关闭连接。

引发:

VimAttributeException, VimSessionOverLoadException, VimConnectionException

get_imported_vm()

“获取用于导入的 VM 的托管对象引用。

引发:

VimException

tell()

获取文件句柄的位置

返回值:

position

write(data)

将数据写入文件。

参数:

data – 要写入的数据

引发:

VimConnectionException, VimException

oslo_vmware.service 模块

提供 vSphere 服务访问的通用类。

class oslo_vmware.service.CompatibilitySudsClient(*args, **kwargs)

Bases: Client

带有附加 cookiejar 属性的 suds 客户端

cookiejar 属性允许读取/设置底层传输使用的 cookiejar。

property cookiejar
class oslo_vmware.service.LocalFileAdapter(pool_maxsize=10)

继承自 HTTPAdapter

本地文件的传输适配器。

参见 http://stackoverflow.com/a/22989322

send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)

发送本地文件请求。

class oslo_vmware.service.MemoryCache

Bases: ObjectCache

get(key)

检索键的值或 None。

put(key, value, time=3600)

设置键的值。

class oslo_vmware.service.RequestsTransport(cacert=None, insecure=True, pool_maxsize=10, connection_timeout=None)

Bases: Transport

open(request)

打开指定请求中的 URL。

@param request: 传输请求。 @type request: L{Request} @return: 输入流。 @rtype: stream @raise TransportError: 在所有传输错误时。

send(request)
发送 SOAP 消息。实现应处理
  • 代理

  • I{HTTP} 头

  • Cookie

  • 发送消息

  • 将异常代理为 L{TransportError}

@param request: 传输请求。 @type request: L{Request} @return: 响应 @rtype: L{Reply} @raise TransportError: 在所有传输错误时。

class oslo_vmware.service.Response(stream, status=200, headers=None)

继承自 BytesIO

带有输入流作为源的响应。

get_all(name, default)
getheaders(name)
info()
property msg
read(chunk_size, **kwargs)

最多读取 size 字节,返回为 bytes 对象。

如果 size 参数为负,则读取直到 EOF。在 EOF 处返回一个空的 bytes 对象。

release_conn()
class oslo_vmware.service.Service(wsdl_url=None, soap_url=None, cacert=None, insecure=True, pool_maxsize=10, connection_timeout=None, op_id_prefix='oslo.vmware')

基类: object

包含调用 vSphere 服务通用功能的基类

static build_base_url(protocol, host, port)

返回 vCenter 会话 cookie。

property service_content
class oslo_vmware.service.ServiceMessagePlugin

Bases: MessagePlugin

处理调用 VI SDK 时的一些特殊情况的 Suds 插件。

EMPTY_ELEMENTS = ['VirtualMachineEmptyProfileSpec']
add_attribute_for_value(node)

处理 AnyType 的辅助函数。

Suds 不能正确处理 AnyType。但当使用 AnyType 时,VI SDK 要求设置 type 属性。

参数:

node – XML 值节点

marshalled(context)

在发送信封文档之前修改它。

此方法为插件提供了在发送到服务器之前修剪空节点和修复节点的机会。

参数:

context – 发送上下文

prune(el)
class oslo_vmware.service.SudsLogFilter(name='')

Bases: Filter

用于屏蔽/截断 suds 日志中 vCenter 凭证的过滤器。

filter(record)

确定是否应记录指定的记录。

返回 True 表示应记录记录,否则返回 False。如果合适,记录可以就地修改。

oslo_vmware.version 模块

oslo_vmware.vim 模块

class oslo_vmware.vim.Vim(protocol='https', host='localhost', port=None, wsdl_url=None, cacert=None, insecure=True, pool_maxsize=10, connection_timeout=None, op_id_prefix='oslo.vmware')

Bases: Service

提供 VIM API 访问的服务类。

retrieve_service_content()

oslo_vmware.vim_util 模块

VMware API 工具模块。

class oslo_vmware.vim_util.WithRetrieval(vim, retrieve_result)

基类: object

用于检索结果的上下文。

此上下文提供一个迭代器来检索结果并在 __exit__ 时取消(在需要时)检索操作。

示例

with WithRetrieval(vim, retrieve_result) as objects
for obj in objects

# 使用 obj

oslo_vmware.vim_util.build_object_spec(client_factory, root_folder, traversal_specs)

构建对象规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • root_folder – 根文件夹引用;遍历的起点

  • traversal_specs – 遍历所需的过滤规范

返回值:

对象规范

oslo_vmware.vim_util.build_property_filter_spec(client_factory, property_specs, object_specs)

构建属性过滤器规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • property_specs – 要为过滤对象收集的属性规范

  • object_specs – 用于识别要过滤的对象的对象规范

返回值:

属性过滤器规范

oslo_vmware.vim_util.build_property_spec(client_factory, type_='VirtualMachine', properties_to_collect=None, all_properties=False)

构建属性规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • type – 托管对象的类型

  • properties_to_collect – 在遍历过滤时要收集的托管对象属性的名称

  • all_properties – 是否需要收集托管对象的全部属性

返回值:

属性规范

oslo_vmware.vim_util.build_recursive_traversal_spec(client_factory)

构建递归遍历规范,以遍历托管对象层次结构。

参数:

client_factory – 用于获取 API 输入规范的工厂

返回值:

递归遍历规范

oslo_vmware.vim_util.build_selection_spec(client_factory, name)

构建选择规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • name – 选择规范的名称

返回值:

选择规范

oslo_vmware.vim_util.build_traversal_spec(client_factory, name, type_, path, skip, select_set)

构建遍历规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • name – 遍历规范的名称

  • type – 托管对象的类型

  • path – 托管对象的属性路径

  • skip – 是否过滤 param path 标识的对象

  • select_set – 选择规范的集合,用于指定要过滤的附加对象

返回值:

遍历规范

oslo_vmware.vim_util.cancel_retrieval(vim, retrieve_result)

如果需要,取消检索操作。

参数:
  • vim – Vim 对象

  • retrieve_result – RetrievePropertiesEx API 调用的结果

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.continue_retrieval(vim, retrieve_result)

继续检索结果(如果可用)。

参数:
  • vim – Vim 对象

  • retrieve_result – RetrievePropertiesEx API 调用的结果

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.find_extension(vim, key)

查找现有扩展。

参数:
  • vim – Vim 对象

  • key – 要搜索的键

返回值:

数据对象 Extension 或 None

oslo_vmware.vim_util.get_http_service_request_spec(client_factory, method, uri)

构建 HTTP 服务请求规范。

参数:
  • client_factory – 用于获取 API 输入规范的工厂

  • method – HTTP 方法 (GET, POST, PUT)

  • uri – 目标 URL

oslo_vmware.vim_util.get_inventory_path(vim, entity_ref, max_objects=100)

获取托管实体的清单路径。

参数:
  • vim – Vim 对象

  • entity_ref – 托管实体引用

  • max_objects – 每次调用最多应返回的对象数

返回值:

entity_ref 的清单路径

oslo_vmware.vim_util.get_moref(value, type_)

获取托管对象引用。

参数:
  • value – 托管对象的值

  • type – 托管对象的类型

返回值:

具有给定值和类型的托管对象引用

oslo_vmware.vim_util.get_moref_type(moref)

获取托管对象的类型

此函数接受托管对象引用(ManagedObjectReference)的字符串表示形式,例如 VirtualMachine:vm-123,但也能从 API 返回的实际对象中提取它。

oslo_vmware.vim_util.get_moref_value(moref)

获取托管对象引用的值/ID

此函数接受托管对象引用的字符串表示形式,例如 VirtualMachine:vm-123 或仅 vm-123,但也能从 API 返回的实际对象中提取它。

oslo_vmware.vim_util.get_obj_spec(client_factory, obj, select_set=None)

构建 Object Spec 对象。

oslo_vmware.vim_util.get_object_properties(vim, moref, properties_to_collect, skip_op_id=False)

获取给定托管对象的属性。

参数:
  • vim – Vim 对象

  • moref – 托管对象引用

  • properties_to_collect – 要收集的托管对象属性的名称

  • skip_op_id – 是否跳过在请求中放入 opID

返回值:

给定托管对象的属性

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.get_object_properties_dict(vim, moref, properties_to_collect)

将给定托管对象的属性作为字典获取。

参数:
  • vim – Vim 对象

  • moref – 托管对象引用

  • properties_to_collect – 要收集的托管对象属性的名称

返回值:

给定托管对象的属性字典

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.get_object_property(vim, moref, property_name, skip_op_id=False)

获取给定托管对象的属性。

参数:
  • vim – Vim 对象

  • moref – 托管对象引用

  • property_name – 要检索的属性名称

  • skip_op_id – 是否跳过在请求中放入 opID

返回值:

给定托管对象的属性

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.get_objects(vim, type_, max_objects, properties_to_collect=None, all_properties=False)

获取给定类型的全部托管对象引用。

继续或取消检索是调用者的责任。

参数:
  • vim – Vim 对象

  • type – 托管对象的类型

  • max_objects – 每次调用最多应返回的对象数

  • properties_to_collect – 要收集的托管对象属性的名称

  • all_properties – 是否需要收集托管对象的全部属性

返回值:

给定类型的全部托管对象引用

引发:

VimException, VimFaultException, VimAttributeException, VimSessionOverLoadException, VimConnectionException

oslo_vmware.vim_util.get_prop_filter_spec(client_factory, obj_spec, prop_spec)

构建 Property Filter Spec 对象。

oslo_vmware.vim_util.get_prop_spec(client_factory, spec_type, properties)

构建 Property Spec 对象。

oslo_vmware.vim_util.get_properties_for_a_collection_of_objects(vim, type_, obj_list, properties, max_objects=None)

获取指定类型的对象集合的属性列表。

oslo_vmware.vim_util.get_vc_version(session)

返回点分 vCenter 版本字符串。例如,“1.2”。

参数:

session – vCenter soap 会话

返回值:

vCenter 版本

oslo_vmware.vim_util.propset_dict(propset)

将 propset 列表转换为字典

PropSet 是 VMware API 返回的 ObjectContent 对象上的可选属性。

您可以在此处阅读更多信息:| http://pubs.vmware.com/vsphere-51/index.jsp | #com.vmware.wssdk.apiref.doc/ | vmodl.query.PropertyCollector.ObjectContent.html

参数:

propset – 来自 ObjectContent 的属性“集”

返回值:

表示属性集的字典

oslo_vmware.vim_util.register_extension(vim, key, type, label='OpenStack', summary='OpenStack services', version='1.0')

创建新扩展。

参数:
  • vim – Vim 对象

  • key – 扩展的键

  • type – 托管实体类型,由扩展定义。这与虚拟机或 vApp 配置中的 type 字段匹配

  • label – 显示标签

  • summary – 摘要描述

  • version – 扩展版本号,表示为点分字符串

oslo_vmware.vim_util.serialize_object(obj)

将 Suds 对象转换为可序列化格式 - 字典。

oslo_vmware.vim_util.storage_placement_spec(client_factory, dsc_ref, type, clone_spec=None, config_spec=None, relocate_spec=None, vm_ref=None, folder=None, clone_name=None, res_pool_ref=None, host_ref=None)

模块内容