Aodh fixes 67/8267/2
authorMichael Chapman <michapma@redhat.com>
Thu, 28 Jan 2016 01:05:58 +0000 (20:05 -0500)
committerMichael Chapman <woppin@gmail.com>
Fri, 29 Jan 2016 01:16:38 +0000 (12:16 +1100)
instack.sh:
Patch puppet-tripleo to include aodh loadbalancing

tripleo-heat-templates:
Remove ceilometer services that are replaced by aodh
Add rabbit_hosts to aodh config
Add ceilometer config file that was missing
Add nobody group to aodh user

Change-Id: Ie25cdbf44fc7f23bd65a0af23358b24e3032ea81

build/aodh-puppet-tripleo.patch [new file with mode: 0644]
build/instack.sh
build/opnfv-tripleo-heat-templates.patch

diff --git a/build/aodh-puppet-tripleo.patch b/build/aodh-puppet-tripleo.patch
new file mode 100644 (file)
index 0000000..819b906
--- /dev/null
@@ -0,0 +1,111 @@
+From 784cd3f4e6481b9c802db25ab379fccdab4bd1c3 Mon Sep 17 00:00:00 2001
+From: Emilien Macchi <emilien@redhat.com>
+Date: Tue, 3 Nov 2015 17:43:01 -0500
+Subject: [PATCH] loadbalancer: add Aodh API support
+
+Add Aodh (Ceilometer Alarming) support in TripleO Loadbalancer config.
+
+Change-Id: I891985da9248a88c6ce2df1dd186881f582605ee
+---
+ manifests/loadbalancer.pp | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
+
+diff --git a/manifests/loadbalancer.pp b/manifests/loadbalancer.pp
+index 16a4f80..2fcfac6 100644
+--- a/manifests/loadbalancer.pp
++++ b/manifests/loadbalancer.pp
+@@ -130,6 +130,11 @@
+ #  When set, enables SSL on the Ceilometer public API endpoint using the specified file.
+ #  Defaults to undef
+ #
++# [*aodh_certificate*]
++#  Filename of an HAProxy-compatible certificate and key file
++#  When set, enables SSL on the Aodh public API endpoint using the specified file.
++#  Defaults to undef
++#
+ # [*swift_certificate*]
+ #  Filename of an HAProxy-compatible certificate and key file
+ #  When set, enables SSL on the Swift public API endpoint using the specified file.
+@@ -198,6 +203,10 @@
+ #  (optional) Enable or not Ceilometer API binding
+ #  Defaults to false
+ #
++# [*aodh*]
++#  (optional) Enable or not Aodh API binding
++#  Defaults to false
++#
+ # [*swift_proxy_server*]
+ #  (optional) Enable or not Swift API binding
+ #  Defaults to false
+@@ -262,6 +271,7 @@ class tripleo::loadbalancer (
+   $glance_certificate        = undef,
+   $nova_certificate          = undef,
+   $ceilometer_certificate    = undef,
++  $aodh_certificate          = undef,
+   $swift_certificate         = undef,
+   $heat_certificate          = undef,
+   $horizon_certificate       = undef,
+@@ -278,6 +288,7 @@ class tripleo::loadbalancer (
+   $nova_metadata             = false,
+   $nova_novncproxy           = false,
+   $ceilometer                = false,
++  $aodh                      = false,
+   $swift_proxy_server        = false,
+   $heat_api                  = false,
+   $heat_cloudwatch           = false,
+@@ -421,6 +432,11 @@ class tripleo::loadbalancer (
+   } else {
+     $ceilometer_bind_certificate = $service_certificate
+   }
++  if $aodh_certificate {
++    $aodh_bind_certificate = $aodh_certificate
++  } else {
++    $aodh_bind_certificate = $service_certificate
++  }
+   if $swift_certificate {
+     $swift_bind_certificate = $swift_certificate
+   } else {
+@@ -558,6 +574,19 @@ class tripleo::loadbalancer (
+     }
+   }
++  $aodh_api_vip = hiera('aodh_api_vip', $controller_virtual_ip)
++  if $aodh_bind_certificate {
++    $aodh_bind_opts = {
++      "${aodh_api_vip}:8042" => [],
++      "${public_virtual_ip}:13042" => ['ssl', 'crt', $aodh_bind_certificate],
++    }
++  } else {
++    $aodh_bind_opts = {
++      "${aodh_api_vip}:8042" => [],
++      "${public_virtual_ip}:8042" => [],
++    }
++  }
++
+   $swift_proxy_vip = hiera('swift_proxy_vip', $controller_virtual_ip)
+   if $swift_bind_certificate {
+     $swift_bind_opts = {
+@@ -840,6 +869,20 @@ class tripleo::loadbalancer (
+     }
+   }
++  if $aodh {
++    haproxy::listen { 'aodh':
++      bind             => $aodh_bind_opts,
++      collect_exported => false,
++    }
++    haproxy::balancermember { 'aodh':
++      listening_service => 'aodh',
++      ports             => '8042',
++      ipaddresses       => hiera('aodh_api_node_ips', $controller_hosts_real),
++      server_names      => $controller_hosts_names_real,
++      options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
++    }
++  }
++
+   if $swift_proxy_server {
+     haproxy::listen { 'swift_proxy_server':
+       bind             => $swift_bind_opts,
+-- 
+1.8.3.1
+
index a0f2d0f..8b00bbe 100755 (executable)
@@ -333,10 +333,15 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-template
 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" \
                                          -a overcloud-full-opendaylight.qcow2
+
 LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-cinder-quota-fix.patch:/tmp \
                                          --run-command "cd /etc/puppet/modules/cinder && patch -Np1 < /tmp/puppet-cinder-quota-fix.patch" \
                                          -a overcloud-full-opendaylight.qcow2
 
+LIBGUESTFS_BACKEND=direct virt-customize --upload ../aodh-puppet-tripleo.patch:/tmp \
+                                         --run-command "cd /etc/puppet/modules/tripleo && patch -Np1 < /tmp/aodh-puppet-tripleo.patch" \
+                                         -a overcloud-full-opendaylight.qcow2
+
 # adds tripleoclient aodh workaround
 # for keystone
 LIBGUESTFS_BACKEND=direct virt-customize --upload ../aodh-tripleoclient.patch:/tmp \
index 04ba061..c456a36 100644 (file)
@@ -1,4 +1,4 @@
-From 38d7938ada285c980298ccee22bea3e4c4c9ff33 Mon Sep 17 00:00:00 2001
+From b4edc1dff23217add43d92cac3c2906dcd1c74d1 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
@@ -11,17 +11,17 @@ Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
  network/endpoints/endpoint_map.yaml                |  31 ++
  overcloud-resource-registry-puppet.yaml            |   3 +
  overcloud-without-mergepy.yaml                     |  87 +++++
- puppet/all-nodes-config.yaml                       |  16 +
+ puppet/all-nodes-config.yaml                       |  17 +
  puppet/compute.yaml                                |  35 ++
  puppet/controller.yaml                             |  87 ++++-
  puppet/hieradata/common.yaml                       |   1 +
  puppet/hieradata/controller.yaml                   |   3 +
  puppet/manifests/overcloud_compute.pp              |  33 +-
- puppet/manifests/overcloud_controller.pp           | 104 +++++-
- puppet/manifests/overcloud_controller_pacemaker.pp | 394 +++++++++++++++------
+ puppet/manifests/overcloud_controller.pp           | 104 ++++-
+ puppet/manifests/overcloud_controller_pacemaker.pp | 434 ++++++++++++++-------
  puppet/manifests/overcloud_opendaylight.pp         |  27 ++
- puppet/opendaylight-puppet.yaml                    | 217 ++++++++++++
- 17 files changed, 979 insertions(+), 126 deletions(-)
+ puppet/opendaylight-puppet.yaml                    | 217 +++++++++++
+ 17 files changed, 986 insertions(+), 160 deletions(-)
  create mode 100644 environments/onos.yaml
  create mode 100644 environments/opendaylight-external.yaml
  create mode 100644 environments/opendaylight.yaml
@@ -408,7 +408,7 @@ index a532c2f..5206004 100644
      description: VIP for Ceilometer API internal endpoint
      value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
 diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml
-index 2bc519b..6342df3 100644
+index 2bc519b..d649ba0 100644
 --- a/puppet/all-nodes-config.yaml
 +++ b/puppet/all-nodes-config.yaml
 @@ -8,6 +8,8 @@ parameters:
@@ -455,6 +455,14 @@ index 2bc519b..6342df3 100644
                  nova_api_node_ips:
                    str_replace:
                      template: "['SERVERS_LIST']"
+@@ -239,6 +255,7 @@ resources:
+                 neutron::rabbit_hosts: *rabbit_nodes_array
+                 nova::rabbit_hosts: *rabbit_nodes_array
+                 keystone::rabbit_hosts: *rabbit_nodes_array
++                aodh::rabbit_hosts: *rabbit_nodes_array
+ outputs:
+   config_id:
 diff --git a/puppet/compute.yaml b/puppet/compute.yaml
 index 70c7403..13fd4f6 100644
 --- a/puppet/compute.yaml
@@ -967,7 +975,7 @@ index 1f6c2be..474bb1d 100644
    include ::heat
    include ::heat::api
 diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
-index 3fb92f3..4dc4f7f 100644
+index 3fb92f3..5992602 100644
 --- a/puppet/manifests/overcloud_controller_pacemaker.pp
 +++ b/puppet/manifests/overcloud_controller_pacemaker.pp
 @@ -380,6 +380,21 @@ if hiera('step') >= 2 {
@@ -1042,7 +1050,7 @@ index 3fb92f3..4dc4f7f 100644
 +    } else {
 +      $opendaylight_controller_ip = hiera('opendaylight_controller_ip')
 +    }
++
 +    $opendaylight_port = hiera('opendaylight_port')
 +    $private_ip = hiera('neutron::agents::ml2::ovs::local_ip')
 +
@@ -1052,7 +1060,7 @@ index 3fb92f3..4dc4f7f 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,
@@ -1136,7 +1144,40 @@ index 3fb92f3..4dc4f7f 100644
    # httpd/apache and horizon
    # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
    class { '::apache' :
-@@ -1055,62 +1147,21 @@ if hiera('step') >= 4 {
+@@ -914,6 +1006,32 @@ if hiera('step') >= 3 {
+ if hiera('step') >= 4 {
+   include ::keystone::cron::token_flush
++  $event_pipeline = "---
++sources:
++    - name: event_source
++      events:
++          - \"*\"
++      sinks:
++          - event_sink
++sinks:
++    - name: event_sink
++      transformers:
++      triggers:
++      publishers:
++          - notifier://?topic=alarm.all
++          - notifier://
++"
++
++  # aodh hacks
++  file { '/etc/ceilometer/event_pipeline':
++    ensure  => present,
++    content => $event_pipeline
++  }
++
++  user { 'aodh':
++     groups => 'nobody'
++  }
++
+   if $pacemaker_master {
+     # Keystone
+@@ -1055,62 +1173,21 @@ if hiera('step') >= 4 {
        clone_params => 'interleave=true',
        require      => Pacemaker::Resource::Service[$::keystone::params::service_name],
      }
@@ -1203,7 +1244,7 @@ index 3fb92f3..4dc4f7f 100644
      pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
        constraint_type => 'order',
        first_resource  => "${::keystone::params::service_name}-clone",
-@@ -1120,65 +1171,110 @@ if hiera('step') >= 4 {
+@@ -1120,65 +1197,110 @@ if hiera('step') >= 4 {
        require         => [Pacemaker::Resource::Service[$::keystone::params::service_name],
                            Pacemaker::Resource::Service[$::neutron::params::server_service]],
      }
@@ -1370,7 +1411,7 @@ index 3fb92f3..4dc4f7f 100644
      # Nova
      pacemaker::resource::service { $::nova::params::api_service_name :
        clone_params => 'interleave=true',
-@@ -1276,7 +1372,7 @@ if hiera('step') >= 4 {
+@@ -1276,7 +1398,7 @@ if hiera('step') >= 4 {
                    Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
      }
  
@@ -1379,13 +1420,15 @@ index 3fb92f3..4dc4f7f 100644
      case downcase(hiera('ceilometer_backend')) {
        /mysql/: {
          pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
-@@ -1304,6 +1400,21 @@ if hiera('step') >= 4 {
-     pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :
+@@ -1298,10 +1420,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',
 +    }
@@ -1396,12 +1439,10 @@ index 3fb92f3..4dc4f7f 100644
 +      clone_params => 'interleave=true',
 +    }
 +    pacemaker::resource::service { $::aodh::params::evaluator_service_name :
-+      clone_params => 'interleave=true',
-+    }
-     pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
        clone_params => 'interleave=true',
      }
-@@ -1315,8 +1426,19 @@ if hiera('step') >= 4 {
+     pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
+@@ -1315,8 +1446,19 @@ if hiera('step') >= 4 {
      # Fedora doesn't know `require-all` parameter for constraints yet
      if $::operatingsystem == 'Fedora' {
        $redis_ceilometer_constraint_params = undef
@@ -1421,7 +1462,7 @@ index 3fb92f3..4dc4f7f 100644
      }
      pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint':
        constraint_type   => 'order',
-@@ -1328,6 +1450,16 @@ if hiera('step') >= 4 {
+@@ -1328,6 +1470,16 @@ if hiera('step') >= 4 {
        require           => [Pacemaker::Resource::Ocf['redis'],
                              Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]],
      }
@@ -1438,45 +1479,76 @@ index 3fb92f3..4dc4f7f 100644
      pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
        constraint_type => 'order',
        first_resource  => "${::keystone::params::service_name}-clone",
-@@ -1426,6 +1558,38 @@ if hiera('step') >= 4 {
-       require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],
-                   Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
+@@ -1378,53 +1530,37 @@ if hiera('step') >= 4 {
+       require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
+                   Pacemaker::Resource::Ocf['delay']],
      }
+-    pacemaker::constraint::base { 'ceilometer-delay-then-ceilometer-alarm-evaluator-constraint':
 +    pacemaker::constraint::base { 'aodh-delay-then-aodh-evaluator-constraint':
-+      constraint_type => 'order',
-+      first_resource  => 'delay-clone',
+       constraint_type => 'order',
+       first_resource  => 'delay-clone',
+-      second_resource => "${::ceilometer::params::alarm_evaluator_service_name}-clone",
 +      second_resource => "${::aodh::params::evaluator_service_name}-clone",
-+      first_action    => 'start',
-+      second_action   => 'start',
+       first_action    => 'start',
+       second_action   => 'start',
+-      require         => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],
 +      require         => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
-+                          Pacemaker::Resource::Ocf['delay']],
-+    }
+                           Pacemaker::Resource::Ocf['delay']],
+     }
+-    pacemaker::constraint::colocation { 'ceilometer-alarm-evaluator-with-ceilometer-delay-colocation':
+-      source  => "${::ceilometer::params::alarm_evaluator_service_name}-clone",
 +    pacemaker::constraint::colocation { 'aodh-evaluator-with-aodh-delay-colocation':
 +      source  => "${::aodh::params::evaluator_service_name}-clone",
-+      target  => 'delay-clone',
-+      score   => 'INFINITY',
+       target  => 'delay-clone',
+       score   => 'INFINITY',
+-      require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
 +      require => [Pacemaker::Resource::Service[$::horizon::params::http_service],
-+                  Pacemaker::Resource::Ocf['delay']],
-+    }
+                   Pacemaker::Resource::Ocf['delay']],
+     }
+-    pacemaker::constraint::base { 'ceilometer-alarm-evaluator-then-ceilometer-alarm-notifier-constraint':
+-      constraint_type => 'order',
+-      first_resource  => "${::ceilometer::params::alarm_evaluator_service_name}-clone",
+-      second_resource => "${::ceilometer::params::alarm_notifier_service_name}-clone",
+-      first_action    => 'start',
+-      second_action   => 'start',
+-      require         => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],
+-                          Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
+-    }
+-    pacemaker::constraint::colocation { 'ceilometer-alarm-notifier-with-ceilometer-alarm-evaluator-colocation':
+-      source  => "${::ceilometer::params::alarm_notifier_service_name}-clone",
+-      target  => "${::ceilometer::params::alarm_evaluator_service_name}-clone",
+-      score   => 'INFINITY',
+-      require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name],
+-                  Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
+-    }
+-    pacemaker::constraint::base { 'ceilometer-alarm-notifier-then-ceilometer-notification-constraint':
 +    pacemaker::constraint::base { 'aodh-evaluator-then-aodh-notifier-constraint':
-+      constraint_type => 'order',
+       constraint_type => 'order',
+-      first_resource  => "${::ceilometer::params::alarm_notifier_service_name}-clone",
+-      second_resource => "${::ceilometer::params::agent_notification_service_name}-clone",
 +      first_resource  => "${::aodh::params::evaluator_service_name}-clone",
 +      second_resource => "${::aodh::params::notifier_service_name}-clone",
-+      first_action    => 'start',
-+      second_action   => 'start',
+       first_action    => 'start',
+       second_action   => 'start',
+-      require         => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],
+-                          Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
 +      require         => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
 +                          Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
-+    }
+     }
+-    pacemaker::constraint::colocation { 'ceilometer-notification-with-ceilometer-alarm-notifier-colocation':
+-      source  => "${::ceilometer::params::agent_notification_service_name}-clone",
+-      target  => "${::ceilometer::params::alarm_notifier_service_name}-clone",
 +    pacemaker::constraint::colocation { 'aodh-notifier-with-aodh-evaluator-colocation':
 +      source  => "${::aodh::params::notifier_service_name}-clone",
 +      target  => "${::aodh::params::evaluator_service_name}-clone",
-+      score   => 'INFINITY',
+       score   => 'INFINITY',
+-      require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],
+-                  Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
 +      require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
 +                  Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
-+    }
+     }
      if downcase(hiera('ceilometer_backend')) == 'mongodb' {
        pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':
-         constraint_type => 'order',
 diff --git a/puppet/manifests/overcloud_opendaylight.pp b/puppet/manifests/overcloud_opendaylight.pp
 new file mode 100644
 index 0000000..33f609a
@@ -1734,5 +1806,5 @@ index 0000000..b876dc7
 +      - - {get_attr: [OpenDaylightDeployment, deploy_stdout]}
 +        - {get_param: UpdateIdentifier}
 -- 
-2.5.0
+2.5.4 (Apple Git-61)