]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Introduce the new rabbit_heartbeat_in_pthread option
authorZhongShengping <chdzsp@163.com>
Wed, 21 Aug 2019 06:21:00 +0000 (14:21 +0800)
committerZhongShengping <chdzsp@163.com>
Wed, 21 Aug 2019 06:22:50 +0000 (14:22 +0800)
oslo.messaging RabbitMQ driver have now a new option that allow user to
run the RabbitMQ heartbeat over a native python thread.

These change allow user to use this new option.

Change-Id: Iceea98e573fc13be81923a6ed1b35a7db01cc48d
Closes-Bug: #1840868

manifests/init.pp
releasenotes/notes/rabbitmq-heartbeat-over-pthread-aab7e079d7f4a480.yaml [new file with mode: 0644]
spec/classes/ceilometer_init_spec.rb

index d508aa4c62d7b835562b50e106b7f2f9c01201bd..b49187f4eb23641bb251da365752342172abb1fc 100644 (file)
 #   we check the heartbeat. (integer value)
 #   Defaults to $::os_service_default
 #
+# [*rabbit_heartbeat_in_pthread*]
+#   (Optional) EXPERIMENTAL: Run the health check heartbeat thread
+#   through a native python thread. By default if this
+#   option isn't provided the  health check heartbeat will
+#   inherit the execution model from the parent process. By
+#   example if the parent process have monkey patched the
+#   stdlib by using eventlet/greenlet then the heartbeat
+#   will be run through a green thread.
+#   Defaults to $::os_service_default
+#
 #  [*rabbit_qos_prefetch_count*]
 #   (Optional) Specifies the number of messages to prefetch.
 #   Defaults to $::os_service_default
@@ -230,6 +240,7 @@ class ceilometer(
   $rabbit_ha_queues                   = $::os_service_default,
   $rabbit_heartbeat_timeout_threshold = $::os_service_default,
   $rabbit_heartbeat_rate              = $::os_service_default,
+  $rabbit_heartbeat_in_pthread        = $::os_service_default,
   $rabbit_qos_prefetch_count          = $::os_service_default,
   $amqp_durable_queues                = $::os_service_default,
   $rabbit_use_ssl                     = $::os_service_default,
@@ -308,6 +319,7 @@ class ceilometer(
     rabbit_ha_queues            => $rabbit_ha_queues,
     heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold,
     heartbeat_rate              => $rabbit_heartbeat_rate,
+    heartbeat_in_pthread        => $rabbit_heartbeat_in_pthread,
     rabbit_qos_prefetch_count   => $rabbit_qos_prefetch_count,
     amqp_durable_queues         => $amqp_durable_queues,
     rabbit_use_ssl              => $rabbit_use_ssl,
diff --git a/releasenotes/notes/rabbitmq-heartbeat-over-pthread-aab7e079d7f4a480.yaml b/releasenotes/notes/rabbitmq-heartbeat-over-pthread-aab7e079d7f4a480.yaml
new file mode 100644 (file)
index 0000000..496d227
--- /dev/null
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Allow users to run the RabbitMQ heartbeat over a native python thread in the
+    oslo.messaging RabbitMQ driver, by using the `rabbit_heartbeat_in_pthread`
+    option in configuration.
index 952133df59488a6a92b9a8bd67b89a1d7a60f29d..8d532acc71703928c4ff3948bce7d1c2e61f5748 100644 (file)
@@ -180,6 +180,7 @@ describe 'ceilometer' do
     it 'configures rabbit' do
       is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
       is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
+      is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('<SERVICE DEFAULT>')
     end
 
     it { is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value( params[:rabbit_qos_prefetch_count] ) }
@@ -193,6 +194,7 @@ describe 'ceilometer' do
     it 'configures rabbit' do
       is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
       is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
+      is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('<SERVICE DEFAULT>')
     end
 
     it { is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value( params[:rabbit_qos_prefetch_count] ) }
@@ -218,11 +220,13 @@ describe 'ceilometer' do
     context "with heartbeat configuration" do
       before { params.merge!(
         :rabbit_heartbeat_timeout_threshold => '60',
-        :rabbit_heartbeat_rate              => '10'
+        :rabbit_heartbeat_rate              => '10',
+        :rabbit_heartbeat_in_pthread        => true,
       ) }
 
       it { is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') }
       it { is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') }
+      it { is_expected.to contain_ceilometer_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value(true) }
     end
   end