blob: cee92ecd914c10fc7bd1014c4dd02d87af61d24a [file] [log] [blame]
Oleksii Zhurba10b36032019-04-24 18:16:43 -05001import utils
2import json
Oleksii Zhurba100dc382019-05-09 14:18:17 -05003import pytest
Oleksii Zhurbaa10927b2017-09-27 22:09:23 +00004
5
Oleksii Zhurba5b15b9b2019-05-09 18:53:40 -05006@pytest.mark.smoke
Oleksii Zhurba10b36032019-04-24 18:16:43 -05007def test_single_vip_exists(local_salt_client):
8 """Test checks that there is only one VIP address
9 within one group of nodes (where applicable).
10 Steps:
11 1. Get IP addresses for nodes via salt cmd.run 'ip a | grep /32'
Oleksii Zhurba100dc382019-05-09 14:18:17 -050012 2. Check that exactly 1 node responds with something.
Oleksii Zhurba10b36032019-04-24 18:16:43 -050013 """
14 groups = utils.calculate_groups()
Oleksii Zhurba100dc382019-05-09 14:18:17 -050015
16 keywords_to_exclude_interfaces = ["flannel.1"]
17 exclude_from_grep = " | grep -v {}".format('\|'.join(keywords_to_exclude_interfaces)) \
18 if len(keywords_to_exclude_interfaces) > 0 \
19 else ""
Oleksii Zhurba10b36032019-04-24 18:16:43 -050020 no_vip = {}
21 for group in groups:
Oleksii Zhurbaede8b892019-05-30 09:37:23 -050022 if group in ['cmp', 'cfg', 'kvm', 'cmn', 'osd', 'gtw', 'dns']:
Oleksii Zhurba4bfd2ee2019-04-10 21:56:58 -050023 continue
Oleksii Zhurba10b36032019-04-24 18:16:43 -050024 nodes_list = local_salt_client.cmd(
Oleksii Zhurba100dc382019-05-09 14:18:17 -050025 tgt="L@" + ','.join(groups[group]),
26 fun='cmd.run',
27 param='ip a | grep /32 ' + exclude_from_grep,
28 expr_form='compound')
Oleksii Zhurba10b36032019-04-24 18:16:43 -050029 result = [x for x in nodes_list.values() if x]
30 if len(result) != 1:
31 if len(result) == 0:
32 no_vip[group] = 'No vip found'
33 else:
34 no_vip[group] = nodes_list
35 assert len(no_vip) < 1, "Some groups of nodes have problem with vip " \
36 "\n{}".format(json.dumps(no_vip, indent=4))