blob: 4850f961a05382e27519197b8f00c4bc2d009e27 [file] [log] [blame]
Oleksii Zhurba448c1b82019-01-30 20:55:38 -06001import json
Oleksii Zhurba23c18332019-05-09 18:53:40 -05002import pytest
Hanna Arhipova1eef8312019-05-06 20:14:18 +03003import logging
Oleksii Zhurba448c1b82019-01-30 20:55:38 -06004
5
Oleksii Zhurba23c18332019-05-09 18:53:40 -05006@pytest.mark.full
Oleksii Zhurbac3422212018-01-16 20:22:30 +00007def test_uncommited_changes(local_salt_client):
8 git_status = local_salt_client.cmd(
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +03009 tgt='salt:master',
10 param='cd /srv/salt/reclass/classes/cluster/; git status',
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060011 expr_form='pillar', check_status=True)
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030012 assert 'nothing to commit' in list(git_status.values())[0], (
Dmitriy Kruglovbc0a88b2019-08-20 11:45:35 +020013 "Git status shows some unmerged changes:\n{}".format(
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030014 list(git_status.values())[0])
Dmitriy Kruglovbc0a88b2019-08-20 11:45:35 +020015 )
Oleksii Zhurbae592ed12018-06-21 18:01:09 -050016
17
Oleksii Zhurba23c18332019-05-09 18:53:40 -050018@pytest.mark.smoke
Oleksii Zhurbae592ed12018-06-21 18:01:09 -050019def test_reclass_smoke(local_salt_client):
20 reclass = local_salt_client.cmd(
Hanna Arhipovae6ed8e42019-05-15 16:27:08 +030021 tgt='salt:master',
22 param='reclass-salt --top; echo $?',
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060023 expr_form='pillar', check_status=True)
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030024 result = reclass[list(reclass.keys())[0]][-1]
Oleksii Zhurbae592ed12018-06-21 18:01:09 -050025
Dmitriy Kruglovbc0a88b2019-08-20 11:45:35 +020026 assert result == '0', 'Reclass is broken:\n{}'.format(reclass)
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060027
28
Oleksii Zhurba23c18332019-05-09 18:53:40 -050029@pytest.mark.smoke
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060030def test_reclass_nodes(local_salt_client):
31 reclass = local_salt_client.cmd(
32 tgt='salt:master',
33 param='reclass-salt -o json --top',
34 expr_form='pillar', check_status=True)
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030035 salt = list(local_salt_client.cmd(
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060036 tgt='salt:master',
37 param='salt-run manage.status timeout=10 --out=json',
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030038 expr_form='pillar', check_status=True).values())[0] or {}
39 reclass_warnings = reclass[list(reclass.keys())[0]].split('{\n "base":')[0]
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060040 if reclass_warnings:
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030041<<<<<<< HEAD (a59105 [CVP-SPT] generate keypair without flavor name)
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060042 print "\nReclass-salt output has warnings"
43 reclass_nodes = reclass[reclass.keys()[0]].split('{\n "base":')[1]
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030044=======
45 logging.warning("\nReclass-salt output has warnings: {}".format(reclass_warnings))
46 reclass_nodes = reclass[list(reclass.keys())[0]].split('{\n "base":')[1]
47>>>>>>> CHANGE (e32e3f Migrate cvp-sanity to Python3)
Oleksii Zhurba448c1b82019-01-30 20:55:38 -060048 assert reclass_nodes != '', 'No nodes were found in' \
49 ' reclass-salt --top output'
50 reclass_nodes = sorted(json.loads(reclass_nodes.strip("}")).keys())
Ekaterina Chernovac73bc4e2019-11-12 14:56:03 +030051 salt_nodes = sorted([x for xs in list(json.loads(salt).values()) for x in xs])
Dmitriy Kruglovbc0a88b2019-08-20 11:45:35 +020052 assert salt_nodes == reclass_nodes, (
53 "Mismatch between registered salt nodes (left) and node defined in "
54 "reclass (right)."
55 )