def test_canary_second(): sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy world-deploy') sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'world-deploy', 'world-0:[server]', 'PENDING') # because the plan strategy is serial, the second phase just clears a wait bit without # proceeding to launch anything: expected_tasks = ['hello-0'] try: sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30) assert False, "Shouldn't have deployed a second task" except AssertionError as arg: raise arg except: pass # expected sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'PENDING' steps2 = phase['steps'] assert len(steps) == 4 assert steps2[0]['status'] == 'PENDING' assert steps2[1]['status'] == 'WAITING' assert steps2[2]['status'] == 'PENDING' assert steps2[3]['status'] == 'PENDING'
def test_canary_second(): sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy world-deploy") sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy", "world-deploy", "world-0:[server]", "PENDING") # because the plan strategy is serial, the second phase just clears a wait bit without # proceeding to launch anything: expected_tasks = ["hello-0"] try: sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30) assert False, "Shouldn't have deployed a second task" except AssertionError as arg: raise arg except Exception: pass # expected sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list") assert rc == 0, "Pod list failed" assert json.loads(stdout) == expected_tasks pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "PENDING" steps2 = phase["steps"] assert len(steps) == 4 assert steps2[0]["status"] == "PENDING" assert steps2[1]["status"] == "WAITING" assert steps2[2]["status"] == "PENDING" assert steps2[3]["status"] == "PENDING"
def test_canary_second(): sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy world-deploy") sdk_plan.wait_for_step_status( config.SERVICE_NAME, "deploy", "world-deploy", "world-0:[server]", "PENDING" ) # because the plan strategy is serial, the second phase just clears a wait bit without # proceeding to launch anything: expected_tasks = ["hello-0"] try: sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30) assert False, "Shouldn't have deployed a second task" except AssertionError as arg: raise arg except Exception: pass # expected sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list") assert rc == 0, "Pod list failed" assert json.loads(stdout) == expected_tasks pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "PENDING" steps2 = phase["steps"] assert len(steps) == 4 assert steps2[0]["status"] == "PENDING" assert steps2[1]["status"] == "WAITING" assert steps2[2]["status"] == "PENDING" assert steps2[3]["status"] == "PENDING"
def fail_placement(options): """ This assumes that the DC/OS cluster is reporting that all agents are in a single zone. """ # scheduler should fail to deploy, don't wait for it to complete: sdk_install.install( config.PACKAGE_NAME, config.SERVICE_NAME, 0, additional_options=options, wait_for_deployment=False, ) sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy", "world", "world-0:[server]", "COMPLETE") pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) # check that everything is still stuck looking for a match: assert pl["status"] == "IN_PROGRESS" assert len(pl["phases"]) == 2 phase1 = pl["phases"][0] assert phase1["status"] == "COMPLETE" steps1 = phase1["steps"] assert len(steps1) == 1 phase2 = pl["phases"][1] assert phase2["status"] == "IN_PROGRESS" steps2 = phase2["steps"] assert len(steps2) == 3 assert steps2[0]["status"] == "COMPLETE" assert steps2[1]["status"] in ("COMPLETE", "PREPARED", "PENDING") assert steps2[2]["status"] in ("PREPARED", "PENDING") try: sdk_tasks.check_running(config.SERVICE_NAME, 4, timeout_seconds=30) assert False, "Should have failed to deploy world-2" except AssertionError as arg: raise arg except Exception: pass # expected to fail sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
def fail_placement(options): """ This assumes that the DC/OS cluster is reporting that all agents are in a single zone. """ # scheduler should fail to deploy, don't wait for it to complete: sdk_install.install( config.PACKAGE_NAME, config.SERVICE_NAME, 0, additional_options=options, wait_for_deployment=False, ) sdk_plan.wait_for_step_status( config.SERVICE_NAME, "deploy", "world", "world-0:[server]", "COMPLETE" ) pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) # check that everything is still stuck looking for a match: assert pl["status"] == "IN_PROGRESS" assert len(pl["phases"]) == 2 phase1 = pl["phases"][0] assert phase1["status"] == "COMPLETE" steps1 = phase1["steps"] assert len(steps1) == 1 phase2 = pl["phases"][1] assert phase2["status"] == "IN_PROGRESS" steps2 = phase2["steps"] assert len(steps2) == 2 assert steps2[0]["status"] == "COMPLETE" assert steps2[1]["status"] in ("PREPARED", "PENDING") try: sdk_tasks.check_running(config.SERVICE_NAME, 3, timeout_seconds=30) assert False, "Should have failed to deploy world-1" except AssertionError as arg: raise arg except Exception: pass # expected to fail sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
def fail_placement(options): """ This assumes that the DC/OS cluster is reporting that all agents are in a single zone. """ # scheduler should fail to deploy, don't wait for it to complete: sdk_install.install(config.PACKAGE_NAME, config.SERVICE_NAME, 0, additional_options=options, wait_for_deployment=False) sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'world', 'world-0:[server]', 'COMPLETE') pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) # check that everything is still stuck looking for a match: assert pl['status'] == 'IN_PROGRESS' assert len(pl['phases']) == 2 phase1 = pl['phases'][0] assert phase1['status'] == 'COMPLETE' steps1 = phase1['steps'] assert len(steps1) == 1 phase2 = pl['phases'][1] assert phase2['status'] == 'IN_PROGRESS' steps2 = phase2['steps'] assert len(steps2) == 2 assert steps2[0]['status'] == 'COMPLETE' assert steps2[1]['status'] in ('PREPARED', 'PENDING') try: sdk_tasks.check_running(config.SERVICE_NAME, 3, timeout_seconds=30) assert False, "Should have failed to deploy world-1" except AssertionError as arg: raise arg except: pass # expected to fail sdk_install.uninstall(config.PACKAGE_NAME, config.SERVICE_NAME)
def test_canary_second(): sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy world-deploy') sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'world-deploy', 'world-0:[server]', 'PENDING') # because the plan strategy is serial, the second phase just clears a wait bit without # proceeding to launch anything: expected_tasks = ['hello-0'] try: sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks) + 1, timeout_seconds=30) assert False, "Shouldn't have deployed a second task" except AssertionError as arg: raise arg except: pass # expected sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks pl = sdk_plan.get_deployment_plan(config.SERVICE_NAME) log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'PENDING' steps2 = phase['steps'] assert len(steps) == 4 assert steps2[0]['status'] == 'PENDING' assert steps2[1]['status'] == 'WAITING' assert steps2[2]['status'] == 'PENDING' assert steps2[3]['status'] == 'PENDING'
def test_increase_cpu(): hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server') config.bump_hello_cpus() pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, 'deploy', 'WAITING') log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'WAITING' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' assert steps[4]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' # check that all prior tasks are still running, no changes yet expected_tasks = [ 'hello-0', 'hello-1', 'hello-2', 'hello-3', 'hello-4', 'world-0', 'world-1', 'world-2', 'world-3' ] sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server') sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy') sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-0-server', hello_0_ids) sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'hello-deploy', 'hello-0:[server]', 'COMPLETE') log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' assert steps[4]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-1-server') sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy') sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-1-server', hello_1_ids) pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME) log.info(pl) assert pl['status'] == 'COMPLETE' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' assert steps[4]['status'] == 'COMPLETE' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE'
def test_increase_cpu(): hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server") config.bump_hello_cpus() pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, "deploy", "WAITING") log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "WAITING" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" assert steps[4]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" # check that all prior tasks are still running, no changes yet expected_tasks = [ "hello-0", "hello-1", "hello-2", "hello-3", "hello-4", "world-0", "world-1", "world-2", "world-3", ] sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list") assert rc == 0, "Pod list failed" assert json.loads(stdout) == expected_tasks assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server") sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy") sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-0-server", hello_0_ids) sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) pl = sdk_plan.wait_for_step_status( config.SERVICE_NAME, "deploy", "hello-deploy", "hello-0:[server]", "COMPLETE" ) log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" assert steps[4]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-1-server") sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy") sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-1-server", hello_1_ids) pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME) log.info(pl) assert pl["status"] == "COMPLETE" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" assert steps[4]["status"] == "COMPLETE" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE"
def test_increase_cpu(): hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server') sdk_marathon.bump_cpu_count_config(config.SERVICE_NAME, 'HELLO_CPUS') pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, 'deploy', 'WAITING') log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'WAITING' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' assert steps[4]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' # check that all prior tasks are still running, no changes yet expected_tasks = [ 'hello-0', 'hello-1', 'hello-2', 'hello-3', 'hello-4', 'world-0', 'world-1', 'world-2', 'world-3'] sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) assert sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'pod list', json=True) == expected_tasks assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-0-server') sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy') sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-0-server', hello_0_ids) sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, 'deploy', 'hello-deploy', 'hello-0:[server]', 'COMPLETE') log.info(pl) assert pl['status'] == 'WAITING' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'WAITING' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'WAITING' assert steps[2]['status'] == 'PENDING' assert steps[3]['status'] == 'PENDING' assert steps[4]['status'] == 'PENDING' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, 'hello-1-server') sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, 'plan continue deploy hello-deploy') sdk_tasks.check_tasks_updated(config.SERVICE_NAME, 'hello-1-server', hello_1_ids) pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME) log.info(pl) assert pl['status'] == 'COMPLETE' assert len(pl['phases']) == 2 phase = pl['phases'][0] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 5 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE' assert steps[4]['status'] == 'COMPLETE' phase = pl['phases'][1] assert phase['status'] == 'COMPLETE' steps = phase['steps'] assert len(steps) == 4 assert steps[0]['status'] == 'COMPLETE' assert steps[1]['status'] == 'COMPLETE' assert steps[2]['status'] == 'COMPLETE' assert steps[3]['status'] == 'COMPLETE'
def test_increase_cpu(): hello_0_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server") config.bump_hello_cpus() pl = sdk_plan.wait_for_plan_status(config.SERVICE_NAME, "deploy", "WAITING") log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "WAITING" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" assert steps[4]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" # check that all prior tasks are still running, no changes yet expected_tasks = [ "hello-0", "hello-1", "hello-2", "hello-3", "hello-4", "world-0", "world-1", "world-2", "world-3", ] sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) rc, stdout, _ = sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "pod list") assert rc == 0, "Pod list failed" assert json.loads(stdout) == expected_tasks assert hello_0_ids == sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-0-server") sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy") sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-0-server", hello_0_ids) sdk_tasks.check_running(config.SERVICE_NAME, len(expected_tasks)) pl = sdk_plan.wait_for_step_status(config.SERVICE_NAME, "deploy", "hello-deploy", "hello-0:[server]", "COMPLETE") log.info(pl) assert pl["status"] == "WAITING" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "WAITING" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "WAITING" assert steps[2]["status"] == "PENDING" assert steps[3]["status"] == "PENDING" assert steps[4]["status"] == "PENDING" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" hello_1_ids = sdk_tasks.get_task_ids(config.SERVICE_NAME, "hello-1-server") sdk_cmd.svc_cli(config.PACKAGE_NAME, config.SERVICE_NAME, "plan continue deploy hello-deploy") sdk_tasks.check_tasks_updated(config.SERVICE_NAME, "hello-1-server", hello_1_ids) pl = sdk_plan.wait_for_completed_deployment(config.SERVICE_NAME) log.info(pl) assert pl["status"] == "COMPLETE" assert len(pl["phases"]) == 2 phase = pl["phases"][0] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 5 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE" assert steps[4]["status"] == "COMPLETE" phase = pl["phases"][1] assert phase["status"] == "COMPLETE" steps = phase["steps"] assert len(steps) == 4 assert steps[0]["status"] == "COMPLETE" assert steps[1]["status"] == "COMPLETE" assert steps[2]["status"] == "COMPLETE" assert steps[3]["status"] == "COMPLETE"