9e2d9f6aef
Currently "openstack" command on bridge doesn't work, because we need cinder client pinned to an older version for RAX support. The upstream container uses the latest versions of everything and it fails to parse the "volume_api_version: 2" pin for RAX in the config file. In general, the version of openstackclient we can probably most likely rely on to work is the one from the launch-node virtualenv. It also means we just have one place to manage a broadly-compatible version, instead of trying to manage versions in separate containers, etc. This converts the /usr/local/bin/openstack command from calling into the container, to calling into the launch venv. Change-Id: I604d5c17268a8219d51d432ba21feeb2e752a693
120 lines
3.6 KiB
Python
120 lines
3.6 KiB
Python
# Copyright 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.
|
|
import platform
|
|
import pytest
|
|
|
|
testinfra_hosts = ['bridge99.opendev.org']
|
|
|
|
|
|
def test_zuul_data(host, zuul_data):
|
|
# Test the zuul_data fixture that picks up things set by Zuul
|
|
assert 'inventory' in zuul_data
|
|
assert 'extra' in zuul_data
|
|
assert 'zuul' in zuul_data['extra']
|
|
|
|
def test_clouds_yaml(host):
|
|
clouds_yaml = host.file('/etc/openstack/clouds.yaml')
|
|
assert clouds_yaml.exists
|
|
|
|
assert b'password' in clouds_yaml.content
|
|
|
|
def test_openstacksdk_config(host):
|
|
f = host.file('/etc/openstack')
|
|
assert f.exists
|
|
assert f.is_directory
|
|
assert f.user == 'root'
|
|
assert f.group == 'root'
|
|
assert f.mode == 0o750
|
|
del f
|
|
|
|
f = host.file('/etc/openstack/limestone_cacert.pem')
|
|
assert f.exists
|
|
assert f.is_file
|
|
assert f.user == 'root'
|
|
assert f.group == 'root'
|
|
assert f.mode == 0o640
|
|
|
|
def test_root_authorized_keys(host):
|
|
authorized_keys = host.file('/root/.ssh/authorized_keys')
|
|
assert authorized_keys.exists
|
|
|
|
content = authorized_keys.content.decode('utf8')
|
|
lines = content.split('\n')
|
|
assert len(lines) >= 2
|
|
|
|
def test_ara(host):
|
|
ara = host.run('/usr/ansible-venv/bin/ara-manage migrate')
|
|
assert ara.rc == 0
|
|
database = host.file('/root/.ara/server/ansible.sqlite')
|
|
assert database.exists
|
|
|
|
def test_kube_config(host):
|
|
if platform.machine() != 'x86_64':
|
|
pytest.skip()
|
|
kubeconfig = host.file('/root/.kube/config')
|
|
assert kubeconfig.exists
|
|
|
|
assert b'Z2l0ZWFfazhzX2tleQ==' in kubeconfig.content
|
|
|
|
def test_kubectl(host):
|
|
if platform.machine() != 'x86_64':
|
|
pytest.skip()
|
|
kube = host.run('kubectl help')
|
|
assert kube.rc == 0
|
|
|
|
def test_zuul_authorized_keys(host):
|
|
authorized_keys = host.file('/home/zuul/.ssh/authorized_keys')
|
|
assert authorized_keys.exists
|
|
|
|
content = authorized_keys.content.decode('utf8')
|
|
lines = content.split('\n')
|
|
# Remove empty lines
|
|
keys = list(filter(None, lines))
|
|
assert len(keys) >= 2
|
|
for key in keys:
|
|
assert 'ssh-rsa' in key
|
|
|
|
def test_rax_dns_backup(host):
|
|
config_file = host.file('/etc/rax-dns-auth.conf')
|
|
assert config_file.exists
|
|
|
|
tool_file = host.file('/usr/local/bin/rax-dns-backup')
|
|
assert tool_file.exists
|
|
|
|
output_dir = host.file('/var/lib/rax-dns-backup')
|
|
assert output_dir.exists
|
|
|
|
def test_ssh_known_hosts(host):
|
|
f = host.file('/etc/ssh/ssh_known_hosts')
|
|
|
|
assert f.exists
|
|
assert f.is_file
|
|
assert f.user == 'root'
|
|
assert f.group == 'root'
|
|
assert f.mode == 0o644
|
|
|
|
# Nothing special about this host, just testing it has an entry we
|
|
# expect.
|
|
assert b'bridge01.opendev.org,104.130.253.34,2001:4800:7818:103:be76:4eff:fe04:48c1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGG6WTR3dkhn766C69IRcLNN1Oxx7WMrcNsN03r+uZbU' in f.content
|
|
|
|
def test_launch_node_venv(host):
|
|
launch = host.run('/usr/launcher-venv/bin/launch-node --help')
|
|
assert 'usage: launch-node' in launch.stdout
|
|
assert launch.rc == 0
|
|
|
|
def test_osc_binary(host):
|
|
osc = host.run('/usr/launcher-venv/bin/openstack --version')
|
|
assert 'openstack' in osc.stdout
|
|
assert osc.rc == 0
|