Remove dependency on memcached_node_ips_v6
authorSteven Hardy <shardy@redhat.com>
Thu, 6 Jul 2017 11:29:50 +0000 (12:29 +0100)
committerSteven Hardy <shardy@redhat.com>
Thu, 13 Jul 2017 08:17:54 +0000 (09:17 +0100)
This is set via all_nodes_config in t-h-t, but it's a special case for
this service, so it'll be better if we handle the ipv6 transformation
in puppet instead of relying on the service specific list mangling in
t-h-t (one aspect of which has been identified as a potential performance
problem).

Related-Bug: #1684272
Change-Id: Iccb9089db4b382db3adb9340f18f6d2364ca7f58

manifests/profile/base/horizon.pp
manifests/profile/base/nova.pp
manifests/profile/base/nova/authtoken.pp
spec/classes/tripleo_profile_base_nova_authtoken_spec.rb

index 26ea20f..3f01d01 100644 (file)
 #   (Optional) A hash of parameters to enable features specific to Neutron
 #   Defaults to hiera('horizon::neutron_options', {})
 #
+# [*memcached_ips*]
+#   (Optional) Array of ipv4 or ipv6 addresses for memcache.
+#   Defaults to hiera('memcached_node_ips')
+#
 class tripleo::profile::base::horizon (
   $step            = Integer(hiera('step')),
   $bootstrap_node  = hiera('bootstrap_nodeid', undef),
   $neutron_options = hiera('horizon::neutron_options', {}),
+  $memcached_ips   = hiera('memcached_node_ips')
 ) {
   if $::hostname == downcase($bootstrap_node) {
     $is_bootstrap = true
@@ -52,12 +57,14 @@ class tripleo::profile::base::horizon (
       $_profile_support = 'None'
     }
     $neutron_options_real = merge({'profile_support' => $_profile_support }, $neutron_options)
-    $memcached_ipv6 = hiera('memcached_ipv6', false)
-    if $memcached_ipv6 {
-      $horizon_memcached_servers = hiera('memcached_node_ips_v6', '[::1]')
+
+    if is_ipv6_address($memcached_ips[0]) {
+        $horizon_memcached_servers = prefix(any2array(normalize_ip_for_uri($memcached_ips)), 'inet6:')
+
     } else {
-      $horizon_memcached_servers = hiera('memcached_node_ips', '127.0.0.1')
+        $horizon_memcached_servers = any2array(normalize_ip_for_uri($memcached_ips))
     }
+
     class { '::horizon':
       cache_server_ip => $horizon_memcached_servers,
       neutron_options => $neutron_options_real,
index 16ba7be..eb6856f 100644 (file)
@@ -70,6 +70,9 @@
 #   (Optional) The current step of the deployment
 #   Defaults to hiera('step')
 #
+# [*memcached_ips*]
+#   (Optional) Array of ipv4 or ipv6 addresses for memcache.
+#   Defaults to hiera('memcached_node_ips')
 
 class tripleo::profile::base::nova (
   $bootstrap_node          = hiera('bootstrap_nodeid', undef),
@@ -85,6 +88,7 @@ class tripleo::profile::base::nova (
   $oslomsg_notify_username = hiera('nova::rabbit_userid', 'guest'),
   $oslomsg_use_ssl         = hiera('nova::rabbit_use_ssl', '0'),
   $step                    = Integer(hiera('step')),
+  $memcached_ips            = hiera('memcached_node_ips'),
 ) {
 
   if $::hostname == downcase($bootstrap_node) {
@@ -93,10 +97,10 @@ class tripleo::profile::base::nova (
     $sync_db = false
   }
 
-  if hiera('nova::use_ipv6', false) {
-    $memcache_servers = suffix(hiera('memcached_node_ips_v6'), ':11211')
+  if is_ipv6_address($memcached_ips[0]) {
+    $memcache_servers = prefix(suffix(any2array(normalize_ip_for_uri($memcached_ips)), ':11211'), 'inet6:')
   } else {
-    $memcache_servers = suffix(hiera('memcached_node_ips'), ':11211')
+    $memcache_servers = suffix(any2array(normalize_ip_for_uri($memcached_ips)), ':11211')
   }
 
   if $step >= 4 or ($step >= 3 and $sync_db) {
index d8285ba..7eb37bc 100644 (file)
 #   for more details.
 #   Defaults to hiera('step')
 #
-# [*use_ipv6*]
-#   (Optional) Flag indicating if ipv6 should be used for caching
-#   Defaults to hiera('nova::use_ipv6', false)
-#
-# [*memcache_nodes_ipv6*]
-#   (Optional) Array of ipv6 addresses for memcache.  Used if use_ipv6 is true.
-#   Defaults to hiera('memcached_node_ipvs_v6', ['::1'])
-#
-# [*memcache_nodes_ipv4*]
-#   (Optional) Array of ipv4 addresses for memcache. Used by default unless
-#   use_ipv6 is set to true.
-#   Defaults to hiera('memcached_node_ips', ['127.0.0.1'])
+# [*memcached_ips*]
+#   (Optional) Array of ipv4 or ipv6 addresses for memcache.
+#   Defaults to hiera('memcached_node_ips')
 #
 class tripleo::profile::base::nova::authtoken (
   $step                = Integer(hiera('step')),
-  $use_ipv6            = hiera('nova::use_ipv6', false),
-  $memcache_nodes_ipv6 = hiera('memcached_node_ips_v6', ['::1']),
-  $memcache_nodes_ipv4 = hiera('memcached_node_ips', ['127.0.0.1']),
+  $memcached_ips       = hiera('memcached_node_ips'),
 ) {
 
   if $step >= 3 {
-    $memcached_ips = $use_ipv6 ? {
-      true    => $memcache_nodes_ipv6,
-      default => $memcache_nodes_ipv4
+    if is_ipv6_address($memcached_ips[0]) {
+      $memcache_servers = prefix(suffix(any2array(normalize_ip_for_uri($memcached_ips)), ':11211'), 'inet6:')
+    } else {
+      $memcache_servers = suffix(any2array(normalize_ip_for_uri($memcached_ips)), ':11211')
     }
 
-    $memcache_servers = suffix(any2array(normalize_ip_for_uri($memcached_ips)), ':11211')
-
     class { '::nova::keystone::authtoken':
       memcached_servers => $memcache_servers
     }
index f910729..0a87bf4 100644 (file)
@@ -32,6 +32,7 @@ describe 'tripleo::profile::base::nova::authtoken' do
     context 'with step 3' do
       let(:params) { {
         :step => 3,
+        :memcached_ips => '127.0.0.1',
       } }
 
       it {
@@ -44,7 +45,7 @@ describe 'tripleo::profile::base::nova::authtoken' do
     context 'with step 3 with ipv6' do
       let(:params) { {
         :step     => 3,
-        :use_ipv6 => true,
+        :memcached_ips => '::1',
       } }
 
       it {