tripleo-heat-templates/puppet/services/opendaylight-ovs.yaml
Itzik Brown 52e8df6614 Changing the default port-binding configuration
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>
2017-07-27 16:20:51 -04:00

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