neutron_lib.plugins.ml2.api 模块

class neutron_lib.plugins.ml2.api.ExtensionDriver

基类: object

定义 ML2 扩展驱动程序的稳定抽象接口。

扩展驱动程序通过附加属性扩展 ML2 插件实现的核心资源。处理这些资源创建和更新操作的方法会验证并持久化通过 API 提供的扩展属性值。其他方法会将扩展属性的值添加到从 API 操作返回的资源字典中。

extend_network_dict(session, base_model, result)

将扩展属性添加到网络字典。

参数:
  • session – 数据库会话

  • base_model – 网络模型数据

  • result – 要扩展的网络字典

在会话的事务上下文中调用,以将此驱动程序定义的任何扩展属性添加到网络字典中,用于机制驱动程序调用和/或作为网络操作的结果返回。

extend_port_dict(session, base_model, result)

将扩展属性添加到端口字典。

参数:
  • session – 数据库会话

  • base_model – 端口模型数据

  • result – 要扩展的端口字典

在会话的事务上下文中调用,以将此驱动程序定义的任何扩展属性添加到端口字典中,用于机制驱动程序调用和/或作为端口操作的结果返回。

extend_subnet_dict(session, base_model, result)

将扩展属性添加到子网字典。

参数:
  • session – 数据库会话

  • base_model – 子网模型数据

  • result – 要扩展的子网字典

在会话的事务上下文中调用,以将此驱动程序定义的任何扩展属性添加到子网字典中,用于机制驱动程序调用和/或作为子网操作的结果返回。

property extension_alias

受支持的扩展别名。

返回标识此驱动程序支持的核心 API 扩展的别名。如果 API 扩展处理留给服务插件,并且我们只需要提供核心资源扩展和更新,则不要声明。

property extension_aliases

驱动程序支持的扩展别名列表。

返回一个别名列表,标识驱动程序支持的核心 API 扩展。默认情况下,这会返回 extension_alias 属性以实现向后兼容性。

abstract initialize()

执行驱动程序初始化。

在加载所有驱动程序并初始化数据库后调用。在调用此方法之前,不会调用下面定义的任何抽象方法。

process_create_network(plugin_context, data, result)

处理创建网络的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入网络数据的字典

  • result – 要扩展的网络字典

在 plugin_context.session 的事务上下文中调用,以验证和持久化此驱动程序定义的任何扩展网络属性。扩展属性值还必须添加到 result 中。

process_create_port(plugin_context, data, result)

处理创建端口的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入端口数据的字典

  • result – 要扩展的端口字典

在 plugin_context.session 的事务上下文中调用,以验证和持久化此驱动程序定义的任何扩展端口属性。扩展属性值还必须添加到 result 中。

process_create_subnet(plugin_context, data, result)

处理创建子网的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入子网数据的字典

  • result – 要扩展的子网字典

在 plugin_context.session 的事务上下文中调用,以验证和持久化此驱动程序定义的任何扩展子网属性。扩展属性值还必须添加到 result 中。

process_update_network(plugin_context, data, result)

处理更新网络的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入网络数据的字典

  • result – 要扩展的网络字典

在 plugin_context.session 的事务上下文中调用,以验证和更新此驱动程序定义的任何扩展网络属性。扩展属性值,无论是否更新,都必须添加到 result 中。

process_update_port(plugin_context, data, result)

处理更新端口的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入端口数据的字典

  • result – 要扩展的端口字典

在 plugin_context.session 的事务上下文中调用,以验证和更新此驱动程序定义的任何扩展端口属性。扩展属性值,无论是否更新,都必须添加到 result 中。

process_update_subnet(plugin_context, data, result)

处理更新子网的扩展属性。

参数:
  • plugin_context – 插件请求上下文

  • data – 传入子网数据的字典

  • result – 要扩展的子网字典

在 plugin_context.session 的事务上下文中调用,以验证和更新此驱动程序定义的任何扩展子网属性。扩展属性值,无论是否更新,都必须添加到 result 中。

class neutron_lib.plugins.ml2.api.ML2TypeDriver

继承自:_TypeDriverBase

定义 ML2 类型驱动程序的抽象接口。

ML2 类型驱动程序每个都支持提供程序和/或租户网络段的特定 network_type。类型驱动程序必须实现此抽象接口,该接口定义了插件使用驱动程序来管理与该类型相关的持久类型特定资源分配状态的 API。

网络段由使用上面定义的 NETWORK_TYPE、PHYSICAL_NETWORK 和 SEGMENTATION_ID 键的段字典表示,对应于提供程序属性。未来版本的 TypeDriver API 可能会添加额外的段字典键。对于特定的 network_type 不适用的属性可以排除或存储为 None。

ML2TypeDriver 将上下文作为参数传递给:- reserve_provider_segment - allocate_tenant_segment - release_segment - get_allocation

abstract allocate_tenant_segment(context, filters=None)

为新的租户网络段分配资源。

参数:
  • context – 包含 DB 会话的 neutron 上下文实例

  • filters – 用作搜索标准的字典

返回值:

使用上面定义的键的段字典

在会话的事务上下文中调用,以分配新的租户网络,通常从类型特定的资源池中。如果成功,则返回描述该段的段字典。如果无法分配租户网络段(即,不支持租户网络或资源池已耗尽),则返回 None。

abstract initialize_network_segment_range_support()

执行驱动程序网络段范围初始化。

如果在启用时初始化 network-segment-range 服务插件,则在加载所有驱动程序并初始化数据库后调用。这会在 Neutron 服务器启动/重新启动时重新加载 默认 网络段范围。

abstract release_segment(context, segment)

释放网络段。

参数:
  • context – 包含 DB 会话的 neutron 上下文实例

  • segment – 使用上面定义的键的段字典

在会话的事务上下文中调用,以释放租户或提供程序网络的类型特定资源。运行时错误不应发生,但引发异常将导致事务回滚。

abstract reserve_provider_segment(context, segment, filters=None)

保留与提供程序网络段关联的资源。

参数:
  • context – 包含 DB 会话的 neutron 上下文实例

  • segment – 段字典

  • filters – 用作搜索标准的字典

返回值:

段字典

在会话的事务上下文中调用,以保留提供程序网络段的类型特定资源。传入的段字典之前由先前的 validate_provider_segment() 调用返回。

abstract update_network_segment_range_allocations()

更新驱动程序网络段范围分配。

这会在创建、更新或删除网络段范围时同步驱动程序段分配。

class neutron_lib.plugins.ml2.api.MechanismDriver

基类: object

定义 ML2 机制驱动程序的稳定抽象接口。

机制驱动程序会在创建、更新和删除网络和端口时被调用。对于每个事件,都会调用两种方法 - 一种在数据库事务内(方法后缀为 _precommit),另一种在事务之后(方法后缀为 _postcommit)。

在事务内调用的方法引发的异常可以回滚,但不应进行任何阻塞调用(例如,对外部控制器的 REST 请求)。在事务提交后调用的方法可以进行阻塞外部调用,但这会阻塞整个过程。在事务提交后的调用中引发的异常可能会导致关联的资源被删除。

由于更新网络/端口的情况下的事务之外不进行回滚,因此所有数据验证都必须在事务的一部分的方法中完成。

bind_port(context)

尝试绑定端口。

参数:

context – 描述端口的 PortContext 实例

此方法在任何事务之外调用,以尝试使用此机制驱动程序建立端口绑定。绑定可以在分层网络的多个级别中的每个级别创建,并且从顶层向下建立。在每个级别,机制驱动程序确定它是否可以绑定到上下文的 segments_to_bind 属性中的任何网络段,基于上下文的 host 属性、任何相关的端口或网络属性,以及它自己对网络拓扑的了解。在顶层,context.segments_to_bind 包含端口网络的静态段。在较低级别的绑定中,它包含由上一级绑定的驱动程序提供的静态或动态段。如果驱动程序能够完成将端口绑定到 context.segments_to_bind 中的任何段,则必须使用绑定详细信息调用 context.set_binding。如果它可以部分绑定端口,则必须调用 context.continue_binding,并使用要在下一级别绑定的网络段。

如果在 bind_port 返回后提交绑定结果,所有机制驱动程序都会将其视为 update_port_precommit 和 update_port_postcommit 调用。但是,如果其他线程或进程同时绑定或更新端口,则这些绑定结果将不会被提交,并且不会使用这些结果在机制驱动程序上调用 update_port_precommit 和 update_port_postcommit。由于绑定结果可能会被丢弃而不是提交,因此驱动程序应避免进行持久性状态更改,或者必须确保这些状态更改最终会被清理。

显式实现此方法声明机制驱动程序有意绑定端口。QoS 服务会检查此声明,以识别可以使用端口的可用 QoS 规则。

check_vlan_qinq(context)

检查网络是否支持 QinQ VLAN。

参数:

context – 描述网络的 NetworkContext 实例。

检查网络是否支持 QinQ VLAN(类似于 VLAN 透明度,但使用不同的以太类型,外层标签为 0x8a88)。

check_vlan_transparency(context)

检查网络是否支持 VLAN 透明度。

参数:

context – 描述网络的 NetworkContext 实例。

检查网络是否支持 VLAN 透明度。

property connectivity

返回机制驱动程序的连接类型

可能的值为“l2”、“l3”和“legacy”(默认值)。

返回值:

一个字符串,可以是 (“l2”, “l3”, “legacy”)

create_network_postcommit(context)

创建一个网络。

参数:

context – 描述新网络的 NetworkContext 实例。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

create_network_precommit(context)

为新网络分配资源。

参数:

context – 描述新网络的 NetworkContext 实例。

创建新网络,在数据库中分配必要的资源。在会话的事务上下文中调用。调用不能阻塞。引发异常将导致回滚当前事务。

create_port_postcommit(context)

创建一个端口。

参数:

context – 描述端口的 PortContext 实例。

在事务完成后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

create_port_precommit(context)

为新端口分配资源。

参数:

context – 描述端口的 PortContext 实例。

创建新端口,在数据库中分配必要的资源。在会话的事务上下文中调用。调用不能阻塞。引发异常将导致回滚当前事务。

create_subnet_postcommit(context)

创建一个子网。

参数:

context – 描述新子网的 SubnetContext 实例。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

create_subnet_precommit(context)

为新子网分配资源。

参数:

context – 描述新子网的 SubnetContext 实例。

创建新子网,在数据库中分配必要的资源。在会话的事务上下文中调用。调用不能阻塞。引发异常将导致回滚当前事务。

delete_network_postcommit(context)

删除一个网络。

参数:

context – NetworkContext 实例,描述在调用删除它之前网络的当前状态。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。运行时错误不应发生,并且不会阻止删除资源。

delete_network_precommit(context)

删除网络的资源。

参数:

context – NetworkContext 实例,描述在调用删除它之前网络的当前状态。

删除此机制驱动程序先前为网络分配的网络资源。在会话的事务上下文中调用。运行时错误不应发生,但引发异常将导致事务回滚。

delete_port_postcommit(context)

删除一个端口。

参数:

context – PortContext 实例,描述在调用删除它之前端口的当前状态。

在事务完成后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。运行时错误不应发生,并且不会阻止删除资源。

delete_port_precommit(context)

删除端口的资源。

参数:

context – PortContext 实例,描述在调用删除它之前端口的当前状态。

在会话的事务上下文中调用。运行时错误不应发生,但引发异常将导致事务回滚。

delete_subnet_postcommit(context)

删除一个子网。

参数:

context – SubnetContext 实例,描述在调用删除它之前子网的当前状态。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。运行时错误不应发生,并且不会阻止删除资源。

delete_subnet_precommit(context)

删除子网的资源。

参数:

context – SubnetContext 实例,描述在调用删除它之前子网的当前状态。

删除此机制驱动程序先前为子网分配的子网资源。在会话的事务上下文中调用。运行时错误不应发生,但引发异常将导致事务回滚。

filter_hosts_with_segment_access(context, segments, candidate_hosts, agent_getter)

筛选具有至少一个段访问权限的主机。

返回值:

包含候选主机子集的集合。

驱动程序可以重载此方法以返回具有至少一个段访问权限的候选主机子集。

默认实现返回所有主机以禁用筛选(向后兼容)。

get_workers()

获取应拥有自己进程的任何 NeutronWorker 实例

任何需要运行与 API 或 RPC 工作程序分离的进程的驱动程序,都可以返回 NeutronWorker 实例序列。

abstract initialize()

执行驱动程序初始化。

在加载所有驱动程序并初始化数据库后调用。在调用此方法之前,不会调用下面定义的任何抽象方法。

classmethod is_host_filtering_supported()
static provider_network_attribute_updates_supported()

返回可以更新的提供商网络属性

可能的值:neutron_lib.api.definitions.provider_net.ATTRIBUTES

返回值:

(列表)可以使用此驱动程序在活动网络中更新的提供商网络属性。

resource_provider_uuid5_namespace = None
responsible_for_ports_allocation(context)

是否负责端口的资源提供程序?

参数:

context – 描述端口的 PortContext 实例

返回值:

负责时返回 True,不负责时返回 False

对于具有 Placement 中分配的端口(如端口的绑定:profile.allocation 中所表达),在绑定时确定此机制驱动程序是否负责 Placement 中的资源提供程序所代表的物理网络接口。在 context.current[‘binding:profile’][‘allocation’] 中查找资源提供程序 UUID。

希望支持 Placement 中端口资源分配的驱动程序(例如,希望保证一些最小带宽)必须实现此方法。

默认实现返回 False(向后兼容)。

start_rpc_listeners()

启动 RPC 侦听器。

创建并启动此驱动程序所需的 RPC 侦听器。在驱动程序具有需要获取一些数据的额外 RPC 方法的代理的情况下使用。建议在此处初始化 RPC 侦听器,而不是在 initialize() 中,以支持 RPC 和 API 工作程序之间的拆分。它类似于 NeutronPluginBaseV2.start_rpc_listeners()。

supported_extensions(extensions)

返回机制驱动程序支持的扩展

默认情况下,此方法将返回提供的相同集合,而不进行任何筛选。如果任何特定的机制驱动程序需要筛选任何特定的扩展,或者仅支持一组有限的扩展,则应覆盖此方法。

参数:

extensions – 创建此机制驱动程序的实例支持的扩展集合。

返回值:

此机制驱动程序当前支持的扩展集合

update_network_postcommit(context)

更新一个网络。

参数:

context – NetworkContext 实例,描述网络的新的状态,以及 update_network 调用之前的原始状态。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

update_network_postcommit 针对网络状态的所有更改调用。机制驱动程序负责忽略它不知道或不关心的状态或状态更改。

update_network_precommit(context)

更新网络的资源。

参数:

context – NetworkContext 实例,描述网络的新的状态,以及 update_network 调用之前的原始状态。

更新网络的数值,在数据库中更新相关的资源。在会话的事务上下文中调用。引发异常将导致事务回滚。

update_network_precommit 针对网络状态的所有更改调用。机制驱动程序负责忽略它不知道或不关心的状态或状态更改。

update_port_postcommit(context)

更新一个端口。

参数:

context – PortContext 实例,描述端口的新状态,以及 update_port 调用之前的原始状态。

在事务完成后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

update_port_postcommit 针对端口状态的所有更改调用。机制驱动程序负责忽略它不知道或不关心的状态或状态更改。

update_port_precommit(context)

更新端口的资源。

参数:

context – PortContext 实例,描述端口的新状态,以及 update_port 调用之前的原始状态。

在会话的事务上下文中调用,以完成此机制驱动程序定义的端口更新。引发异常将导致事务回滚。

update_port_precommit 在端口状态的所有更改时都会被调用。机制驱动程序负责忽略它不了解或不关心的状态或状态更改。

update_subnet_postcommit(context)

更新子网。

参数:

context – SubnetContext 实例,描述子网的新状态,以及 update_subnet 调用之前的原始状态。

在事务提交后调用。调用可能会阻塞,但会阻塞整个进程,因此应小心不要对性能产生重大影响。引发异常将导致删除资源。

update_subnet_postcommit 在子网状态的所有更改时都会被调用。机制驱动程序负责忽略它不了解或不关心的状态或状态更改。

update_subnet_precommit(context)

更新子网的资源。

参数:

context – SubnetContext 实例,描述子网的新状态,以及 update_subnet 调用之前的原始状态。

更新子网的值,更新数据库中的相关资源。在会话事务上下文中调用。抛出异常将导致事务回滚。

update_subnet_precommit 在子网状态的所有更改时都会被调用。机制驱动程序负责忽略它不了解或不关心的状态或状态更改。

class neutron_lib.plugins.ml2.api.NetworkContext

基类: object

传递给 MechanismDrivers 的上下文,用于网络资源的更改。

NetworkContext 实例封装一个网络资源。它提供辅助方法来访问其他相关信息。昂贵操作的结果会被缓存,以便其他 MechanismDrivers 可以自由访问相同的信息。

abstract property current

返回网络在当前配置中的状态。

返回网络,由 NeutronPluginBaseV2. create_network 和 ml2 插件中的所有扩展定义,其所有属性在建立上下文时为“当前”。

abstract property network_segments

返回与此网络资源关联的段。

abstract property original

返回网络在原始配置中的状态。

返回网络,其所有属性设置为在调用 update_network 之前的原始值。该方法仅在 update_network_precommit 和 update_network_postcommit 调用中有效。

class neutron_lib.plugins.ml2.api.PortContext

基类: object

传递给 MechanismDrivers 的上下文,用于端口资源的更改。

PortContext 实例封装一个端口资源。它提供辅助方法来访问其他相关信息。昂贵操作的结果会被缓存,以便其他 MechanismDrivers 可以自由访问相同的信息。

abstract allocate_dynamic_segment(segment)

分配一个动态段。

参数:

segment – 部分或完全指定的段字典

由 MechanismDriver.bind_port、create_port 或 update_port 调用,以使用指定的段部分动态分配端口的段。段字典可以是完全或部分指定的段。至少需要填充 network_type 才能调用相应的类型驱动程序。

abstract property binding_levels

返回描述当前绑定级别的字典。

如果端口已绑定或部分绑定,则此属性返回描述每个绑定级别的字典列表,否则返回 None。每个返回的字典在 BOUND_DRIVER 键下包含绑定驱动程序的名称,在 BOUND_SEGMENT 键下包含绑定的段字典。

第一条条目(索引 0)描述了顶级绑定,该绑定始终涉及端口的网络的一个静态段。在分层绑定的情况下,后续条目以降序描述较低级别的绑定,这些绑定可能涉及动态段。相邻级别在不同的驱动程序绑定相同的静态或动态段是可能的。最后一项(索引 -1)描述了提供端口的 binding:vif_type 和 binding:vif_details 属性值的底层绑定。

在 MechanismDriver.bind_port 调用中,返回高于当前绑定级别的描述。

abstract property bottom_bound_segment

返回当前的底层绑定段字典。

此属性返回当前的底层绑定段字典,或者如果端口未绑定则返回 None。对于绑定的端口,bottom_bound_segment 等效于 binding_levels[-1][BOUND_SEGMENT],并返回提供端口的 binding:vif_type 和 binding:vif_details 属性值的段。

abstract continue_binding(segment_id, next_segments_to_bind)

继续使用不同的段绑定端口。

参数:
  • segment_id – 部分绑定到端口的网络段。

  • next_segments_to_bind – 要继续绑定的段。

此方法由 MechanismDriver.bind_port 调用,以指示它能够部分绑定端口,但需要一个或多个额外的机制驱动程序才能完成绑定。segment_id 必须标识当前 segments_to_bind 属性中的一个项目。作为 next_segments_to_bind 传递的段 ID 列表标识端口网络的动态(或静态)段,这些段将用于填充下一级别分层绑定的 segments_to_bind。

abstract property current

返回端口在当前配置中的状态。

返回端口,由 NeutronPluginBaseV2. create_port 和 ml2 插件中的所有扩展定义,其所有属性在建立上下文时为“当前”。

abstract property host

返回与端口关联的主机。

在分布式端口上的主机特定操作的上下文中,host 属性指示执行端口操作的主机。否则,它与 current[‘binding:host_id’] 相同。

abstract host_agents(agent_type)

获取端口主机上指定类型的代理。

参数:

agent_type – 代理类型标识符

返回值:

neutron.db.models.agent.Agent 记录列表

abstract property network

返回与此端口关联的 NetworkContext。

abstract property original

返回端口在原始配置中的状态。

返回端口,其所有属性设置为在调用 update_port 之前的原始值。该方法仅在 update_port_precommit 和 update_port_postcommit 调用中有效。

abstract property original_binding_levels

返回描述原始绑定级别的字典。

此属性返回描述每个原始绑定级别的字典列表,如果端口先前已绑定,则返回 None。内容与 binding_levels 属性的描述相同。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract property original_bottom_bound_segment

返回原始的底层绑定段字典。

此属性返回原始的底层绑定段字典,或者如果端口先前未绑定则返回 None。对于先前绑定的端口,original_bottom_bound_segment 等效于 original_binding_levels[-1][BOUND_SEGMENT],并返回提供端口的 binding:vif_type 和 binding:vif_details 属性值的段。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract property original_host

返回与端口关联的原始主机。

在分布式端口上的主机特定操作的上下文中,original_host 属性指示执行端口操作的主机。否则,它与 original[‘binding:host_id’] 相同。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract property original_status

返回原始端口的状态。

该方法仅在 update_port_precommit 和 update_port_postcommit 调用中有效。

abstract property original_top_bound_segment

返回原始的顶级绑定段字典。

此属性返回原始的顶级绑定段字典,或者如果端口先前未绑定则返回 None。对于先前绑定的端口,original_top_bound_segment 等效于 original_binding_levels[0][BOUND_SEGMENT],并返回端口网络的一个静态段。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract property original_vif_details

返回端口的原始 vif_details。

在分布式端口上的主机特定操作的上下文中,original_vif_details 属性描述执行端口操作的主机的原始绑定。否则,它与 original[‘binding:vif_details’] 相同。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract property original_vif_type

返回端口的原始 vif_type。

在分布式端口上的主机特定操作的上下文中,original_vif_type 属性指示执行端口操作的主机的原始绑定状态。否则,它与 original[‘binding:vif_type’] 相同。

此属性仅在 update_port_precommit 和 update_port_postcommit 调用中有效。否则,它返回 None。

abstract release_dynamic_segment(segment_id)

释放分配的动态段。

参数:

segment_id – 动态网络段的 UUID。

由 MechanismDriver.delete_port 或 update_port 调用,以释放为此端口分配的动态段。

abstract property segments_to_bind

返回要绑定到端口的段列表。

此属性返回机制驱动程序可以绑定端口的段字典列表。在建立顶级绑定时,这些将是端口网络的静态段。对于每个后续级别,这些将是传递给 continue_binding 的机制驱动程序传递的段。

此属性仅在 MechanismDriver.bind_port 调用中有效。否则,它返回 None。

abstract set_binding(segment_id, vif_type, vif_details, status=None)

设置端口的底层绑定。

参数:
  • segment_id – 绑定到端口的网络段。

  • vif_type – 绑定端口的 VIF 类型。

  • vif_details – VIF 驱动程序的详细信息字典。

  • status – 如果不为 None,则要设置的端口状态。

此方法由 MechanismDriver.bind_port 调用,以指示成功并指定用于端口的绑定详细信息。segment_id 必须标识当前 segments_to_bind 属性中的一个项目。

abstract property status

返回当前端口的状态。

abstract property top_bound_segment

返回当前顶层绑定段字典。

此属性返回当前顶层绑定段字典,或者如果端口未绑定则返回 None。对于已绑定的端口,top_bound_segment 等同于 binding_levels[0][BOUND_SEGMENT],并返回端口网络的一个静态段。

abstract property vif_details

返回描述端口绑定的 vif_details。

在分布式端口上进行特定主机操作的上下文中,vif_details 属性描述用于执行端口操作的主机的绑定。否则,它与 current[‘binding:vif_details’] 相同。

abstract property vif_type

返回指示端口绑定状态的 vif_type。

在分布式端口上进行特定主机操作的上下文中,vif_type 属性指示用于执行端口操作的主机的绑定状态。否则,它与 current[‘binding:vif_type’] 相同。

class neutron_lib.plugins.ml2.api.SubnetContext

基类: object

传递给 MechanismDrivers 以进行子网资源更改的上下文。

SubnetContext 实例封装一个子网资源。它提供用于访问其他相关信息的辅助方法。昂贵的运算结果会被缓存,以便其他 MechanismDrivers 可以自由访问相同的信息。

abstract property current

返回子网的当前配置。

返回子网,由 NeutronPluginBaseV2 定义,并在 ml2 插件中的所有扩展中,在其建立上下文的时间点具有所有属性‘current’。

abstract property original

返回子网的原始配置。

返回子网,其所有属性设置为在调用 update_subnet 之前的值。该方法仅在调用 update_subnet_precommit 和 update_subnet_postcommit 时有效。

class neutron_lib.plugins.ml2.api.TypeDriver

继承自:_TypeDriverBase

定义 ML2 类型驱动程序的抽象接口。

ML2 类型驱动程序每个都支持提供程序和/或租户网络段的特定 network_type。类型驱动程序必须实现此抽象接口,该接口定义了插件使用驱动程序来管理与该类型相关的持久类型特定资源分配状态的 API。

网络段由使用上面定义的 NETWORK_TYPE、PHYSICAL_NETWORK 和 SEGMENTATION_ID 键的段字典表示,对应于提供程序属性。未来版本的 TypeDriver API 可能会添加额外的段字典键。对于特定的 network_type 不适用的属性可以排除或存储为 None。

TypeDriver 将会话作为参数传递给:- reserve_provider_segment - allocate_tenant_segment - release_segment - get_allocation

abstract allocate_tenant_segment(session, filters=None)

为新的租户网络段分配资源。

参数:
  • session – 数据库会话

  • filters – 用作搜索标准的字典

返回值:

使用上面定义的键的段字典

在会话的事务上下文中调用,以分配新的租户网络,通常从类型特定的资源池中。如果成功,则返回描述该段的段字典。如果无法分配租户网络段(即,不支持租户网络或资源池已耗尽),则返回 None。

abstract release_segment(session, segment)

释放网络段。

参数:
  • session – 数据库会话

  • segment – 使用上面定义的键的段字典

在会话的事务上下文中调用,以释放租户或提供程序网络的类型特定资源。运行时错误不应发生,但引发异常将导致事务回滚。

abstract reserve_provider_segment(session, segment, filters=None)

保留与提供程序网络段关联的资源。

参数:
  • session – 数据库会话

  • segment – 段字典

  • filters – 用作搜索标准的字典

返回值:

段字典

在会话的事务上下文中调用,以保留提供程序网络段的类型特定资源。传入的段字典之前由先前的 validate_provider_segment() 调用返回。