Files
puppet-tripleo/spec/classes/tripleo_profile_base_placement_authtoken_spec.rb
Takashi Kajinami 1e63b4c5f5 Format [keystone_authtoken] memcache_servers when IPv6 is used
When Memcached uses IPv6 network, the memcache_servers parameter should
be formatted as is described in the following example.
 inet6:[<host>]:<port>

This change ensures the proper format is applied even when hostnames
are used to define servers.

Also, this change fixes the timing to apply any2array. The function
should be applied before we check the first memcache server by [0],
otherwise the logic to detect IPv6 address does not work as intended.

Partial-Bug: #1964824
Depends-on: https://review.opendev.org/833708
Change-Id: I18537ab819996cfb0f2705d8c49666d4b9bfff22
2022-03-15 12:09:57 +00:00

87 lines
2.5 KiB
Ruby

#
# Copyright (C) 2020 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::placement::authtoken' do
shared_examples_for 'tripleo::profile::base::placement::authtoken' do
context 'with step less than 3' do
let(:params) { {
:step => 1,
} }
it {
is_expected.to contain_class('tripleo::profile::base::placement::authtoken')
is_expected.to_not contain_class('placement::keystone::authtoken')
}
end
context 'with step 3' do
let(:params) { {
:step => 3,
:memcached_hosts => '127.0.0.1',
} }
it {
is_expected.to contain_class('tripleo::profile::base::placement::authtoken')
is_expected.to contain_class('placement::keystone::authtoken').with(
:memcached_servers => ['127.0.0.1:11211']
)
}
end
context 'with step 3 with ipv6' do
let(:params) { {
:step => 3,
:memcached_hosts => '::1',
} }
it {
is_expected.to contain_class('tripleo::profile::base::placement::authtoken')
is_expected.to contain_class('placement::keystone::authtoken').with(
:memcached_servers => ['inet6:[::1]:11211']
)
}
end
context 'with step 3 with the ipv6 parameter' do
let(:params) { {
:step => 3,
:memcached_hosts => 'node.example.com',
:memcached_ipv6 => true,
} }
it {
is_expected.to contain_class('tripleo::profile::base::placement::authtoken')
is_expected.to contain_class('placement::keystone::authtoken').with(
:memcached_servers => ['inet6:[node.example.com]:11211']
)
}
end
end
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) do
facts.merge(OSDefaults.get_facts({ :hostname => 'node.example.com' }))
end
it_behaves_like 'tripleo::profile::base::placement::authtoken'
end
end
end