aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilien Macchi <emilien@redhat.com>2016-09-19 15:43:46 -0400
committerEmilien Macchi <emilien@redhat.com>2016-09-20 15:21:47 +0000
commit494b9dfe952a47ac4dcc21acdec6c0adacf59a8b (patch)
treea657a6960391e70f4ce1f83963e59579ecf2f821
parent6a9429eeda549f85fdb7e3748188046d702852fb (diff)
swift: normalize memcache servers IP addresses
In the case of memcache servers are IPv6, make sure brackets set in the way we construct the list of memcache server + memcache port parameter. Also add unit-tests to test that the output is what we want in the configuration. Depends-On: I8d361ce9cfcfe6a3f8592b2b7991971a3c748c75 Closes-Bug: 1625335 Change-Id: I9fb8168d8fb56c9d8465d58a45fd8c6edfee6fdd
-rw-r--r--.fixtures.yml3
-rw-r--r--manifests/profile/base/swift/proxy.pp2
-rw-r--r--spec/classes/tripleo_profile_base_swift_proxy_spec.rb89
3 files changed, 93 insertions, 1 deletions
diff --git a/.fixtures.yml b/.fixtures.yml
index 9e8eb3b..fae4a8c 100644
--- a/.fixtures.yml
+++ b/.fixtures.yml
@@ -4,6 +4,9 @@ fixtures:
'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
'haproxy': 'git://github.com/puppetlabs/puppetlabs-haproxy.git'
'concat': 'git://github.com/puppetlabs/puppetlabs-concat.git'
+ 'openstacklib': 'git://github.com/openstack/puppet-openstacklib.git'
+ 'swift': 'git://github.com/openstack/puppet-swift.git'
+ 'memcached': 'git://github.com/saz/puppet-memcached.git'
'midonet':
repo: 'git://github.com/midonet/puppet-midonet.git'
ref: 'v2015.06.7'
diff --git a/manifests/profile/base/swift/proxy.pp b/manifests/profile/base/swift/proxy.pp
index a95d05f..9d50462 100644
--- a/manifests/profile/base/swift/proxy.pp
+++ b/manifests/profile/base/swift/proxy.pp
@@ -37,7 +37,7 @@ class tripleo::profile::base::swift::proxy (
$memcache_port = 11211,
) {
if $step >= 4 {
- $swift_memcache_servers = suffix($memcache_servers, ":${memcache_port}")
+ $swift_memcache_servers = suffix(any2array(normalize_ip_for_uri($memcache_servers)), ":${memcache_port}")
include ::swift::proxy
include ::swift::proxy::proxy_logging
include ::swift::proxy::healthcheck
diff --git a/spec/classes/tripleo_profile_base_swift_proxy_spec.rb b/spec/classes/tripleo_profile_base_swift_proxy_spec.rb
new file mode 100644
index 0000000..da80950
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_swift_proxy_spec.rb
@@ -0,0 +1,89 @@
+#
+# Copyright (C) 2016 Red Hat Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::swift::proxy' do
+
+ let :params do
+ { }
+ end
+
+ shared_examples_for 'tripleo swift proxy base profile' do
+
+ let :pre_condition do
+ "class { '::swift':
+ swift_hash_path_prefix => 'foo',
+ }
+ include ::memcached
+ class { '::swift::proxy':
+ proxy_local_net_ip => '127.0.0.1',
+ }"
+ end
+
+ context 'with ipv4 memcache servers' do
+ before :each do
+ params.merge!(
+ :step => 4,
+ :memcache_servers => ['192.168.0.1', '192.168.0.2'],
+ )
+ end
+
+ it 'configure swift proxy cache with ipv4 ips' do
+ is_expected.to contain_class('swift::proxy::cache').with({
+ :memcache_servers => ['192.168.0.1:11211', '192.168.0.2:11211']
+ })
+ end
+ end
+
+ context 'with ipv6 memcache servers' do
+ before :each do
+ params.merge!(
+ :step => 4,
+ :memcache_servers => ['::1', '::2'],
+ )
+ end
+
+ it 'configure swift proxy cache with ipv6 ips' do
+ is_expected.to contain_class('swift::proxy::cache').with({
+ :memcache_servers => ['[::1]:11211', '[::2]:11211']
+ })
+ end
+ end
+
+ end
+
+ context 'on Debian platforms' do
+ let :facts do
+ { :osfamily => 'Debian',
+ :processorcount => 1 }
+ end
+
+ it_configures 'tripleo swift proxy base profile'
+ end
+
+ context 'on RedHat platforms' do
+ let :facts do
+ {
+ :osfamily => 'RedHat',
+ :operatingsystemrelease => '7.1',
+ :processorcount => 1,
+ }
+ end
+
+ it_configures 'tripleo swift proxy base profile'
+ end
+
+end