testinfra: add support for podman

Since we are now testing on docker and podman our functionnal tests must
reflect that. So now, if we detect the podman binary we will use it,
otherwise we default to docker.

Signed-off-by: Sébastien Han <seb@redhat.com>
pull/3367/head
Sébastien Han 2018-11-19 11:03:45 +01:00 committed by mergify[bot]
parent f5c2ca3710
commit dcc765d7c7
7 changed files with 45 additions and 17 deletions

View File

@ -22,7 +22,11 @@ class TestMDSs(object):
def test_mds_is_up(self, node, host): def test_mds_is_up(self, node, host):
hostname = node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
if node['docker']: if node['docker']:
docker_exec_cmd = 'docker exec ceph-mds-{hostname}'.format(hostname=hostname) container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
docker_exec_cmd = '{container_binary} exec ceph-mds-{hostname}'.format(
hostname=hostname, container_binary=container_binary)
else: else:
docker_exec_cmd = '' docker_exec_cmd = ''

View File

@ -20,10 +20,14 @@ class TestMGRs(object):
assert host.service(service_name).is_enabled assert host.service(service_name).is_enabled
def test_mgr_is_up(self, node, host): def test_mgr_is_up(self, node, host):
hostname=node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
cluster=node["cluster_name"] cluster = node["cluster_name"]
if node['docker']: if node['docker']:
docker_exec_cmd = 'docker exec ceph-mgr-{hostname}'.format(hostname=hostname) container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
docker_exec_cmd = '{container_binary} exec ceph-mgr-{hostname}'.format(
hostname=hostname, container_binary=container_binary)
else: else:
docker_exec_cmd = '' docker_exec_cmd = ''
cmd = "sudo {docker_exec_cmd} ceph --name mgr.{hostname} --keyring /var/lib/ceph/mgr/{cluster}-{hostname}/keyring --cluster={cluster} --connect-timeout 5 -f json -s".format( cmd = "sudo {docker_exec_cmd} ceph --name mgr.{hostname} --keyring /var/lib/ceph/mgr/{cluster}-{hostname}/keyring --cluster={cluster} --connect-timeout 5 -f json -s".format(

View File

@ -27,7 +27,11 @@ class TestNFSs(object):
hostname = node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
cluster = node['cluster_name'] cluster = node['cluster_name']
if node['docker']: if node['docker']:
docker_exec_cmd = 'docker exec ceph-nfs-{hostname}'.format(hostname=hostname) container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
docker_exec_cmd = '{container_binary} exec ceph-nfs-{hostname}'.format(
hostname=hostname, container_binary=container_binary)
else: else:
docker_exec_cmd = '' docker_exec_cmd = ''
cmd = "sudo {docker_exec_cmd} ceph --name client.rgw.{hostname} --keyring /var/lib/ceph/radosgw/{cluster}-rgw.{hostname}/keyring --cluster={cluster} --connect-timeout 5 -f json -s".format( cmd = "sudo {docker_exec_cmd} ceph --name client.rgw.{hostname} --keyring /var/lib/ceph/radosgw/{cluster}-rgw.{hostname}/keyring --cluster={cluster} --connect-timeout 5 -f json -s".format(

View File

@ -71,11 +71,15 @@ class TestOSDs(object):
@pytest.mark.docker @pytest.mark.docker
def test_all_docker_osds_are_up_and_in(self, node, host): def test_all_docker_osds_are_up_and_in(self, node, host):
osd_id = host.check_output( container_binary = 'docker'
"docker ps -q --filter='name=ceph-osd' | head -1") if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
cmd = "sudo docker exec {osd_id} ceph --cluster={cluster} --connect-timeout 5 --keyring /var/lib/ceph/bootstrap-osd/{cluster}.keyring -n client.bootstrap-osd osd tree -f json".format( container_binary = 'podman'
osd_id = host.check_output(os.path.join(
container_binary + " ps -q --filter='name=ceph-osd' | head -1"))
cmd = "sudo {container_binary} exec {osd_id} ceph --cluster={cluster} --connect-timeout 5 --keyring /var/lib/ceph/bootstrap-osd/{cluster}.keyring -n client.bootstrap-osd osd tree -f json".format(
osd_id=osd_id, osd_id=osd_id,
cluster=node["cluster_name"] cluster=node["cluster_name"],
container_binary=container_binary
) )
output = json.loads(host.check_output(cmd)) output = json.loads(host.check_output(cmd))
assert node["num_osds"] == self._get_nb_up_osds_from_ids(node, output) assert node["num_osds"] == self._get_nb_up_osds_from_ids(node, output)

View File

@ -28,11 +28,15 @@ class TestRbdMirrors(object):
assert host.service(service_name).is_enabled assert host.service(service_name).is_enabled
def test_rbd_mirror_is_up(self, node, host): def test_rbd_mirror_is_up(self, node, host):
hostname=node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
cluster=node["cluster_name"] cluster = node["cluster_name"]
daemons = [] daemons = []
if node['docker']: if node['docker']:
docker_exec_cmd = 'docker exec ceph-rbd-mirror-{hostname}'.format(hostname=hostname) container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
docker_exec_cmd = '{container_binary} exec ceph-rbd-mirror-{hostname}'.format(
hostname=hostname, container_binary=container_binary)
else: else:
docker_exec_cmd = '' docker_exec_cmd = ''
hostname = node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]

View File

@ -23,10 +23,14 @@ class TestRGWs(object):
assert host.service(service_name).is_enabled assert host.service(service_name).is_enabled
def test_rgw_is_up(self, node, host): def test_rgw_is_up(self, node, host):
hostname=node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
cluster=node["cluster_name"] cluster = node["cluster_name"]
if node['docker']: if node['docker']:
docker_exec_cmd = 'docker exec ceph-rgw-{hostname}'.format(hostname=hostname) container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
docker_exec_cmd = '{container_binary} exec ceph-rgw-{hostname}'.format(
hostname=hostname, container_binary=container_binary)
else: else:
docker_exec_cmd = '' docker_exec_cmd = ''
cmd = "sudo {docker_exec_cmd} ceph --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/{cluster}.keyring --cluster={cluster} --connect-timeout 5 -f json -s".format( cmd = "sudo {docker_exec_cmd} ceph --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/{cluster}.keyring --cluster={cluster} --connect-timeout 5 -f json -s".format(

View File

@ -37,9 +37,13 @@ class TestRGWs(object):
def test_docker_rgw_tuning_pools_are_set(self, node, host): def test_docker_rgw_tuning_pools_are_set(self, node, host):
hostname = node["vars"]["inventory_hostname"] hostname = node["vars"]["inventory_hostname"]
cluster = node['cluster_name'] cluster = node['cluster_name']
cmd = "sudo docker exec ceph-rgw-{hostname} ceph --cluster={cluster} -n client.rgw.{hostname} --connect-timeout 5 --keyring /var/lib/ceph/radosgw/{cluster}-rgw.{hostname}/keyring osd dump".format( container_binary = 'docker'
if host.exists('podman') and host.ansible("setup")["ansible_facts"]["ansible_distribution"] == 'Fedora': # noqa E501
container_binary = 'podman'
cmd = "sudo {container_binary} exec ceph-rgw-{hostname} ceph --cluster={cluster} -n client.rgw.{hostname} --connect-timeout 5 --keyring /var/lib/ceph/radosgw/{cluster}-rgw.{hostname}/keyring osd dump".format(
hostname=hostname, hostname=hostname,
cluster=cluster cluster=cluster,
container_binary=container_binary
) )
output = host.check_output(cmd) output = host.check_output(cmd)
pools = node["vars"].get("rgw_create_pools") pools = node["vars"].get("rgw_create_pools")