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 +++++++++++++++--------- ci/deploy.sh | 7 +- config/deploy/deploy_settings.yaml | 1 + config/deploy/os-nosdn-nofeature-ha.yaml | 1 + config/deploy/os-odl_l2-nofeature-ha.yaml | 1 + config/deploy/os-odl_l2-sdnvpn-ha.yaml | 10 ++ config/deploy/os-odl_l2-sfc-noha.yaml | 1 + config/deploy/os-odl_l3-nofeature-ha.yaml | 1 + config/deploy/os-onos-nofeature-ha.yaml | 1 + config/deploy/os-opencontrail-nofeature-ha.yaml | 1 + 11 files changed, 98 insertions(+), 50 deletions(-) create mode 100644 config/deploy/os-odl_l2-sdnvpn-ha.yaml 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 diff --git a/ci/deploy.sh b/ci/deploy.sh index 218fe9e6..31cd4625 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -301,8 +301,8 @@ parse_inventory_file() { fi eval $(parse_yaml $INVENTORY_FILE) || { - echo "${red}Failed to parse inventory.yaml. Aborting.${reset}" && - exit 1 + echo "${red}Failed to parse inventory.yaml. Aborting.${reset}" && + exit 1 } instack_env_output=" @@ -798,6 +798,8 @@ function undercloud_prep_overcloud_deploy { DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_l3.yaml" elif [ "${deploy_options_array['sfc']}" == 'true' ]; then DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sfc.yaml" + elif [ "${deploy_options_array['vpn']}" == 'true' ]; then + DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sdnvpn.yaml" else DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight.yaml" fi @@ -881,6 +883,7 @@ function undercloud_prep_overcloud_deploy { if [ "$debug" == 'TRUE' ]; then LIBGUESTFS_BACKEND=direct virt-customize -a overcloud-full.qcow2 --root-password password:opnfvapex fi + source stackrc set -o errexit echo "Uploading overcloud glance images" diff --git a/config/deploy/deploy_settings.yaml b/config/deploy/deploy_settings.yaml index 04101485..8292dee5 100644 --- a/config/deploy/deploy_settings.yaml +++ b/config/deploy/deploy_settings.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false diff --git a/config/deploy/os-nosdn-nofeature-ha.yaml b/config/deploy/os-nosdn-nofeature-ha.yaml index becd6e57..0313f9c1 100644 --- a/config/deploy/os-nosdn-nofeature-ha.yaml +++ b/config/deploy/os-nosdn-nofeature-ha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false diff --git a/config/deploy/os-odl_l2-nofeature-ha.yaml b/config/deploy/os-odl_l2-nofeature-ha.yaml index 04101485..8292dee5 100644 --- a/config/deploy/os-odl_l2-nofeature-ha.yaml +++ b/config/deploy/os-odl_l2-nofeature-ha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false diff --git a/config/deploy/os-odl_l2-sdnvpn-ha.yaml b/config/deploy/os-odl_l2-sdnvpn-ha.yaml new file mode 100644 index 00000000..73507772 --- /dev/null +++ b/config/deploy/os-odl_l2-sdnvpn-ha.yaml @@ -0,0 +1,10 @@ +global_params: + ha_enabled: true + +deploy_options: + sdn_controller: opendaylight + sdn_l3: false + tacker: false + congress: false + sfc: false + vpn: true diff --git a/config/deploy/os-odl_l2-sfc-noha.yaml b/config/deploy/os-odl_l2-sfc-noha.yaml index 92372a90..6d088af8 100644 --- a/config/deploy/os-odl_l2-sfc-noha.yaml +++ b/config/deploy/os-odl_l2-sfc-noha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: true + vpn: false diff --git a/config/deploy/os-odl_l3-nofeature-ha.yaml b/config/deploy/os-odl_l3-nofeature-ha.yaml index 84f97602..69ab5e7e 100644 --- a/config/deploy/os-odl_l3-nofeature-ha.yaml +++ b/config/deploy/os-odl_l3-nofeature-ha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false diff --git a/config/deploy/os-onos-nofeature-ha.yaml b/config/deploy/os-onos-nofeature-ha.yaml index 53912e9c..7f56fbc0 100644 --- a/config/deploy/os-onos-nofeature-ha.yaml +++ b/config/deploy/os-onos-nofeature-ha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false diff --git a/config/deploy/os-opencontrail-nofeature-ha.yaml b/config/deploy/os-opencontrail-nofeature-ha.yaml index f6ac253b..f01a8a92 100644 --- a/config/deploy/os-opencontrail-nofeature-ha.yaml +++ b/config/deploy/os-opencontrail-nofeature-ha.yaml @@ -7,3 +7,4 @@ deploy_options: tacker: false congress: false sfc: false + vpn: false -- cgit 1.2.3-korg