def test_dgm(self): all_yaml_dict = yaml.safe_load(INPUT_YAML) group_dict_list = all_yaml_dict['data']['groups'] dgm = DeploymentGroupManager(group_dict_list, node_lookup) assert dgm is not None # topological sort doesn't guarantee a specific order. assert dgm.get_next_group(Stage.PREPARED).name == 'masters' assert len(dgm._all_groups) == 4 assert len(dgm._all_nodes) == 6
def test_basic_class(self): dgm = DeploymentGroupManager(yaml.safe_load(_GROUPS_YAML), node_lookup) assert dgm is not None # topological sort doesn't guarantee a specific order. assert dgm.get_next_group(Stage.PREPARED).name in ['ntp-node', 'monitoring-nodes'] assert len(dgm._all_groups) == 7 assert len(dgm._all_nodes) == 12 for name, group in dgm._all_groups.items(): assert name == group.name
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_no_next_group(self): dgm = DeploymentGroupManager(yaml.safe_load(_GROUPS_YAML), node_lookup) assert dgm.get_next_group(Stage.DEPLOYED) is None