summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2016-04-18 15:47:59 -0400
committerTim Rozet <trozet@redhat.com>2016-04-21 00:29:19 -0400
commitc03181b38fb477707f2aa66dccac7a816b13124d (patch)
tree2755a01253c24c4e23e12640b5698335a83273c9
parent92e4b9310b8582bcd751ce0f8fe3fab98d195d71 (diff)
Fixes SDNVPN and SFC bugs
Changes Include: - ODL beta SR2 image updated which contains fixes for SFC classifier and SDNVPN - SDNVPN ODL boot features now set as odl-vpnservice-openstack - SDNVPN Tunnel setup script now copied to/executes on nodes for configuring OVS with SDNVPN Change-Id: I290a999c07f59eb04d75c39dd31280fb39a41d29 Signed-off-by: Tim Rozet <trozet@redhat.com>
-rwxr-xr-xbuild/instack.sh7
-rw-r--r--build/opnfv-tripleo-heat-templates.patch315
2 files changed, 189 insertions, 133 deletions
diff --git a/build/instack.sh b/build/instack.sh
index 5982ce9..5ace95c 100755
--- a/build/instack.sh
+++ b/build/instack.sh
@@ -276,7 +276,7 @@ enabled=1
gpgcheck=0
EOF
-odlrpm=opendaylight-4.2.0-1.20160407.144137180.el7.noarch.rpm
+odlrpm=opendaylight-4.2.0-1.20160420.023809294.el7.noarch.rpm
LIBGUESTFS_BACKEND=direct virt-customize --upload ${rdo_images_uri/file:\/\//}/$odlrpm:/tmp/ \
-a overcloud-full-opendaylight.qcow2
opendaylight=/tmp/$odlrpm
@@ -304,6 +304,11 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-template
--run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opnfv-tripleo-heat-templates.patch" \
-a instack.qcow2
+# SDNVPN - Copy tunnel setup script
+wget https://raw.githubusercontent.com/openstack/fuel-plugin-opendaylight/brahmaputra-sr2/deployment_scripts/puppet/modules/opendaylight/templates/setup_TEPs.py
+LIBGUESTFS_BACKEND=direct virt-customize --upload ./setup_TEPs.py:/tmp \
+ -a overcloud-full-opendaylight.qcow2
+
# REMOVE ME AFTER Brahmaputra
LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-neutron-force-metadata.patch:/tmp \
--run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/puppet-neutron-force-metadata.patch" \
diff --git a/build/opnfv-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch
index a83965e..f254b7e 100644
--- a/build/opnfv-tripleo-heat-templates.patch
+++ b/build/opnfv-tripleo-heat-templates.patch
@@ -1,82 +1,8 @@
-From dee438bed844c2f2ebe017710504354cd99f42a4 Mon Sep 17 00:00:00 2001
+From 1c3aac51b3b74cc82088659e0141bfecbf4b0cc8 Mon Sep 17 00:00:00 2001
From: Tim Rozet <tdrozet@gmail.com>
Date: Tue, 12 Jan 2016 16:49:57 -0500
Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
-Adds opendaylight L3 support
-
-Fixes missing opendaylight install param for ODL L3
-
-Deploy Aodh services, replacing Ceilometer Alarm
-
-Ceilometer Alarm is deprecated in Liberty by Aodh.
-
-This patch:
-* manage Aodh Keystone resources
-* deploy Aodh API under WSGI, Notifier, Listener and Evaluator
-* manage new parameters to customize Aodh deployment
-* uses ceilometer DB for the upgrade path
-
-WIP - pacemaker work needs to be finished.
-
-Fixes OpenDaylightEnableL3 to set to 'yes' string
-
-Signed-off-by: Tim Rozet <tdrozet@gmail.com>
-
-Adds AODH Pacemaker constraint for keystone
-
-Fixes cinder keystone auth uri
-
-aodh fixes
-
-Adds specific env for SFC, and parameterizes ODL feature boot
-
-Fixes SFC and SFC coexistence
-
-Fix aodh database connection
-
-Set to mongo rather than the default sqlite
-
-Also move the aodh config to step 4 before pacemaker starts services
-
-Move ceilometer event pipeline to correct place
-
-Was missing .yaml
-
-update the nova floating pool id
-
-Add odl sdnvpn environment
-
-Add support for sdnvpn using OpenDaylight
-
-Adds OpenDaylight HA
-
-updating opendaylightapinetwork
-
-Fixes Neutron L3 agent with No HA+No SDN deployments
-
-Adds OpenDaylightFeatures to compute node
-
-Needed for detecting SFC
-
-Fixes opendaylight_port for non SFC deployments
-
-Use ODL for BGPVPN driver
-
-Dummy driver was previously being used, change to use ODL
-
-Adds SFC Coexist table offset complete for compute node before
-attempting to connect
-
-Revert "Fixes opendaylight_port for non SFC deployments"
-
-This reverts commit 6e6c9e25e542bd40c74aa7e66b62a6342308819a.
-
-Revert "Adds OpenDaylight HA"
-
-This reverts commit 24395652aa66a07a631ba33ae771407e833d27d3.
-
-Deploy ceph OSDs on the compute nodes too
---
environments/onos.yaml | 8 +
environments/opendaylight-external.yaml | 25 ++
@@ -89,16 +15,16 @@ Deploy ceph OSDs on the compute nodes too
overcloud-resource-registry-puppet.yaml | 3 +
overcloud-without-mergepy.yaml | 103 ++++-
puppet/all-nodes-config.yaml | 17 +
- puppet/compute.yaml | 47 +++
- puppet/controller.yaml | 109 ++++-
+ puppet/compute.yaml | 58 +++
+ puppet/controller.yaml | 111 ++++-
puppet/hieradata/common.yaml | 1 +
puppet/hieradata/controller.yaml | 5 +-
- puppet/manifests/overcloud_compute.pp | 70 +++-
- puppet/manifests/overcloud_controller.pp | 128 +++++-
- puppet/manifests/overcloud_controller_pacemaker.pp | 458 ++++++++++++++-------
+ puppet/manifests/overcloud_compute.pp | 99 ++++-
+ puppet/manifests/overcloud_controller.pp | 169 ++++++-
+ puppet/manifests/overcloud_controller_pacemaker.pp | 487 ++++++++++++++-------
puppet/manifests/overcloud_opendaylight.pp | 27 ++
puppet/opendaylight-puppet.yaml | 223 ++++++++++
- 20 files changed, 1180 insertions(+), 170 deletions(-)
+ 20 files changed, 1292 insertions(+), 170 deletions(-)
create mode 100644 environments/onos.yaml
create mode 100644 environments/opendaylight-external.yaml
create mode 100644 environments/opendaylight.yaml
@@ -201,7 +127,7 @@ index 0000000..05c0aff
+ opendaylight_install: true
diff --git a/environments/opendaylight_sdnvpn.yaml b/environments/opendaylight_sdnvpn.yaml
new file mode 100644
-index 0000000..3a14975
+index 0000000..d8e206f
--- /dev/null
+++ b/environments/opendaylight_sdnvpn.yaml
@@ -0,0 +1,29 @@
@@ -223,7 +149,7 @@ index 0000000..3a14975
+ # increase this if you need more ODL nodes
+ # OpenDaylightCount: 1
+ ControllerEnableSwiftStorage: false
-+ OpenDaylightFeatures: "odl-ovsdb-openstack,odl-vpnservice-api,odl-vpnservice-impl,odl-vpnservice-impl-rest,odl-vpnservice-impl-ui,odl-vpnservice-core"
++ OpenDaylightFeatures: "odl-vpnservice-openstack"
+ NeutronL3HA: false
+ NeutronServicePlugins: "router,qos,networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin"
+ ExtraConfig:
@@ -671,7 +597,7 @@ index 2bc519b..d649ba0 100644
outputs:
config_id:
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
-index 70c7403..2940342 100644
+index 70c7403..db5eb66 100644
--- a/puppet/compute.yaml
+++ b/puppet/compute.yaml
@@ -33,6 +33,10 @@ parameters:
@@ -725,15 +651,24 @@ index 70c7403..2940342 100644
NetIpMap:
type: OS::TripleO::Network::Ports::NetIpMap
properties:
-@@ -327,6 +357,7 @@ resources:
+@@ -327,6 +357,16 @@ resources:
InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
StorageIp: {get_attr: [StoragePort, ip_address]}
TenantIp: {get_attr: [TenantPort, ip_address]}
+ ExternalIp: {get_attr: [ExternalPort, ip_address]}
++
++ NetIpSubnetMap:
++ type: OS::TripleO::Network::Ports::NetIpSubnetMap
++ properties:
++ ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
++ ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
++ InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
++ StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
++ TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
NetworkConfig:
type: OS::TripleO::Compute::Net::SoftwareConfig
-@@ -335,6 +366,7 @@ resources:
+@@ -335,6 +375,7 @@ resources:
InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
@@ -741,7 +676,7 @@ index 70c7403..2940342 100644
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
-@@ -375,6 +407,7 @@ resources:
+@@ -375,6 +416,7 @@ resources:
compute:
raw_data: {get_file: hieradata/compute.yaml}
mapped_data:
@@ -749,7 +684,7 @@ index 70c7403..2940342 100644
cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
nova::debug: {get_input: debug}
nova::rabbit_userid: {get_input: rabbit_username}
-@@ -406,6 +439,11 @@ resources:
+@@ -406,12 +448,18 @@ resources:
neutron::rabbit_user: {get_input: rabbit_user}
neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
neutron::rabbit_port: {get_input: rabbit_client_port}
@@ -761,7 +696,14 @@ index 70c7403..2940342 100644
neutron_flat_networks: {get_input: neutron_flat_networks}
neutron_host: {get_input: neutron_host}
neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
-@@ -442,6 +480,7 @@ resources:
+
+ neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
+ neutron_tunnel_types: {get_input: neutron_tunnel_types}
++ neutron_tenant_network: {get_input: neutron_tenant_network}
+ neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+ neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
+ neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
+@@ -442,6 +490,7 @@ resources:
config: {get_resource: NovaComputeConfig}
server: {get_resource: NovaCompute}
input_values:
@@ -769,7 +711,7 @@ index 70c7403..2940342 100644
cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
debug: {get_param: Debug}
nova_compute_driver: {get_param: NovaComputeDriver}
-@@ -459,6 +498,11 @@ resources:
+@@ -459,11 +508,17 @@ resources:
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
@@ -781,7 +723,13 @@ index 70c7403..2940342 100644
neutron_flat_networks: {get_param: NeutronFlatNetworks}
neutron_host: {get_param: NeutronHost}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
-@@ -570,6 +614,9 @@ outputs:
+ neutron_tenant_network_type: {get_param: NeutronNetworkType}
+ neutron_tunnel_types: {get_param: NeutronTunnelTypes}
++ neutron_tenant_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
+ neutron_tunnel_id_ranges:
+ str_replace:
+ template: "['RANGES']"
+@@ -570,6 +625,9 @@ outputs:
tenant_ip_address:
description: IP address of the server in the tenant network
value: {get_attr: [TenantPort, ip_address]}
@@ -792,7 +740,7 @@ index 70c7403..2940342 100644
description: Hostname of the server
value: {get_attr: [NovaCompute, name]}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
-index ea0b3af..c8b162a 100644
+index ea0b3af..5a3f1df 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -14,6 +14,14 @@ parameters:
@@ -944,15 +892,17 @@ index ea0b3af..c8b162a 100644
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
nova_password: {get_param: NovaPassword}
-@@ -948,6 +1010,7 @@ resources:
+@@ -947,7 +1009,9 @@ resources:
+ mongo_db_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
++ neutron_tenant_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
+ aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
-@@ -1041,7 +1104,7 @@ resources:
+@@ -1041,7 +1105,7 @@ resources:
cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
cinder::database_connection: {get_input: cinder_dsn}
cinder::api::keystone_password: {get_input: cinder_password}
@@ -961,7 +911,7 @@ index ea0b3af..c8b162a 100644
cinder::api::identity_uri: {get_input: keystone_identity_uri}
cinder::api::bind_host: {get_input: cinder_api_network}
cinder::rabbit_userid: {get_input: rabbit_username}
-@@ -1128,6 +1191,7 @@ resources:
+@@ -1128,6 +1192,7 @@ resources:
admin_password: {get_input: admin_password}
enable_galera: {get_input: enable_galera}
enable_ceph_storage: {get_input: enable_ceph_storage}
@@ -969,7 +919,7 @@ index ea0b3af..c8b162a 100644
enable_swift_storage: {get_input: enable_swift_storage}
mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
mysql_max_connections: {get_input: mysql_max_connections}
-@@ -1136,6 +1200,17 @@ resources:
+@@ -1136,6 +1201,17 @@ resources:
mysql_bind_host: {get_input: mysql_network}
mysql_virtual_ip: {get_input: mysql_virtual_ip}
@@ -987,15 +937,17 @@ index ea0b3af..c8b162a 100644
# Neutron
neutron::bind_host: {get_input: neutron_api_network}
neutron::rabbit_password: {get_input: rabbit_password}
-@@ -1152,6 +1227,7 @@ resources:
+@@ -1152,7 +1228,9 @@ resources:
neutron_flat_networks: {get_input: neutron_flat_networks}
neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
+ neutron::agents::dhcp::enable_force_metadata: {get_input: neutron_enable_force_metadata}
neutron_agent_mode: {get_input: neutron_agent_mode}
++ neutron_tenant_network: {get_input: neutron_tenant_network}
neutron_router_distributed: {get_input: neutron_router_distributed}
neutron::core_plugin: {get_input: neutron_core_plugin}
-@@ -1198,6 +1274,27 @@ resources:
+ neutron::service_plugins: {get_input: neutron_service_plugins}
+@@ -1198,6 +1276,27 @@ resources:
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -1073,7 +1025,7 @@ index 4b7fd81..7dbc2e9 100644
tripleo::loadbalancer::heat_cloudwatch: true
tripleo::loadbalancer::heat_cfn: true
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
-index cd41cc7..8bbe7a3 100644
+index cd41cc7..959cf90 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
@@ -55,6 +55,26 @@ if $rbd_ephemeral_storage or $rbd_persistent_storage {
@@ -1103,7 +1055,7 @@ index cd41cc7..8bbe7a3 100644
if hiera('cinder_enable_nfs_backend', false) {
if str2bool($::selinux) {
selboolean { 'virt_use_nfs':
-@@ -75,9 +95,53 @@ class { '::neutron::plugins::ml2':
+@@ -75,9 +95,82 @@ class { '::neutron::plugins::ml2':
tenant_network_types => [hiera('neutron_tenant_network_type')],
}
@@ -1138,12 +1090,41 @@ index cd41cc7..8bbe7a3 100644
+
+ }
+
-+ class { 'neutron::plugins::ovs::opendaylight':
++ if hiera('opendaylight_features', 'odl-ovsdb-openstack') =~ /odl-vpnservice-openstack/ {
++ $odl_tunneling_ip = hiera('neutron::agents::ml2::ovs::local_ip')
++ $private_network = hiera('neutron_tenant_network')
++ $cidr_arr = split($private_network, '/')
++ $private_mask = $cidr_arr[1]
++ $private_subnet = inline_template("<%= require 'ipaddr'; IPAddr.new('$private_network').mask('$private_mask') -%>")
++ $odl_ovsdb_iface = "tcp:${opendaylight_controller_ip}:6640"
++ $odl_port = hiera('opendaylight_port')
++ $file_setupTEPs = '/tmp/setup_TEPs.py'
++ $astute_yaml = "network_metadata:
++ vips:
++ management:
++ ipaddr: ${opendaylight_controller_ip}
++opendaylight:
++ rest_api_port: ${odl_port}
++ bgpvpn_gateway: 11.0.0.254
++private_network_range: ${private_subnet}/${private_mask}"
++
++ file { '/etc/astute.yaml':
++ content => $astute_yaml,
++ }
++ exec { 'setup_TEPs':
++ # At the moment the connection between ovs and ODL is no HA if vpnfeature is activated
++ command => "python $file_setupTEPs $opendaylight_controller_ip $odl_tunneling_ip $odl_ovsdb_iface",
++ require => File['/etc/astute.yaml'],
++ path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
++ }
++ } else {
++ class { 'neutron::plugins::ovs::opendaylight':
+ odl_controller_ip => $opendaylight_controller_ip,
+ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
+ odl_port => hiera('opendaylight_port'),
+ odl_username => hiera('opendaylight_username'),
+ odl_password => hiera('opendaylight_password'),
++ }
+ }
+
+} elsif 'onos_ml2' in hiera('neutron_mechanism_drivers') {
@@ -1161,7 +1142,7 @@ index cd41cc7..8bbe7a3 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
-index 1f6c2be..1e3f707 100644
+index 1f6c2be..a016d2e 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -30,6 +30,21 @@ if hiera('step') >= 1 {
@@ -1215,10 +1196,22 @@ index 1f6c2be..1e3f707 100644
include ::neutron::agents::dhcp
include ::neutron::agents::metadata
-@@ -237,15 +253,99 @@ if hiera('step') >= 3 {
+@@ -237,15 +253,140 @@ if hiera('step') >= 3 {
require => Package['neutron'],
}
++ # SDNVPN Hack
++ if ('networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin' in hiera('neutron::service_plugins'))
++ {
++ class { 'neutron::config':
++ server_config => {
++ 'service_providers/service_provider' => {
++ 'value' => 'BGPVPN:OpenDaylight:networking_bgpvpn.neutron.services.service_drivers.opendaylight.odl.OpenDaylightBgpvpnDriver:default'
++ }
++ }
++ }
++ }
++
+ if 'onos_ml2' in hiera('neutron_mechanism_drivers') {
+ # config neutron service_plugins to onos driver
+ class { '::neutron':
@@ -1284,12 +1277,41 @@ index 1f6c2be..1e3f707 100644
+ }
+
+ if str2bool(hiera('opendaylight_install', 'false')) {
-+ class { 'neutron::plugins::ovs::opendaylight':
-+ odl_controller_ip => $opendaylight_controller_ip,
-+ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
-+ odl_port => hiera('opendaylight_port'),
-+ odl_username => hiera('opendaylight_username'),
-+ odl_password => hiera('opendaylight_password'),
++ if hiera('opendaylight_features', 'odl-ovsdb-openstack') =~ /odl-vpnservice-openstack/ {
++ $odl_tunneling_ip = hiera('neutron::agents::ml2::ovs::local_ip')
++ $private_network = hiera('neutron_tenant_network')
++ $cidr_arr = split($private_network, '/')
++ $private_mask = $cidr_arr[1]
++ $private_subnet = inline_template("<%= require 'ipaddr'; IPAddr.new('$private_network').mask('$private_mask') -%>")
++ $odl_ovsdb_iface = "tcp:${opendaylight_controller_ip}:6640"
++ $odl_port = hiera('opendaylight_port')
++ $file_setupTEPs = '/tmp/setup_TEPs.py'
++ $astute_yaml = "network_metadata:
++ vips:
++ management:
++ ipaddr: ${opendaylight_controller_ip}
++opendaylight:
++ rest_api_port: ${odl_port}
++ bgpvpn_gateway: 11.0.0.254
++private_network_range: ${private_subnet}/${private_mask}"
++
++ file { '/etc/astute.yaml':
++ content => $astute_yaml,
++ }
++ exec { 'setup_TEPs':
++ # At the moment the connection between ovs and ODL is no HA if vpnfeature is activated
++ command => "python $file_setupTEPs $opendaylight_controller_ip $odl_tunneling_ip $odl_ovsdb_iface",
++ require => File['/etc/astute.yaml'],
++ path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
++ }
++ } else {
++ class { 'neutron::plugins::ovs::opendaylight':
++ odl_controller_ip => $opendaylight_controller_ip,
++ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
++ odl_port => hiera('opendaylight_port'),
++ odl_username => hiera('opendaylight_username'),
++ odl_password => hiera('opendaylight_password'),
++ }
+ }
+ }
+
@@ -1318,7 +1340,7 @@ index 1f6c2be..1e3f707 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::nexus1000v
-@@ -280,8 +380,6 @@ if hiera('step') >= 3 {
+@@ -280,8 +421,6 @@ if hiera('step') >= 3 {
}
Service['neutron-server'] -> Service['neutron-dhcp-service']
@@ -1327,7 +1349,7 @@ index 1f6c2be..1e3f707 100644
Service['neutron-server'] -> Service['neutron-metadata']
include ::cinder
-@@ -447,6 +545,20 @@ if hiera('step') >= 3 {
+@@ -447,6 +586,20 @@ if hiera('step') >= 3 {
Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
@@ -1349,7 +1371,7 @@ index 1f6c2be..1e3f707 100644
include ::heat
include ::heat::api
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
-index 3fb92f3..5d90e9a 100644
+index 3fb92f3..a05fe8a 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -380,6 +380,21 @@ if hiera('step') >= 2 {
@@ -1410,7 +1432,7 @@ index 3fb92f3..5d90e9a 100644
class { '::neutron::agents::metadata':
manage_service => false,
enabled => false,
-@@ -609,18 +627,80 @@ if hiera('step') >= 3 {
+@@ -609,18 +627,109 @@ if hiera('step') >= 3 {
notify => Service['neutron-dhcp-service'],
require => Package['neutron'],
}
@@ -1457,12 +1479,41 @@ index 3fb92f3..5d90e9a 100644
+ }
+
+ if str2bool(hiera('opendaylight_install', 'false')) {
-+ class { 'neutron::plugins::ovs::opendaylight':
-+ odl_controller_ip => $opendaylight_controller_ip,
-+ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
-+ odl_port => hiera('opendaylight_port'),
-+ odl_username => hiera('opendaylight_username'),
-+ odl_password => hiera('opendaylight_password'),
++ if hiera('opendaylight_features', 'odl-ovsdb-openstack') =~ /odl-vpnservice-openstack/ {
++ $odl_tunneling_ip = hiera('neutron::agents::ml2::ovs::local_ip')
++ $odl_ovsdb_iface = "tcp:${opendaylight_controller_ip}:6640"
++ $private_network = hiera('neutron_tenant_network')
++ $cidr_arr = split($private_network, '/')
++ $private_mask = $cidr_arr[1]
++ $private_subnet = inline_template("<%= require 'ipaddr'; IPAddr.new('$private_network').mask('$private_mask') -%>")
++ $odl_port = hiera('opendaylight_port')
++ $file_setupTEPs = '/tmp/setup_TEPs.py'
++ $astute_yaml = "network_metadata:
++ vips:
++ management:
++ ipaddr: ${opendaylight_controller_ip}
++opendaylight:
++ rest_api_port: ${odl_port}
++ bgpvpn_gateway: 11.0.0.254
++private_network_range: ${private_subnet}/${private_mask}"
++
++ file { '/etc/astute.yaml':
++ content => $astute_yaml,
++ }
++ exec { 'setup_TEPs':
++ # At the moment the connection between ovs and ODL is no HA if vpnfeature is activated
++ command => "python $file_setupTEPs $opendaylight_controller_ip $odl_tunneling_ip $odl_ovsdb_iface",
++ require => File['/etc/astute.yaml'],
++ path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
++ }
++ } else {
++ class { 'neutron::plugins::ovs::opendaylight':
++ odl_controller_ip => $opendaylight_controller_ip,
++ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
++ odl_port => hiera('opendaylight_port'),
++ odl_username => hiera('opendaylight_username'),
++ odl_password => hiera('opendaylight_password'),
++ }
+ }
+ }
+ if ! str2bool(hiera('opendaylight_enable_l3', 'no')) {
@@ -1475,13 +1526,13 @@ index 3fb92f3..5d90e9a 100644
+ #config ml2_conf.ini with onos url address
+ $onos_port = hiera('onos_port')
+ $private_ip = hiera('neutron::agents::ml2::ovs::local_ip')
-
++
+ neutron_plugin_ml2 {
+ 'onos/username': value => 'admin';
+ 'onos/password': value => 'admin';
+ 'onos/url_path': value => "http://${controller_node_ips[0]}:${onos_port}/onos/vtn";
+ }
-+
+
+ } else {
+ class { '::neutron::agents::l3' :
+ manage_service => false,
@@ -1497,7 +1548,7 @@ index 3fb92f3..5d90e9a 100644
if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::ucsm
}
-@@ -645,8 +725,10 @@ if hiera('step') >= 3 {
+@@ -645,8 +754,10 @@ if hiera('step') >= 3 {
if hiera('neutron_enable_bigswitch_ml2', false) {
include ::neutron::plugins::ml2::bigswitch::restproxy
}
@@ -1510,7 +1561,7 @@ index 3fb92f3..5d90e9a 100644
}
neutron_dhcp_agent_config {
'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
-@@ -813,13 +895,13 @@ if hiera('step') >= 3 {
+@@ -813,13 +924,13 @@ if hiera('step') >= 3 {
swift::storage::filter::healthcheck { $swift_components : }
}
@@ -1525,7 +1576,7 @@ index 3fb92f3..5d90e9a 100644
$ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
}
}
-@@ -879,6 +961,62 @@ if hiera('step') >= 3 {
+@@ -879,6 +990,62 @@ if hiera('step') >= 3 {
enabled => false,
}
@@ -1588,7 +1639,7 @@ index 3fb92f3..5d90e9a 100644
# httpd/apache and horizon
# NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
class { '::apache' :
-@@ -1055,62 +1193,21 @@ if hiera('step') >= 4 {
+@@ -1055,62 +1222,21 @@ if hiera('step') >= 4 {
clone_params => 'interleave=true',
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
@@ -1655,7 +1706,7 @@ index 3fb92f3..5d90e9a 100644
pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-clone",
-@@ -1120,65 +1217,110 @@ if hiera('step') >= 4 {
+@@ -1120,65 +1246,110 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
Pacemaker::Resource::Service[$::neutron::params::server_service]],
}
@@ -1822,7 +1873,7 @@ index 3fb92f3..5d90e9a 100644
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => 'interleave=true',
-@@ -1276,7 +1418,7 @@ if hiera('step') >= 4 {
+@@ -1276,7 +1447,7 @@ if hiera('step') >= 4 {
Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
}
@@ -1831,7 +1882,7 @@ index 3fb92f3..5d90e9a 100644
case downcase(hiera('ceilometer_backend')) {
/mysql/: {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
-@@ -1298,10 +1440,19 @@ if hiera('step') >= 4 {
+@@ -1298,10 +1469,19 @@ if hiera('step') >= 4 {
pacemaker::resource::service { $::ceilometer::params::api_service_name :
clone_params => 'interleave=true',
}
@@ -1853,7 +1904,7 @@ index 3fb92f3..5d90e9a 100644
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
-@@ -1315,8 +1466,19 @@ if hiera('step') >= 4 {
+@@ -1315,8 +1495,19 @@ if hiera('step') >= 4 {
# Fedora doesn't know `require-all` parameter for constraints yet
if $::operatingsystem == 'Fedora' {
$redis_ceilometer_constraint_params = undef
@@ -1873,7 +1924,7 @@ index 3fb92f3..5d90e9a 100644
}
pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint':
constraint_type => 'order',
-@@ -1328,6 +1490,16 @@ if hiera('step') >= 4 {
+@@ -1328,6 +1519,16 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Ocf['redis'],
Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]],
}
@@ -1890,7 +1941,7 @@ index 3fb92f3..5d90e9a 100644
pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-clone",
-@@ -1378,53 +1550,37 @@ if hiera('step') >= 4 {
+@@ -1378,53 +1579,37 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
Pacemaker::Resource::Ocf['delay']],
}
@@ -2223,5 +2274,5 @@ index 0000000..6488e0e
+ - - {get_attr: [OpenDaylightDeployment, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
--
-2.5.5
+2.5.0