Exemple #1
0
def test_downgrade_scheduler():

    options = {
        "service": {
            "name": SERVICE_NAME
        },
        "hello": {
            "count": 2
        },
        "world": {
            "count": 3
        }
    }
    sdk_upgrade.test_downgrade(config.PACKAGE_NAME,
                               SERVICE_NAME,
                               5,
                               to_version=DOWNGRADE_TO,
                               to_options=options)

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0
    assert len(current_task_roles) == 5

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == LEGACY_ROLE
Exemple #2
0
def test_switch_to_legacy_role():

    options = {
        "service": {
            "name": SERVICE_NAME,
            "role": "slave_public",
            "enable_role_migration": True
        }
    }
    sdk_upgrade.update_or_upgrade_or_downgrade(
        config.PACKAGE_NAME,
        SERVICE_NAME,
        expected_running_tasks=3,
        to_options=options,
        to_version=None,
    )

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE not in current_task_roles.values()
    assert ENFORCED_ROLE in current_task_roles.values()

    assert service_roles["framework-roles"] is not None
    assert service_roles["framework-role"] is None

    assert len(service_roles["framework-roles"]) == 2
    assert LEGACY_ROLE in service_roles["framework-roles"]
    assert ENFORCED_ROLE in service_roles["framework-roles"]
Exemple #3
0
def test_disable_quota_role():

    # Add new pods to service which should be launched with the new role.
    # Turn off legacy role.

    options = {
        "service": {
            "name": SERVICE_NAME,
            "role": "slave_public",
            "enable_role_migration": False
        }
    }
    sdk_upgrade.update_or_upgrade_or_downgrade(
        config.PACKAGE_NAME,
        SERVICE_NAME,
        expected_running_tasks=3,
        to_options=options,
        to_version=None,
    )
    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0
    assert len(current_task_roles) == 3

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    # Ensure we're not MULTI_ROLE, and only using the legacy-role.
    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == LEGACY_ROLE
Exemple #4
0
def test_add_pods_post_update():

    # Add new pods to service which should be launched with the new role.
    marathon_config = sdk_marathon.get_config(SERVICE_NAME)

    # Add an extra pod to each.
    marathon_config["env"]["HELLO_COUNT"] = "2"
    marathon_config["env"]["WORLD_COUNT"] = "3"

    # Update the app
    sdk_marathon.update_app(marathon_config)

    # Wait for scheduler to restart.
    sdk_plan.wait_for_completed_deployment(SERVICE_NAME)

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0
    assert len(current_task_roles) == 5

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == LEGACY_ROLE
Exemple #5
0
def test_update_scheduler_role():

    options = {
        "service": {"name": SERVICE_NAME, "role": ENFORCED_ROLE, "enable_role_migration": True}
    }
    sdk_upgrade.update_or_upgrade_or_downgrade(
        config.PACKAGE_NAME,
        SERVICE_NAME,
        expected_running_tasks=3,
        to_options=options,
        to_version=None,
    )

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE in current_task_roles.values()
    # Pods haven't been replaced yet.
    assert ENFORCED_ROLE not in current_task_roles.values()

    # Ensure we are MULTI_ROLE.
    assert service_roles["framework-roles"] is not None
    assert service_roles["framework-role"] is None

    assert len(service_roles["framework-roles"]) == 2
    assert LEGACY_ROLE in service_roles["framework-roles"]
    assert ENFORCED_ROLE in service_roles["framework-roles"]
def test_disable_quota_role():

    # Add new pods to service which should be launched with the new role.
    marathon_config = sdk_marathon.get_config(SERVICE_NAME)

    # Turn off legacy role.
    marathon_config["env"]["ENABLE_ROLE_MIGRATION"] = "false"

    # Update the app
    sdk_marathon.update_app(marathon_config)

    # Wait for scheduler to restart.
    sdk_plan.wait_for_completed_deployment(SERVICE_NAME)

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0
    assert len(current_task_roles) == 3

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    # Ensure we're not MULTI_ROLE, and only using the legacy-role.
    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == LEGACY_ROLE
def _install_and_fetch_service_roles(options: dict) -> (dict, dict):
    # this config produces 1 hello's + 2 world's:
    sdk_install.install(
        config.PACKAGE_NAME, SERVICE_NAME, 3, additional_options=options, wait_for_deployment=True
    )
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0
    return service_roles, current_task_roles
Exemple #8
0
def test_replace_pods_to_legacy_role():

    # Issue pod replace operations till we move the pods to the legacy role.
    replace_pods = ["hello-0", "world-0", "world-1"]

    for pod in replace_pods:
        # start replace and wait for it to finish
        sdk_cmd.svc_cli(config.PACKAGE_NAME, SERVICE_NAME,
                        "pod replace {}".format(pod))
        sdk_plan.wait_for_kicked_off_recovery(
            SERVICE_NAME, timeout_seconds=RECOVERY_TIMEOUT_SECONDS)
        sdk_plan.wait_for_completed_recovery(
            SERVICE_NAME, timeout_seconds=RECOVERY_TIMEOUT_SECONDS)

        # Get the current service state to verify roles have applied.
        service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
        current_task_roles = service_roles["task-roles"]
        task_name = "{}-server".format(pod)

        # Ensure we have transitioned over to the legacy role.
        assert current_task_roles[task_name] == LEGACY_ROLE

    # Get refreshed roles after pod replace's
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    # Ensure we're MULTI_ROLE
    assert service_roles["framework-roles"] is not None
    assert service_roles["framework-role"] is None

    assert len(service_roles["framework-roles"]) == 2
    assert LEGACY_ROLE in service_roles["framework-roles"]
    assert ENFORCED_ROLE in service_roles["framework-roles"]
def test_disable_enforce_role():

    # Turn off enforce role
    sdk_cmd.run_cli("marathon group update /{} enforceRole=false".format(ENFORCED_ROLE))

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE not in current_task_roles.values()
    assert ENFORCED_ROLE in current_task_roles.values()

    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == ENFORCED_ROLE
Exemple #10
0
def test_initial_upgrade():

    options = {"service": {"name": SERVICE_NAME}}
    sdk_upgrade.test_upgrade(
        config.PACKAGE_NAME, SERVICE_NAME, 3, from_version=UPGRADE_FROM, from_options=options
    )

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE in current_task_roles.values()
    assert ENFORCED_ROLE not in current_task_roles.values()

    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == ENFORCED_ROLE
def test_initial_install():

    # Create group without enforced roles.
    options = {"service": {"name": SERVICE_NAME}}

    # this config produces 1 hello's + 2 world's:
    sdk_install.install(config.PACKAGE_NAME, SERVICE_NAME, 3, additional_options=options)

    # Get the current service state to verify roles have applied.
    service_roles = sdk_utils.get_service_roles(SERVICE_NAME)
    current_task_roles = service_roles["task-roles"]

    # We must have some role!
    assert len(current_task_roles) > 0

    assert LEGACY_ROLE not in current_task_roles.values()
    assert ENFORCED_ROLE in current_task_roles.values()

    assert service_roles["framework-roles"] is None
    assert service_roles["framework-role"] == ENFORCED_ROLE