def test_reports(self, caplog): dgm = DeploymentGroupManager(yaml.safe_load(GROUPS_YAML), node_lookup) dgm.mark_node_deployed('node1') dgm.mark_node_prepared('node2') dgm.mark_node_failed('node3') dgm.mark_group_prepared('control-nodes') dgm.mark_group_deployed('control-nodes') dgm.mark_group_prepared('compute-nodes-1') dgm.mark_group_failed('compute-nodes-2') dgm.report_group_summary() assert "===== Group Summary =====" in caplog.text assert ("Group ntp-node [Critical] ended with stage: " "Stage.NOT_STARTED") in caplog.text caplog.clear() dgm.report_node_summary() assert "Nodes Stage.PREPARED: node2" in caplog.text assert "Nodes Stage.FAILED: node3" in caplog.text assert "===== End Node Summary =====" in caplog.text assert "It was the best of times" not in caplog.text
def test_ordering_stages_flow_failure(self): dgm = DeploymentGroupManager(yaml.safe_load(_GROUPS_YAML), node_lookup) group = dgm.get_next_group(Stage.PREPARED) if group.name == 'monitoring-nodes': dgm.mark_group_prepared(group.name) dgm.mark_group_deployed(group.name) group = dgm.get_next_group(Stage.PREPARED) if group.name == 'ntp-node': dgm.mark_group_failed(group.name) group = dgm.get_next_group(Stage.PREPARED) if group and group.name == 'monitoring-nodes': dgm.mark_group_prepared(group.name) dgm.mark_group_deployed(group.name) group = dgm.get_next_group(Stage.PREPARED) # all remaining groups should be failed, so no more to prepare for name, grp in dgm._all_groups.items(): if (name == 'monitoring-nodes'): assert grp.stage == Stage.DEPLOYED else: assert grp.stage == Stage.FAILED assert group is None
def test_bad_group_name_lookup(self): dgm = DeploymentGroupManager(yaml.safe_load(_GROUPS_YAML), node_lookup) with pytest.raises(UnknownDeploymentGroupError) as udge: dgm.mark_group_prepared('Limburger Cheese') assert "Group name Limburger Cheese does not refer" in str(udge)