From f28880f75359edb99f3e4e6b2680fdb814774903 Mon Sep 17 00:00:00 2001 From: Dan Radez Date: Mon, 15 Feb 2016 18:49:00 -0500 Subject: Adding SDNVPN support Change-Id: Id2d6d46a53129d4ae2f93fad835536da067e42df JIRA: APEX-51 Signed-off-by: Dan Radez (cherry picked from commit c86bd1f24647646b7489cd72e0a0bb91f4a505f1) --- build/instack.sh | 3 +- build/opnfv-tripleo-heat-templates.patch | 121 +++++++++++++++++++------------ 2 files changed, 76 insertions(+), 48 deletions(-) (limited to 'build') diff --git a/build/instack.sh b/build/instack.sh index 24f6f1f5..8c92a059 100755 --- a/build/instack.sh +++ b/build/instack.sh @@ -260,7 +260,8 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "cd /etc/puppet/modules/ && rm -rf aodh && tar xzf puppet-aodh.tar.gz" \ --run-command "yum remove -y openstack-neutron-openvswitch" \ --run-command "echo 'nf_conntrack_proto_sctp' > /etc/modules-load.d/nf_conntrack_proto_sctp.conf" \ - --install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ + --run-command "if ! rpm -q epel-release > /dev/null; then yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm; fi" \ + --install https://github.com/michaeltchapman/networking_rpm/raw/master/openstack-neutron-bgpvpn-2015.2-1.el7.centos.noarch.rpm \ --install "$AODH_PKG,ceph" \ -a overcloud-full-opendaylight.qcow2 diff --git a/build/opnfv-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch index 7933927a..f75c430b 100644 --- a/build/opnfv-tripleo-heat-templates.patch +++ b/build/opnfv-tripleo-heat-templates.patch @@ -1,35 +1,14 @@ -From 9593cf0e62cb324a50163f931842a3f32d11cae6 Mon Sep 17 00:00:00 2001 +From d86b6e5cc493645e01484a1ea6cfff29cce2fa3d Mon Sep 17 00:00:00 2001 From: Tim Rozet 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. +Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support -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 -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 --- environments/onos.yaml | 8 + environments/opendaylight-external.yaml | 25 ++ environments/opendaylight.yaml | 25 ++ environments/opendaylight_l3.yaml | 9 + + environments/opendaylight_sdnvpn.yaml | 29 ++ environments/opendaylight_sfc.yaml | 28 ++ network/endpoints/endpoint_map.yaml | 31 ++ overcloud-resource-registry-puppet.yaml | 3 + @@ -41,14 +20,15 @@ update the nova floating pool id puppet/hieradata/controller.yaml | 5 +- puppet/manifests/overcloud_compute.pp | 31 +- puppet/manifests/overcloud_controller.pp | 128 +++++- - puppet/manifests/overcloud_controller_pacemaker.pp | 444 ++++++++++++++------- + puppet/manifests/overcloud_controller_pacemaker.pp | 456 ++++++++++++++------- puppet/manifests/overcloud_opendaylight.pp | 27 ++ - puppet/opendaylight-puppet.yaml | 223 +++++++++++ - 18 files changed, 1064 insertions(+), 162 deletions(-) + puppet/opendaylight-puppet.yaml | 223 ++++++++++ + 19 files changed, 1105 insertions(+), 162 deletions(-) create mode 100644 environments/onos.yaml create mode 100644 environments/opendaylight-external.yaml create mode 100644 environments/opendaylight.yaml create mode 100644 environments/opendaylight_l3.yaml + create mode 100644 environments/opendaylight_sdnvpn.yaml create mode 100644 environments/opendaylight_sfc.yaml create mode 100644 puppet/manifests/overcloud_opendaylight.pp create mode 100644 puppet/opendaylight-puppet.yaml @@ -144,6 +124,41 @@ index 0000000..05c0aff + neutron_mechanism_drivers: ['opendaylight'] + neutron_tenant_network_type: vxlan + opendaylight_install: true +diff --git a/environments/opendaylight_sdnvpn.yaml b/environments/opendaylight_sdnvpn.yaml +new file mode 100644 +index 0000000..3a14975 +--- /dev/null ++++ b/environments/opendaylight_sdnvpn.yaml +@@ -0,0 +1,29 @@ ++# Environment file used to enable OpenDaylight ++# Currently uses overcloud image that is assumed ++# to be virt-customized with ODL RPM already on it ++ ++# These parameters customize the OpenDaylight Node ++# The user name and password are for the ODL service ++# Defaults are included here for reference ++#parameter_defaults: ++# OpenDaylightFlavor: baremetal ++# OpenDaylightHostname: opendaylight-server ++# OpenDaylightImage: overcloud-full ++# OpenDaylightUsername: admin ++# OpenDaylightPassword: admin ++ ++parameters: ++ # 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" ++ NeutronL3HA: false ++ NeutronServicePlugins: "router,qos,networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin" ++ ExtraConfig: ++ tripleo::ringbuilder::build_ring: False ++ neutron_mechanism_drivers: ['opendaylight'] ++ neutron_tenant_network_type: vxlan ++ # Enable this if you want OpenDaylight on the contollers ++ # reduce OpenDaylightCount to 0 if you don't want any ++ # OpenDaylight only nodes ++ opendaylight_install: true diff --git a/environments/opendaylight_sfc.yaml b/environments/opendaylight_sfc.yaml new file mode 100644 index 0000000..3dd1e13 @@ -1076,7 +1091,7 @@ index 1f6c2be..1095758 100644 include ::heat include ::heat::api diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp -index 3fb92f3..732afa2 100644 +index 3fb92f3..cb00e9a 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp @@ -380,6 +380,21 @@ if hiera('step') >= 2 { @@ -1128,10 +1143,22 @@ index 3fb92f3..732afa2 100644 class { '::neutron::agents::metadata': manage_service => false, enabled => false, -@@ -609,18 +627,68 @@ if hiera('step') >= 3 { +@@ -609,18 +627,80 @@ if hiera('step') >= 3 { notify => Service['neutron-dhcp-service'], 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:Dummy:networking_bgpvpn.neutron.services.service_drivers.driver_api.BGPVPNDriver:default' ++ } ++ } ++ } ++ } + class { '::neutron::plugins::ml2': flat_networks => split(hiera('neutron_flat_networks'), ','), @@ -1161,7 +1188,7 @@ index 3fb92f3..732afa2 100644 + odl_password => hiera('opendaylight_password'), + odl_port => hiera('opendaylight_port'), + } - ++ + if str2bool(hiera('opendaylight_install', 'false')) { + class { 'neutron::plugins::ovs::opendaylight': + odl_controller_ip => $opendaylight_controller_ip, @@ -1181,7 +1208,7 @@ index 3fb92f3..732afa2 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'; @@ -1203,7 +1230,7 @@ index 3fb92f3..732afa2 100644 if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') { include ::neutron::plugins::ml2::cisco::ucsm } -@@ -645,8 +713,10 @@ if hiera('step') >= 3 { +@@ -645,8 +725,10 @@ if hiera('step') >= 3 { if hiera('neutron_enable_bigswitch_ml2', false) { include ::neutron::plugins::ml2::bigswitch::restproxy } @@ -1216,7 +1243,7 @@ index 3fb92f3..732afa2 100644 } neutron_dhcp_agent_config { 'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false); -@@ -813,13 +883,13 @@ if hiera('step') >= 3 { +@@ -813,13 +895,13 @@ if hiera('step') >= 3 { swift::storage::filter::healthcheck { $swift_components : } } @@ -1231,7 +1258,7 @@ index 3fb92f3..732afa2 100644 $ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}" } } -@@ -879,6 +949,62 @@ if hiera('step') >= 3 { +@@ -879,6 +961,62 @@ if hiera('step') >= 3 { enabled => false, } @@ -1294,7 +1321,7 @@ index 3fb92f3..732afa2 100644 # httpd/apache and horizon # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent class { '::apache' : -@@ -1055,62 +1181,21 @@ if hiera('step') >= 4 { +@@ -1055,62 +1193,21 @@ if hiera('step') >= 4 { clone_params => 'interleave=true', require => Pacemaker::Resource::Service[$::keystone::params::service_name], } @@ -1361,7 +1388,7 @@ index 3fb92f3..732afa2 100644 pacemaker::constraint::base { 'keystone-to-neutron-server-constraint': constraint_type => 'order', first_resource => "${::keystone::params::service_name}-clone", -@@ -1120,65 +1205,110 @@ if hiera('step') >= 4 { +@@ -1120,65 +1217,110 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Service[$::keystone::params::service_name], Pacemaker::Resource::Service[$::neutron::params::server_service]], } @@ -1528,7 +1555,7 @@ index 3fb92f3..732afa2 100644 # Nova pacemaker::resource::service { $::nova::params::api_service_name : clone_params => 'interleave=true', -@@ -1276,7 +1406,7 @@ if hiera('step') >= 4 { +@@ -1276,7 +1418,7 @@ if hiera('step') >= 4 { Pacemaker::Resource::Service[$::nova::params::conductor_service_name]], } @@ -1537,21 +1564,21 @@ index 3fb92f3..732afa2 100644 case downcase(hiera('ceilometer_backend')) { /mysql/: { pacemaker::resource::service { $::ceilometer::params::agent_central_service_name : -@@ -1298,10 +1428,19 @@ if hiera('step') >= 4 { +@@ -1298,10 +1440,19 @@ if hiera('step') >= 4 { pacemaker::resource::service { $::ceilometer::params::api_service_name : clone_params => 'interleave=true', } - pacemaker::resource::service { $::ceilometer::params::alarm_evaluator_service_name : + pacemaker::resource::service { $::aodh::params::notifier_service_name : -+ clone_params => 'interleave=true', -+ } + clone_params => 'interleave=true', + } +- pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name : + pacemaker::resource::service { $::aodh::params::expirer_package_serice : + clone_params => 'interleave=true', + } + pacemaker::resource::service { $::aodh::params::listener_service_name : - clone_params => 'interleave=true', - } -- pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name : ++ clone_params => 'interleave=true', ++ } + pacemaker::resource::service { $::aodh::params::api_service_name : + clone_params => 'interleave=true', + } @@ -1559,7 +1586,7 @@ index 3fb92f3..732afa2 100644 clone_params => 'interleave=true', } pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name : -@@ -1315,8 +1454,19 @@ if hiera('step') >= 4 { +@@ -1315,8 +1466,19 @@ if hiera('step') >= 4 { # Fedora doesn't know `require-all` parameter for constraints yet if $::operatingsystem == 'Fedora' { $redis_ceilometer_constraint_params = undef @@ -1579,7 +1606,7 @@ index 3fb92f3..732afa2 100644 } pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint': constraint_type => 'order', -@@ -1328,6 +1478,16 @@ if hiera('step') >= 4 { +@@ -1328,6 +1490,16 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Ocf['redis'], Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]], } @@ -1596,7 +1623,7 @@ index 3fb92f3..732afa2 100644 pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint': constraint_type => 'order', first_resource => "${::keystone::params::service_name}-clone", -@@ -1378,53 +1538,37 @@ if hiera('step') >= 4 { +@@ -1378,53 +1550,37 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name], Pacemaker::Resource::Ocf['delay']], } @@ -1929,5 +1956,5 @@ index 0000000..6488e0e + - - {get_attr: [OpenDaylightDeployment, deploy_stdout]} + - {get_param: UpdateIdentifier} -- -2.5.0 +1.8.3.1 -- cgit 1.2.3-korg