blob: 91fcd9226a05f0bbebbf44e550de0bfc15e17dcf [file] [log] [blame]
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03001import utils
2import json
Oleksii Zhurbabb630be2019-05-09 14:18:17 -05003import pytest
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03004
5
Oleksii Zhurba23c18332019-05-09 18:53:40 -05006@pytest.mark.smoke
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03007def 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 Zhurbabb630be2019-05-09 14:18:17 -050012 2. Check that exactly 1 node responds with something.
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030013 """
14 groups = utils.calculate_groups()
Oleksii Zhurbabb630be2019-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 ""
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030020 no_vip = {}
21 for group in groups:
22 if group in ['cmp', 'cfg', 'kvm', 'cmn', 'osd', 'gtw']:
23 continue
24 nodes_list = local_salt_client.cmd(
Oleksii Zhurbabb630be2019-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')
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030029 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))