]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Introduce support for oslo.messaging amqp driver configuration
authorAndrew Smith <ansmith@redhat.com>
Tue, 10 May 2016 17:17:42 +0000 (13:17 -0400)
committerAndrew Smith <ansmith@redhat.com>
Mon, 16 May 2016 16:31:54 +0000 (12:31 -0400)
This commit adds support for the oslo.messaging amqp rpc_backend which enables
the AMQP 1.0 driver. A proposed feature for the Newton oslo.messaging release is an
update to the AMQP 1.0 driver to support a stateless messaging interconnect for
RPC traffic[1].

This patch:
* use oslo::messaging::amqp resource
* add new parameters for the oslo_messaging_amqp driver
* update spec tests for amqp as alternate rpc_backend
* add feature release note

[1] https://blueprints.launchpad.net/oslo.messaging/+spec/amqp-dispatch-router

Change-Id: I2095cee083c9ca2390df703ad6e3216e428989f9

manifests/init.pp
releasenotes/notes/add_oslo_messaging_amqp-4ae1ae4234921ad3.yaml [new file with mode: 0644]
spec/classes/ceilometer_init_spec.rb

index b1900362ff76a29572187da7dc3113cdfc9ae03a..d8e0a7a1b56393eb5454fb4a241bcea048e1b108 100644 (file)
 #    (Optional) A list of memcached server(s) to use for caching. (list value)
 #    Defaults to $::os_service_default
 #
+# [*amqp_server_request_prefix*]
+#   (Optional) Address prefix used when sending to a specific server
+#   Defaults to $::os_service_default.
+#
+# [*amqp_broadcast_prefix*]
+#   (Optional) address prefix used when broadcasting to all servers
+#   Defaults to $::os_service_default.
+#
+# [*amqp_group_request_prefix*]
+#   (Optional) address prefix when sending to any server in group
+#   Defaults to $::os_service_default.
+#
+# [*amqp_container_name*]
+#   (Optional) Name for the AMQP container
+#   Defaults to $::os_service_default.
+#
+# [*amqp_idle_timeout*]
+#   (Optional) Timeout for inactive connections
+#   Defaults to $::os_service_default.
+#
+# [*amqp_trace*]
+#   (Optional) Debug: dump AMQP frames to stdout
+#   Defaults to $::os_service_default.
+#
+# [*amqp_ssl_ca_file*]
+#   (Optional) CA certificate PEM file to verify server certificate
+#   Defaults to $::os_service_default.
+#
+# [*amqp_ssl_cert_file*]
+#   (Optional) Identifying certificate PEM file to present to clients
+#   Defaults to $::os_service_default.
+#
+# [*amqp_ssl_key_file*]
+#   (Optional) Private key PEM file used to sign cert_file certificate
+#   Defaults to $::os_service_default.
+#
+# [*amqp_ssl_key_password*]
+#   (Optional) Password for decrypting ssl_key_file (if encrypted)
+#   Defaults to $::os_service_default.
+#
+# [*amqp_allow_insecure_clients*]
+#   (Optional) Accept clients using either SSL or plain TCP
+#   Defaults to $::os_service_default.
+#
+# [*amqp_sasl_mechanisms*]
+#   (Optional) Space separated list of acceptable SASL mechanisms
+#   Defaults to $::os_service_default.
+#
+# [*amqp_sasl_config_dir*]
+#   (Optional) Path to directory that contains the SASL configuration
+#   Defaults to $::os_service_default.
+#
+# [*amqp_sasl_config_name*]
+#   (Optional) Name of configuration file (without .conf suffix)
+#   Defaults to $::os_service_default.
+#
+# [*amqp_username*]
+#   (Optional) User name for message broker authentication
+#   Defaults to $::os_service_default.
+#
+# [*amqp_password*]
+#   (Optional) Password for message broker authentication
+#   Defaults to $::os_service_default.
+#
 # === DEPRECATED PARAMETERS:
 #
 # [*alarm_history_time_to_live*]
@@ -180,6 +244,22 @@ class ceilometer(
   $kombu_reconnect_delay              = $::os_service_default,
   $kombu_compression                  = $::os_service_default,
   $memcached_servers                  = $::os_service_default,
+  $amqp_server_request_prefix         = $::os_service_default,
+  $amqp_broadcast_prefix              = $::os_service_default,
+  $amqp_group_request_prefix          = $::os_service_default,
+  $amqp_container_name                = $::os_service_default,
+  $amqp_idle_timeout                  = $::os_service_default,
+  $amqp_trace                         = $::os_service_default,
+  $amqp_ssl_ca_file                   = $::os_service_default,
+  $amqp_ssl_cert_file                 = $::os_service_default,
+  $amqp_ssl_key_file                  = $::os_service_default,
+  $amqp_ssl_key_password              = $::os_service_default,
+  $amqp_allow_insecure_clients        = $::os_service_default,
+  $amqp_sasl_mechanisms               = $::os_service_default,
+  $amqp_sasl_config_dir               = $::os_service_default,
+  $amqp_sasl_config_name              = $::os_service_default,
+  $amqp_username                      = $::os_service_default,
+  $amqp_password                      = $::os_service_default,
   # DEPRECATED PARAMETERS
   $alarm_history_time_to_live         = undef,
 ) {
@@ -232,6 +312,25 @@ class ceilometer(
       kombu_reconnect_delay       => $kombu_reconnect_delay,
       kombu_compression           => $kombu_compression,
     }
+  } elsif $rpc_backend == 'amqp' {
+    oslo::messaging::amqp { 'ceilometer_config':
+      server_request_prefix  => $amqp_server_request_prefix,
+      broadcast_prefix       => $amqp_broadcast_prefix,
+      group_request_prefix   => $amqp_group_request_prefix,
+      container_name         => $amqp_container_name,
+      idle_timeout           => $amqp_idle_timeout,
+      trace                  => $amqp_trace,
+      ssl_ca_file            => $amqp_ssl_ca_file,
+      ssl_cert_file          => $amqp_ssl_cert_file,
+      ssl_key_file           => $amqp_ssl_key_file,
+      ssl_key_password       => $amqp_ssl_key_password,
+      allow_insecure_clients => $amqp_allow_insecure_clients,
+      sasl_mechanisms        => $amqp_sasl_mechanisms,
+      sasl_config_dir        => $amqp_sasl_config_dir,
+      sasl_config_name       => $amqp_sasl_config_name,
+      username               => $amqp_username,
+      password               => $amqp_password,
+    }
   } else {
     nova_config { 'DEFAULT/rpc_backend': value => $rpc_backend }
   }
diff --git a/releasenotes/notes/add_oslo_messaging_amqp-4ae1ae4234921ad3.yaml b/releasenotes/notes/add_oslo_messaging_amqp-4ae1ae4234921ad3.yaml
new file mode 100644 (file)
index 0000000..9e5a06f
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for oslo_messaging_amqp_backend via puppet-oslo resource
index 111ec4642832effa113de9996dec1cec235af7fa..68a360965a75ed3eeda5a60ed9e4169a73a06a25 100644 (file)
@@ -71,6 +71,10 @@ describe 'ceilometer' do
       end
     end
 
+    context 'with amqp rpc_backend value' do
+      it_configures 'amqp support'
+    end
+
   end
 
   shared_examples_for 'a ceilometer base installation' do
@@ -273,6 +277,60 @@ describe 'ceilometer' do
     end
   end
 
+  shared_examples_for 'amqp support' do
+    context 'with default parameters' do
+      before { params.merge!( :rpc_backend => 'amqp' ) }
+
+      it { is_expected.to contain_ceilometer_config('DEFAULT/rpc_backend').with_value('amqp') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/idle_timeout').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/trace').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_ca_file').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_cert_file').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_key_file').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_key_password').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/username').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/password').with_value('<SERVICE DEFAULT>') }
+    end
+
+    context 'with overriden amqp parameters' do
+      before { params.merge!(
+        :rpc_backend        => 'amqp',
+        :amqp_idle_timeout  => '60',
+        :amqp_trace         => true,
+        :amqp_ssl_ca_file   => '/path/to/ca.cert',
+        :amqp_ssl_cert_file => '/path/to/certfile',
+        :amqp_ssl_key_file  => '/path/to/key',
+        :amqp_username      => 'amqp_user',
+        :amqp_password      => 'password',
+      ) }
+
+      it { is_expected.to contain_ceilometer_config('DEFAULT/rpc_backend').with_value('amqp') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/idle_timeout').with_value('60') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/trace').with_value('true') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_ca_file').with_value('/path/to/ca.cert') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_cert_file').with_value('/path/to/certfile') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/ssl_key_file').with_value('/path/to/key') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/username').with_value('amqp_user') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_amqp/password').with_value('password') }
+    end
+  end
+
   context 'on Debian platforms' do
     let :facts do
       @default_facts.merge({ :osfamily => 'Debian' })