]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Add support for oslo.cache parameters
authorTakashi Kajinami <tkajinam@redhat.com>
Mon, 29 Nov 2021 01:49:36 +0000 (10:49 +0900)
committerTakashi Kajinami <tkajinam@redhat.com>
Mon, 29 Nov 2021 01:49:36 +0000 (10:49 +0900)
Since [1] was merged, ceilometer supports caching attributes of gnocchi
resource using the oslo.cache library. This change allows setting
parameters of the oslo.cache library to leverage the caching feature.

[1] 2511cfb6e48c5d03cd198ecf9f09f36db3caced8

Change-Id: I382816bc199f0d54337b25ab6e07fd0a32d2e4e8

manifests/cache.pp [new file with mode: 0644]
releasenotes/notes/cache-44827d7d144ab594.yaml [new file with mode: 0644]
spec/classes/ceilometer_cache_spec.rb [new file with mode: 0644]

diff --git a/manifests/cache.pp b/manifests/cache.pp
new file mode 100644 (file)
index 0000000..170332d
--- /dev/null
@@ -0,0 +1,166 @@
+# Class ceilometer::cache
+#
+#  ceilometer cache configuration
+#
+# == parameters
+#
+# [*config_prefix*]
+#   (Optional) Prefix for building the configuration dictionary for
+#   the cache region. This should not need to be changed unless there
+#   is another dogpile.cache region with the same configuration name.
+#   (string value)
+#   Defaults to $::os_service_default
+#
+# [*expiration_time*]
+#   (Optional) Default TTL, in seconds, for any cached item in the
+#   dogpile.cache region. This applies to any cached method that
+#   doesn't have an explicit cache expiration time defined for it.
+#   (integer value)
+#   Defaults to $::os_service_default
+#
+# [*backend*]
+#   (Optional) Dogpile.cache backend module. It is recommended that
+#   Memcache with pooling (oslo_cache.memcache_pool) or Redis
+#   (dogpile.cache.redis) be used in production deployments. (string value)
+#   Defaults to $::os_service_default
+#
+# [*backend_argument*]
+#   (Optional) Arguments supplied to the backend module. Specify this option
+#   once per argument to be passed to the dogpile.cache backend.
+#   Example format: "<argname>:<value>". (list value)
+#   Defaults to $::os_service_default
+#
+# [*proxies*]
+#   (Optional) Proxy classes to import that will affect the way the
+#   dogpile.cache backend functions. See the dogpile.cache documentation on
+#   changing-backend-behavior. (list value)
+#   Defaults to $::os_service_default
+#
+# [*enabled*]
+#   (Optional) Global toggle for caching. (boolean value)
+#   Defaults to $::os_service_default
+#
+# [*debug_cache_backend*]
+#   (Optional) Extra debugging from the cache backend (cache keys,
+#   get/set/delete/etc calls). This is only really useful if you need
+#   to see the specific cache-backend get/set/delete calls with the keys/values.
+#   Typically this should be left set to false. (boolean value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_servers*]
+#   (Optional) Memcache servers in the format of "host:port".
+#   (dogpile.cache.memcache and oslo_cache.memcache_pool backends only).
+#   (list value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_dead_retry*]
+#   (Optional) Number of seconds memcached server is considered dead before
+#   it is tried again. (dogpile.cache.memcache and oslo_cache.memcache_pool
+#   backends only). (integer value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_socket_timeout*]
+#   (Optional) Timeout in seconds for every call to a server.
+#   (dogpile.cache.memcache and oslo_cache.memcache_pool backends only).
+#   (floating point value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_pool_maxsize*]
+#   (Optional) Max total number of open connections to every memcached server.
+#   (oslo_cache.memcache_pool backend only). (integer value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_pool_unused_timeout*]
+#   (Optional) Number of seconds a connection to memcached is held unused
+#   in the pool before it is closed. (oslo_cache.memcache_pool backend only)
+#   (integer value)
+#   Defaults to $::os_service_default
+#
+# [*memcache_pool_connection_get_timeout*]
+#   (Optional) Number of seconds that an operation will wait to get a memcache
+#   client connection. (integer value)
+#   Defaults to $::os_service_default
+#
+# [*manage_backend_package*]
+#   (Optional) (Optional) Whether to install the backend package for the cache.
+#   Defaults to true
+#
+# [*tls_enabled*]
+#   (Optional) Global toggle for TLS usage when comunicating with
+#   the caching servers.
+#   Default to $::os_service_default
+#
+# [*tls_cafile*]
+#   (Optional) Path to a file of concatenated CA certificates in PEM
+#   format necessary to establish the caching server's authenticity.
+#   If tls_enabled is False, this option is ignored.
+#   Default to $::os_service_default
+#
+# [*tls_certfile*]
+#   (Optional) Path to a single file in PEM format containing the
+#   client's certificate as well as any number of CA certificates
+#   needed to establish the certificate's authenticity. This file
+#   is only required when client side authentication is necessary.
+#   If tls_enabled is False, this option is ignored.
+#   Default to $::os_service_default
+#
+# [*tls_keyfile*]
+#   (Optional) Path to a single file containing the client's private
+#   key in. Otherwhise the private key will be taken from the file
+#   specified in tls_certfile. If tls_enabled is False, this option
+#   is ignored.
+#   Default to $::os_service_default
+#
+# [*tls_allowed_ciphers*]
+#   (Optional) Set the available ciphers for sockets created with
+#   the TLS context. It should be a string in the OpenSSL cipher
+#   list format. If not specified, all OpenSSL enabled ciphers will
+#   be available.
+#   Default to $::os_service_default
+#
+class ceilometer::cache (
+  $config_prefix                        = $::os_service_default,
+  $expiration_time                      = $::os_service_default,
+  $backend                              = $::os_service_default,
+  $backend_argument                     = $::os_service_default,
+  $proxies                              = $::os_service_default,
+  $enabled                              = $::os_service_default,
+  $debug_cache_backend                  = $::os_service_default,
+  $memcache_servers                     = $::os_service_default,
+  $memcache_dead_retry                  = $::os_service_default,
+  $memcache_socket_timeout              = $::os_service_default,
+  $memcache_pool_maxsize                = $::os_service_default,
+  $memcache_pool_unused_timeout         = $::os_service_default,
+  $memcache_pool_connection_get_timeout = $::os_service_default,
+  $manage_backend_package               = true,
+  $tls_enabled                          = $::os_service_default,
+  $tls_cafile                           = $::os_service_default,
+  $tls_certfile                         = $::os_service_default,
+  $tls_keyfile                          = $::os_service_default,
+  $tls_allowed_ciphers                  = $::os_service_default,
+) {
+
+  include ceilometer::deps
+
+  oslo::cache { 'ceilometer_config':
+    config_prefix                        => $config_prefix,
+    expiration_time                      => $expiration_time,
+    backend                              => $backend,
+    backend_argument                     => $backend_argument,
+    proxies                              => $proxies,
+    enabled                              => $enabled,
+    debug_cache_backend                  => $debug_cache_backend,
+    memcache_servers                     => $memcache_servers,
+    memcache_dead_retry                  => $memcache_dead_retry,
+    memcache_socket_timeout              => $memcache_socket_timeout,
+    memcache_pool_maxsize                => $memcache_pool_maxsize,
+    memcache_pool_unused_timeout         => $memcache_pool_unused_timeout,
+    memcache_pool_connection_get_timeout => $memcache_pool_connection_get_timeout,
+    manage_backend_package               => $manage_backend_package,
+    tls_enabled                          => $tls_enabled,
+    tls_cafile                           => $tls_cafile,
+    tls_certfile                         => $tls_certfile,
+    tls_keyfile                          => $tls_keyfile,
+    tls_allowed_ciphers                  => $tls_allowed_ciphers,
+  }
+}
diff --git a/releasenotes/notes/cache-44827d7d144ab594.yaml b/releasenotes/notes/cache-44827d7d144ab594.yaml
new file mode 100644 (file)
index 0000000..f61bcc0
--- /dev/null
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    The new ``ceilometer::cache`` class has been added.
diff --git a/spec/classes/ceilometer_cache_spec.rb b/spec/classes/ceilometer_cache_spec.rb
new file mode 100644 (file)
index 0000000..8e5cb89
--- /dev/null
@@ -0,0 +1,95 @@
+require 'spec_helper'
+
+describe 'ceilometer::cache' do
+
+  let :params do
+    {}
+  end
+
+  shared_examples_for 'ceilometer::cache' do
+
+    context 'with default parameters' do
+      it 'configures cache' do
+        is_expected.to contain_oslo__cache('ceilometer_config').with(
+          :config_prefix                        => '<SERVICE DEFAULT>',
+          :expiration_time                      => '<SERVICE DEFAULT>',
+          :backend                              => '<SERVICE DEFAULT>',
+          :backend_argument                     => '<SERVICE DEFAULT>',
+          :proxies                              => '<SERVICE DEFAULT>',
+          :enabled                              => '<SERVICE DEFAULT>',
+          :debug_cache_backend                  => '<SERVICE DEFAULT>',
+          :memcache_servers                     => '<SERVICE DEFAULT>',
+          :memcache_dead_retry                  => '<SERVICE DEFAULT>',
+          :memcache_socket_timeout              => '<SERVICE DEFAULT>',
+          :memcache_pool_maxsize                => '<SERVICE DEFAULT>',
+          :memcache_pool_unused_timeout         => '<SERVICE DEFAULT>',
+          :memcache_pool_connection_get_timeout => '<SERVICE DEFAULT>',
+          :tls_enabled                          => '<SERVICE DEFAULT>',
+          :tls_cafile                           => '<SERVICE DEFAULT>',
+          :tls_certfile                         => '<SERVICE DEFAULT>',
+          :tls_keyfile                          => '<SERVICE DEFAULT>',
+          :tls_allowed_ciphers                  => '<SERVICE DEFAULT>',
+          :manage_backend_package               => true,
+        )
+      end
+    end
+
+    context 'with overridden parameters' do
+      let :params do
+        {
+          :config_prefix                        => 'prefix',
+          :expiration_time                      => 3600,
+          :backend                              => 'oslo_cache.memcache_pool',
+          :proxies                              => ['proxy01:8888', 'proxy02:8888'],
+          :enabled                              => true,
+          :debug_cache_backend                  => false,
+          :memcache_servers                     => ['memcached01:11211', 'memcached02:11211'],
+          :memcache_dead_retry                  => '60',
+          :memcache_socket_timeout              => '300.0',
+          :memcache_pool_maxsize                => '10',
+          :memcache_pool_unused_timeout         => '120',
+          :memcache_pool_connection_get_timeout => '360',
+          :tls_enabled                          => false,
+          :manage_backend_package               => false,
+        }
+      end
+
+      it 'configures cache' do
+        is_expected.to contain_oslo__cache('ceilometer_config').with(
+          :config_prefix                        => 'prefix',
+          :expiration_time                      => 3600,
+          :backend                              => 'oslo_cache.memcache_pool',
+          :backend_argument                     => '<SERVICE DEFAULT>',
+          :proxies                              => ['proxy01:8888', 'proxy02:8888'],
+          :enabled                              => true,
+          :debug_cache_backend                  => false,
+          :memcache_servers                     => ['memcached01:11211', 'memcached02:11211'],
+          :memcache_dead_retry                  => '60',
+          :memcache_socket_timeout              => '300.0',
+          :memcache_pool_maxsize                => '10',
+          :memcache_pool_unused_timeout         => '120',
+          :memcache_pool_connection_get_timeout => '360',
+          :tls_enabled                          => false,
+          :tls_cafile                           => '<SERVICE DEFAULT>',
+          :tls_certfile                         => '<SERVICE DEFAULT>',
+          :tls_keyfile                          => '<SERVICE DEFAULT>',
+          :tls_allowed_ciphers                  => '<SERVICE DEFAULT>',
+          :manage_backend_package               => false,
+        )
+      end
+    end
+  end
+
+  on_supported_os({
+    :supported_os => OSDefaults.get_supported_os
+  }).each do |os,facts|
+    context "on #{os}" do
+      let (:facts) do
+        facts.merge!(OSDefaults.get_facts())
+      end
+
+      it_configures 'ceilometer::cache'
+    end
+  end
+
+end