6117cae693
Adapt wrapper containers for podman, which has no a socket available. Add container_cli parameter for base neutron class, default to docker. Possible values: podman/docker (default). It is used by the wrappers tooling to issue CLI commands to the host containers system. Deprecate bind_socket so it does nothing for podman CLI. Additionally, add debug triggers for the wrapper scripts messages to become captured to the wrapper containers' stdout. Do not stop and remove the existing container before launching a new one. Allow the neutron parent process to control the process life cycle. Although make the wraper containers cleaning up any exited containers after its main process terminated by the neutron parent process. Additionally, If a name is already taken by a container, give it an unique name and assume all the smooth transitioning work to be done by the parent neutron process and that clean up logic in the wrapper. Closes-Bug: #1799484 Change-Id: Ib3c41a8bee349856d21f360595e41a9eafd79323 Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
91 lines
2.9 KiB
Ruby
91 lines
2.9 KiB
Ruby
#
|
|
# Copyright (C) 2018 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::neutron::wrappers::dnsmasq' do
|
|
|
|
let :title do
|
|
'dnsmasq_wrapper'
|
|
end
|
|
|
|
shared_examples_for 'tripleo::profile::base::neutron::wrappers::dnsmasq' do
|
|
|
|
context 'creates wrapper file for docker' do
|
|
let(:params) {
|
|
{
|
|
:dnsmasq_process_wrapper => '/usr/local/bin/dnsmasq',
|
|
:dnsmasq_image => 'a_registry/some_container_name:some_tag',
|
|
:bind_socket => 'unix:///run/another/docker.sock',
|
|
:container_cli => 'docker',
|
|
:debug => true,
|
|
}
|
|
}
|
|
|
|
it 'should generate a wrapper file' do
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with(
|
|
:mode => '0755'
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/a_registry.some_container_name.some_tag/
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/export DOCKER_HOST="unix:...run.another.docker.sock/
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/set -x/
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/CMD="ip netns exec.*\/usr\/sbin\/dnsmasq -k/
|
|
)
|
|
end
|
|
end
|
|
|
|
context 'creates wrapper file for podman' do
|
|
let(:params) {
|
|
{
|
|
:dnsmasq_process_wrapper => '/usr/local/bin/dnsmasq',
|
|
:dnsmasq_image => 'a_registry/some_container_name:some_tag',
|
|
:container_cli => 'podman',
|
|
:debug => false,
|
|
}
|
|
}
|
|
|
|
it 'should generate a wrapper file' do
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with(
|
|
:mode => '0755'
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/a_registry.some_container_name.some_tag/
|
|
)
|
|
is_expected.to contain_file('/usr/local/bin/dnsmasq').with_content(
|
|
/CMD='\/usr\/sbin\/dnsmasq -k'/
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
on_supported_os.each do |os, facts|
|
|
context "on #{os}" do
|
|
let(:facts) do
|
|
facts.merge({ :hostname => 'node.example.com' })
|
|
end
|
|
|
|
it_behaves_like 'tripleo::profile::base::neutron::wrappers::dnsmasq'
|
|
end
|
|
end
|
|
end
|