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
87 lines
2.5 KiB
Ruby
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
|