Use correct memcached IPs for Swift object-expirer

The memcached IP is not properly set in case of separate storage nodes.
Until now, these were only set if the Swift proxy node was also
configured on the same node; however, this is not the case with separate
storage nodes. The service would still run, but was not able to use any
cache and logging errors therefore.

Closes-Bug: 1889663
Change-Id: I70ac9fcd3f74975c96c715ecbc818e6606ff4517
This commit is contained in:
Christian Schwede 2020-07-30 18:33:02 +02:00 committed by Emilien Macchi
parent 3859f23df3
commit e7cb55d97b
5 changed files with 67 additions and 23 deletions

View File

@ -0,0 +1,46 @@
# Copyright 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.
#
# == Class: tripleo::profile::base::swift
#
# Swift common profile for tripleo
#
# === Parameters
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
# [*memcache_port*]
# (Optional) memcache port
# Defaults to 11211
#
# [*memcache_servers*]
# (Optional) List of memcache servers
# Defaults to hiera('memcached_node_ips', [])
#
class tripleo::profile::base::swift (
$step = Integer(hiera('step')),
$memcache_port = 11211,
$memcache_servers = hiera('memcached_node_ips', []),
) {
if $step >= 4 {
$swift_memcache_servers = suffix(any2array(normalize_ip_for_uri($memcache_servers)), ":${memcache_port}")
class { 'swift::objectexpirer':
pipeline => ['catch_errors', 'cache', 'proxy-server'],
memcache_servers => $swift_memcache_servers
}
}
}

View File

@ -142,6 +142,7 @@ class tripleo::profile::base::swift::proxy (
include tripleo::profile::base::apache
}
}
include tripleo::profile::base::swift
if $step >= 4 {
$swift_memcache_servers = suffix(any2array(normalize_ip_for_uri($memcache_servers)), ":${memcache_port}")
include swift
@ -184,10 +185,5 @@ class tripleo::profile::base::swift::proxy (
include swift::keymaster
include swift::proxy::s3api
include swift::proxy::s3token
class { 'swift::objectexpirer':
pipeline => ['catch_errors', 'cache', 'proxy-server'],
memcache_servers => $swift_memcache_servers
}
}
}

View File

@ -0,0 +1,8 @@
---
fixes:
- |
The memcached IP for the Swift object expirer is not properly set in case
of separate storage nodes. Until now, these were only set if the Swift
proxy node was also configured on the same node; however, this is not the
case with separate storage nodes. The service would still run, but was not
able to use any cache and logging errors therefore.

View File

@ -42,6 +42,7 @@ class tripleo::profile::base::swift::storage (
$use_local_dir = true,
$local_dir = '/srv/node/d1',
) {
include tripleo::profile::base::swift
if $step >= 4 {
if $enable_swift_storage {
include swift

View File

@ -17,11 +17,10 @@ require 'spec_helper'
describe 'tripleo::profile::base::swift::proxy' do
let :params do
{ }
end
shared_examples_for 'tripleo::profile::base::swift::proxy' do
before :each do
facts.merge!({ :step => params[:step] })
end
let :pre_condition do
"class { 'swift':
@ -36,12 +35,10 @@ describe 'tripleo::profile::base::swift::proxy' do
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
let(:params) { {
:step => 4,
:memcache_servers => ['192.168.0.1', '192.168.0.2'],
} }
it 'configure swift proxy cache with ipv4 ips' do
is_expected.to contain_class('swift::proxy::cache').with({
@ -51,12 +48,10 @@ describe 'tripleo::profile::base::swift::proxy' do
end
context 'with ipv6 memcache servers' do
before :each do
params.merge!(
let(:params) { {
: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({
@ -66,12 +61,10 @@ describe 'tripleo::profile::base::swift::proxy' do
end
context 'with ipv4, ipv6 and fqdn memcache servers' do
before :each do
params.merge!(
let(:params) { {
:step => 4,
:memcache_servers => ['192.168.0.1', '::2', 'myserver.com'],
)
end
} }
it 'configure swift proxy cache with ips and fqdn' do
is_expected.to contain_class('swift::proxy::cache').with({