Adding SDNVPN support 35/10035/6
authorDan Radez <dradez@redhat.com>
Mon, 15 Feb 2016 23:49:00 +0000 (18:49 -0500)
committerMichael Chapman <woppin@gmail.com>
Mon, 22 Feb 2016 03:14:32 +0000 (14:14 +1100)
Change-Id: Id2d6d46a53129d4ae2f93fad835536da067e42df
JIRA: APEX-51
Signed-off-by: Dan Radez <dradez@redhat.com>
build/instack.sh
build/opnfv-tripleo-heat-templates.patch
ci/deploy.sh
config/deploy/deploy_settings.yaml
config/deploy/os-nosdn-nofeature-ha.yaml
config/deploy/os-odl_l2-nofeature-ha.yaml
config/deploy/os-odl_l2-sdnvpn-ha.yaml [new file with mode: 0644]
config/deploy/os-odl_l2-sfc-noha.yaml
config/deploy/os-odl_l3-nofeature-ha.yaml
config/deploy/os-onos-nofeature-ha.yaml
config/deploy/os-opencontrail-nofeature-ha.yaml

index e8fcf7b..932de57 100755 (executable)
@@ -261,6 +261,7 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "yum remove -y openstack-neutron-openvswitch" \
     --run-command "echo 'nf_conntrack_proto_sctp' > /etc/modules-load.d/nf_conntrack_proto_sctp.conf" \
     --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
 
index 7933927..f75c430 100644 (file)
@@ -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 <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.
+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
 
index c89dd58..1b8f36f 100755 (executable)
@@ -304,8 +304,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="
@@ -801,6 +801,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
@@ -884,6 +886,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"
index 0410148..8292dee 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: false
+  vpn: false
index becd6e5..0313f9c 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: false
+  vpn: false
index 0410148..8292dee 100644 (file)
@@ -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 (file)
index 0000000..7350777
--- /dev/null
@@ -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
index 92372a9..6d088af 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: true
+  vpn: false
index 84f9760..69ab5e7 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: false
+  vpn: false
index 53912e9..7f56fbc 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: false
+  vpn: false
index f6ac253..f01a8a9 100644 (file)
@@ -7,3 +7,4 @@ deploy_options:
   tacker: false
   congress: false
   sfc: false
+  vpn: false