52e8df6614
networking-odl no longer supports the network-topology port binding controller and instead now relies on a pseudo-agent binding controller. This means that each OVS node must be configured with host configuration in OVSDB about which VIF types, network types, functions, etc that this OVS node supports. The end result is this affects where nova and neutron will schedule instances. Changes Include: - Modifying default port binding controller to use pseudo agent - Adds necessary per role parameters to be able to configure host config on a per role basis to allow for heterogenous compute node configurations. Change-Id: I50458abf6a8a6bf724ad97accb6444d9c497d287 Closes-Bug: 1674995 Signed-off-by: Tim Rozet <trozet@redhat.com>
163 lines
6.3 KiB
YAML
163 lines
6.3 KiB
YAML
heat_template_version: pike
|
|
|
|
description: >
|
|
OpenDaylight OVS Configuration.
|
|
|
|
parameters:
|
|
OpenDaylightPort:
|
|
default: 8081
|
|
description: Set opendaylight service port
|
|
type: number
|
|
OpenDaylightUsername:
|
|
default: 'admin'
|
|
description: The username for the opendaylight server.
|
|
type: string
|
|
OpenDaylightPassword:
|
|
default: 'admin'
|
|
type: string
|
|
description: The password for the opendaylight server.
|
|
hidden: true
|
|
OpenDaylightConnectionProtocol:
|
|
description: L7 protocol used for REST access
|
|
type: string
|
|
default: 'http'
|
|
OpenDaylightCheckURL:
|
|
description: URL postfix to verify ODL has finished starting up
|
|
type: string
|
|
default: 'restconf/operational/network-topology:network-topology/topology/netvirt:1'
|
|
OpenDaylightApiVirtualIP:
|
|
type: string
|
|
default: ''
|
|
OpenDaylightProviderMappings:
|
|
description: Mappings between logical networks and physical interfaces.
|
|
Required for VLAN deployments. For example physnet1 -> eth1.
|
|
type: comma_delimited_list
|
|
default: "datacentre:br-ex"
|
|
HostAllowedNetworkTypes:
|
|
description: Allowed tenant network types for this OVS host. Note this can
|
|
vary per host or role to constrain which hosts nova instances
|
|
and networks are scheduled to.
|
|
type: comma_delimited_list
|
|
default: ['local', 'vlan', 'vxlan', 'gre']
|
|
OvsEnableDpdk:
|
|
description: Whether or not to configure enable DPDK in OVS
|
|
default: false
|
|
type: boolean
|
|
OvsVhostuserMode:
|
|
description: Specify the mode for OVS with vhostuser port creation. In
|
|
client mode, the hypervisor will be responsible for creating
|
|
vhostuser sockets. In server mode, OVS will create them.
|
|
type: string
|
|
default: "client"
|
|
constraints:
|
|
- allowed_values: [ 'client', 'server' ]
|
|
VhostuserSocketDir:
|
|
description: Specify the directory to use for vhostuser sockets
|
|
type: string
|
|
default: "/var/run/openvswitch"
|
|
EndpointMap:
|
|
default: {}
|
|
description: Mapping of service endpoint -> protocol. Typically set
|
|
via parameter_defaults in the resource registry.
|
|
type: json
|
|
ServiceData:
|
|
default: {}
|
|
description: Dictionary packing service data
|
|
type: json
|
|
ServiceNetMap:
|
|
default: {}
|
|
description: Mapping of service_name -> network name. Typically set
|
|
via parameter_defaults in the resource registry. This
|
|
mapping overrides those in ServiceNetMapDefaults.
|
|
type: json
|
|
DefaultPasswords:
|
|
default: {}
|
|
type: json
|
|
RoleName:
|
|
default: ''
|
|
description: Role name on which the service is applied
|
|
type: string
|
|
RoleParameters:
|
|
default: {}
|
|
description: Parameters specific to the role
|
|
type: json
|
|
|
|
resources:
|
|
Ovs:
|
|
type: ./openvswitch.yaml
|
|
properties:
|
|
ServiceData: {get_param: ServiceData}
|
|
ServiceNetMap: {get_param: ServiceNetMap}
|
|
DefaultPasswords: {get_param: DefaultPasswords}
|
|
EndpointMap: {get_param: EndpointMap}
|
|
RoleName: {get_param: RoleName}
|
|
RoleParameters: {get_param: RoleParameters}
|
|
|
|
# Merging role-specific parameters (RoleParameters) with the default parameters.
|
|
# RoleParameters will have the precedence over the default parameters.
|
|
RoleParametersValue:
|
|
type: OS::Heat::Value
|
|
properties:
|
|
type: json
|
|
value:
|
|
map_replace:
|
|
- map_replace:
|
|
- neutron::plugins::ovs::opendaylight::allowed_network_types: HostAllowedNetworkTypes
|
|
neutron::plugins::ovs::opendaylight::enable_dpdk: OvsEnableDpdk
|
|
neutron::plugins::ovs::opendaylight::vhostuser_socket_dir: VhostuserSocketDir
|
|
neutron::plugins::ovs::opendaylight::vhostuser_mode: OvsVhostuserMode
|
|
neutron::plugins::ovs::opendaylight::provider_mappings: OpenDaylightProviderMappings
|
|
- values: {get_param: [RoleParameters]}
|
|
- values:
|
|
HostAllowedNetworkTypes: {get_param: HostAllowedNetworkTypes}
|
|
OvsEnableDpdk: {get_param: OvsEnableDpdk}
|
|
VhostuserSocketDir: {get_param: VhostuserSocketDir}
|
|
OvsVhostuserMode: {get_param: OvsVhostuserMode}
|
|
OpenDaylightProviderMappings: {get_param: OpenDaylightProviderMappings}
|
|
|
|
outputs:
|
|
role_data:
|
|
description: Role data for the OpenDaylight service.
|
|
value:
|
|
service_name: opendaylight_ovs
|
|
config_settings:
|
|
map_merge:
|
|
- opendaylight::odl_rest_port: {get_param: OpenDaylightPort}
|
|
opendaylight::username: {get_param: OpenDaylightUsername}
|
|
opendaylight::password: {get_param: OpenDaylightPassword}
|
|
neutron::plugins::ovs::opendaylight::odl_username: {get_param: OpenDaylightUsername}
|
|
neutron::plugins::ovs::opendaylight::odl_password: {get_param: OpenDaylightPassword}
|
|
opendaylight_check_url: {get_param: OpenDaylightCheckURL}
|
|
opendaylight::nb_connection_protocol: {get_param: OpenDaylightConnectionProtocol}
|
|
neutron::agents::ml2::ovs::local_ip: {get_param: [ServiceNetMap, NeutronTenantNetwork]}
|
|
tripleo.opendaylight_ovs.firewall_rules:
|
|
'118 neutron vxlan networks':
|
|
proto: 'udp'
|
|
dport: 4789
|
|
'136 neutron gre networks':
|
|
proto: 'gre'
|
|
- get_attr: [Ovs, role_data, config_settings]
|
|
- get_attr: [RoleParametersValue, value]
|
|
step_config: |
|
|
include tripleo::profile::base::neutron::plugins::ovs::opendaylight
|
|
upgrade_tasks:
|
|
yaql:
|
|
expression: $.data.ovs_upgrade + $.data.opendaylight_upgrade
|
|
data:
|
|
ovs_upgrade:
|
|
get_attr: [Ovs, role_data, upgrade_tasks]
|
|
opendaylight_upgrade:
|
|
- name: Check if openvswitch is deployed
|
|
command: systemctl is-enabled openvswitch
|
|
tags: common
|
|
ignore_errors: True
|
|
register: openvswitch_enabled
|
|
- name: "PreUpgrade step0,validation: Check service openvswitch is running"
|
|
shell: /usr/bin/systemctl show 'openvswitch' --property ActiveState | grep '\bactive\b'
|
|
when: openvswitch_enabled.rc == 0
|
|
tags: step0,validation
|
|
- name: Stop openvswitch service
|
|
tags: step1
|
|
when: openvswitch_enabled.rc == 0
|
|
service: name=openvswitch state=stopped
|