def test_pcs_status(): pcs = PCSStatus(context_wrap(CLUSTER_NORMAL)) assert pcs.nodes == ['myhost15', 'myhost17', 'myhost16'] assert pcs.get('Stack') == 'corosync' assert pcs.get('Cluster name') == 'openstack' assert pcs.get('Current DC') == 'myhost15 (1) - partition with quorum' assert pcs.get("Nodes configured") == "3" assert pcs.get("Resources configured") == "143" assert pcs.get("Online") == "[ myhost15 myhost16 myhost17 ]" assert pcs.get('Nonexistent key') is None
def test_cluster_warning(): pcs = PCSStatus(context_wrap(CLUSTER_WARNINGS)) assert pcs.nodes == [] assert pcs.data['WARNING'] == [ "WARNING: We don't know where, but something awful is going to happen", "WARNING: This is another made-up warning, please supply real ones" ]
def test_pcs_uncleannode(): pcs = PCSStatus(context_wrap(CLUSTER_UNCLEANNODE)) assert pcs.nodes == ['control-0', 'control-1', 'control-2'] assert pcs.bad_nodes == [{ 'status': 'UNCLEAN (online)', 'name': 'control-2' }]
def test_pcs_output1(): pcs = PCSStatus(context_wrap(CLUSTER_OUTPUT_PACEMAKER_VERSION2)) assert pcs.get( 'Current DC' ) == 'host2 (2) (version 2.1.0-8.el8-7c3f660707) - partition with quorum' assert pcs.get('Cluster name') == 'cluster1' assert pcs.nodes == ['host1', 'host2'] assert pcs['Nodes configured'] == '2' assert pcs['Resources configured'] == '6' assert len(pcs['Full list of resources']) == 7 assert 'Tickets' in pcs assert not pcs['Tickets'] assert len(pcs['Failed Fencing Actions']) == 6 assert len(pcs['Fencing History']) == 5 assert 'Migration Summary' in pcs assert not pcs['Migration Summary'] assert len(pcs['Node List']) == 1
def test_pcs_nodes_and_resources(): pcs = PCSStatus(context_wrap(CLUSTER_NODES_AND_RESOURCES)) assert pcs.nodes == ['overcloud-controller-0', 'overcloud-controller-1', 'overcloud-controller-2'] # 3 nodes and 112 resources configured assert pcs.data['Nodes configured'] == '3' assert pcs.data['Resources configured'] == '112' assert pcs.data['Daemon Status'] == [ 'corosync: active/enabled', 'pacemaker: active/enabled', 'pcsd: active/enabled', ]
def test_pcs_output2(): pcs = PCSStatus(context_wrap(CLUSTER_OUTPUT_PACEMAKER_VERSION_1)) assert pcs['Nodes configured'] == '2' assert pcs['Resources configured'] == '1' assert len(pcs['Full list of resources']) == 1 assert 'clusterfence (stonith:fence_aws): Stopped' in pcs[ 'Full list of resources'] assert 'Failed Actions' in pcs assert len(pcs['Failed Actions']) == 4 assert "* clusterfence_start_0 on test-host1 'unknown error' (1): call=78, status=Timed Out, exitreason=''," in pcs.data[ 'Failed Actions'] assert 'Migration Summary' in pcs assert len(pcs['Migration Summary']) == 4 assert "clusterfence: migration-threshold=1000000 fail-count=1000000 last-failure='Thu Feb 17 16:35:17 2022'" in pcs.data[ 'Migration Summary'] assert len(pcs['Node Attributes']) == 2 assert '* Node test-host1 (1):' in pcs['Node Attributes']
def test_cluster_not_running(): pcs = PCSStatus(context_wrap(CLUSTER_NOT_RUNNING)) assert pcs.nodes == []