neutron_lib.plugins.utils 模块

neutron_lib.plugins.utils.can_port_be_bound_to_virtual_bridge(port)

判断端口是否可以绑定到虚拟网桥(例如:LB、OVS)

参数:

port – (dict) 一个端口字典。

返回值:

如果端口的 VNIC 类型为 ‘normal’ 或 ‘smart-nic’,则返回 True;否则返回 False。

neutron_lib.plugins.utils.create_network(core_plugin, context, net, check_allow_post=True)
neutron_lib.plugins.utils.create_port(core_plugin, context, port, check_allow_post=True)
neutron_lib.plugins.utils.create_subnet(core_plugin, context, subnet, check_allow_post=True)
neutron_lib.plugins.utils.delete_port_on_error(core_plugin, context, port_id)

一个装饰器,在发生异常时删除端口。

此装饰器可用于包装一段代码,如果在这段代码执行期间发生异常,则应删除端口。

参数:
  • core_plugin – 实现 delete_port 方法以调用的核心插件。

  • context – 上下文。

  • port_id – 端口的 ID。

返回值:

neutron_lib.plugins.utils.get_deployment_physnet_mtu()

检索全局物理网络 MTU 设置。

插件应使用此函数来检索运营商设置的 MTU,该 MTU 小于或等于节点物理接口的 MTU。请注意,在将其通告给 VM 之前,插件有责任扣除所需的任何封装开销值。

请注意,此函数依赖于在全局 CONF 中注册的 global_physnet_mtu 配置选项。

返回值:

来自全局 CONF 的 global_physnet_mtu。

neutron_lib.plugins.utils.get_interface_name(name, prefix='', max_len=15)

基于前缀和名称构造接口名称。

接口名称不能超过传入的最大长度。较长的名称会被哈希以帮助确保唯一性。

neutron_lib.plugins.utils.get_port_binding_by_status_and_host(bindings, status, host='', raise_if_not_found=False, port_id=None)

从可迭代对象中返回具有指定状态和主机的绑定。

输入可迭代对象可以包含状态为 ACTIVE 的零个或一个绑定,以及状态为 INACTIVE 的零个或多个绑定。因此,为了明确检索非活动绑定,调用者必须为 host 指定一个非空值。如果 host 是空字符串,则将返回满足指定状态的第一个绑定。如果未找到具有指定状态和主机的绑定,则返回 None,或者如果 raise_if_not_found 为 True,则引发 PortBindingNotFound 异常

参数:
  • bindings – 包含端口绑定的可迭代对象

  • status – 要返回的端口绑定的状态。可能的值是 ACTIVE 或 INACTIVE,如 neutron_lib/constants.py 中定义。

  • host – 表示绑定的主机的字符串。

  • raise_if_not_found – 如果未找到绑定并且此参数为 True,则会引发 PortBindingNotFound 异常

  • port_id – 绑定的端口的 ID

返回值:

搜索到的端口绑定或未找到时返回 None

引发:

如果未找到绑定且 raise_if_not_found 为 True,则引发 PortBindingNotFound

neutron_lib.plugins.utils.in_pending_status(status)

如果状态是挂起状态的一种形式,则返回 True

neutron_lib.plugins.utils.is_valid_geneve_vni(vni)

验证 Geneve VNI

参数:

vni – 要验证的 VNI。

返回值:

如果 vni 是有效的 Geneve VNI,则返回 True。

neutron_lib.plugins.utils.is_valid_gre_id(gre_id)

验证 GRE ID。

参数:

gre_id – 要验证的 GRE ID。

返回值:

如果 gre_id 是有效的 GRE ID,则返回 True。

neutron_lib.plugins.utils.is_valid_vlan_tag(vlan)

验证 VLAN 标签。

参数:

vlan – 要验证的 VLAN 标签。

返回值:

如果 vlan 是有效的 VLAN 标签,则返回 True。

neutron_lib.plugins.utils.is_valid_vxlan_vni(vni)

验证 VXLAN VNI。

参数:

vni – 要验证的 VNI。

返回值:

如果 vni 是有效的 VXLAN VNI,则返回 True。

neutron_lib.plugins.utils.parse_network_vlan_range(network_vlan_range)

解析格式良好的网络 VLAN 范围字符串。

网络 VLAN 范围字符串的格式为

network[:vlan_begin:vlan_end]

参数:

network_vlan_range – 要解析的网络 VLAN 范围字符串。

返回值:

一个元组,其第一个元素是网络名称,第二个元素是从 network_vlan_range 解析出的 VLAN 范围。

引发:

如果 network_vlan_range 格式不正确,则引发 NetworkVlanRangeError。如果 network_vlan_range 缺少网络名称,则引发 PhysicalNetworkNameError。

neutron_lib.plugins.utils.parse_network_vlan_ranges(network_vlan_ranges_cfg_entries)

解析格式良好的网络 VLAN 范围字符串列表。

行为类似于 parse_network_vlan_range,但将网络 VLAN 字符串列表解析为有序字典。

参数:

network_vlan_ranges_cfg_entries – 要解析的网络 VLAN 字符串列表。

返回值:

一个 OrderedDict,其键是网络名称,值是从 network_vlan_ranges_cfg_entries 解析出的 VLAN 范围列表。

引发:

请参阅 parse_network_vlan_range。

neutron_lib.plugins.utils.update_port_on_error(core_plugin, context, port_id, revert_value)

一个装饰器,在发生异常时更新端口。

此装饰器可用于包装一段代码,如果在这段代码执行期间发生异常,则应更新端口。

参数:
  • core_plugin – 实现 update_port 方法以调用的核心插件。

  • context – 上下文。

  • port_id – 端口的 ID。

  • revert_value – 要在端口对象上还原的值。

返回值:

neutron_lib.plugins.utils.verify_tunnel_range(tunnel_range, tunnel_type)

验证给定的隧道范围是否根据其隧道类型有效。

针对 GRE、VXLAN 和 GENEVE 类型进行了现有验证,如 _TUNNEL_MAPPINGS 中所述。

参数:
  • tunnel_range – 一个可迭代对象,其 0 索引是最小隧道范围,其 1 索引是最大隧道范围。

  • tunnel_type – 范围的隧道类型。

返回值:

如果 tunnel_range 有效,则返回 None。

引发:

如果 tunnel_range 无效,则引发 NetworkTunnelRangeError。

neutron_lib.plugins.utils.verify_vlan_range(vlan_range)

验证 VLAN 范围是否有效。

参数:

vlan_range – 一个可迭代对象,其 0 索引是最小隧道范围,其 1 索引是最大隧道范围。

返回值:

如果 vlan_range 有效,则返回 None。

引发:

如果 vlan_range 无效,则引发 NetworkVlanRangeError。