blob: 5fe40fc548a29af608f6bea7ac7fd8a6b94a4a41 [file] [log] [blame]
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03001import json
2import pytest
3
4
5def test_mounted_file_systems(local_salt_client, nodes_in_group):
6 """
7 # Get all mount points from each node in the group with the next command: `df -h | awk '{print $1}'`
8 # Check that all mount points are similar for each node in the group
9 """
10 mounts_by_nodes = local_salt_client.cmd(tgt="L@"+','.join(nodes_in_group),
11 param="df -h | awk '{print $1}'",
12 expr_form='compound')
13
14 # Let's exclude cmp, kvm, ceph OSD nodes, mon, cid, k8s-ctl, k8s-cmp nodes
15 # These nodes will have different mounts and this is expected
16 exclude_nodes = local_salt_client.test_ping(
17 tgt="I@nova:compute or "
18 "I@ceph:osd or "
19 "I@salt:control or "
20 "I@prometheus:server and not I@influxdb:server or "
21 "I@kubernetes:* and not I@etcd:* or "
22 "I@docker:host and not I@prometheus:server and not I@kubernetes:* or "
23 "I@gerrit:client and I@kubernetes:pool and not I@salt:master",
24 expr_form='compound').keys()
25
26 if len(mounts_by_nodes.keys()) < 2:
27 pytest.skip("Nothing to compare - only 1 node")
28
29 result = {}
30 pretty_result = {}
31
32 for node in mounts_by_nodes:
33 if node in exclude_nodes:
34 continue
Oleksii Zhurbae01d5e82019-05-17 14:04:28 -050035 if isinstance(mounts_by_nodes[node], bool):
36 result[node] = 'Cannot access this node'
37 pretty_result[node] = 'Cannot access this node'
38 else:
39 result[node] = "\n".join(sorted(mounts_by_nodes[node].split()))
40 pretty_result[node] = sorted(mounts_by_nodes[node].split())
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030041
42 if not result:
43 pytest.skip("These nodes are skipped")
44
45 assert len(set(result.values())) == 1,\
46 "The nodes in the same group have different mounts:\n{}".format(
47 json.dumps(pretty_result, indent=4))