def deploy(
    plugin_id: str,
    context: "Context",
    team_context: "TeamContext",
    parameters: Dict[str, Any],
) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHART_PATH,
                                              target_path=plugin_id)
    containers = parameters["replicas"] if "replicas" in parameters else 1
    del parameters["replicas"]
    if "cpu" not in parameters:
        parameters["cpu"] = "1"

    if "node_group" not in parameters:
        raise Exception(
            f"The parameter 'node_group' is missing for {plugin_id}...please add it"
        )

    node_group = parameters["node_group"]
    del parameters["node_group"]

    resources = {"resources": parameters}

    _logger.info(
        f"overprovisioning installed with {containers} containers of resources:  {resources}."
    )

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        restart_policy=parameters["restartPolicy"]
        if "restartPolicy" in parameters else "Never",
        plugin_id=plugin_id,
        containers=containers,
        resources=yaml.dump(resources),
        toolkit_s3_bucket=context.toolkit.s3_bucket,
        node_group=node_group,
    )

    repo = team_context.name
    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo, chart_path=chart_path, values=vars)
    helm.install_chart(
        repo=repo,
        namespace=team_context.name,
        name=f"{team_context.name}-{plugin_id}",
        chart_name=chart_name,
        chart_version=chart_version,
    )
def deploy(
    plugin_id: str,
    context: "Context",
    team_context: "TeamContext",
    parameters: Dict[str, Any],
) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    release_name = f"{team_context.name}-{plugin_id}"

    _logger.info("Checking Chart %s is installed...", release_name)
    fresh_install = True
    if helm.is_exists_chart_release(release_name, team_context.name):
        _logger.info(
            "Chart %s already installed, removing to begin new install",
            release_name)

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        plugin_id=plugin_id,
    )

    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHART_PATHS,
                                              target_path=plugin_id)
    _logger.debug("package dir")
    utils.print_dir(CHART_PATHS)
    _logger.debug("copy chart dir")
    utils.print_dir(chart_path)

    repo_location = team_context.team_helm_repository
    repo = team_context.name
    helm.add_repo(repo=repo, repo_location=repo_location)
    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo, chart_path=chart_path, values=vars)

    _logger.info("Chart %s installing ", release_name)
    helm.install_chart(
        repo=repo,
        namespace=team_context.name,
        name=release_name,
        chart_name=chart_name,
        chart_version=chart_version,
    )

    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo, chart_path=chart_path, values=vars)
    _logger.info(
        f"Sagemaker Operator Helm Chart {chart_name}@{chart_version} installed for {team_context.name} at {chart_package}"
    )
Esempio n. 3
0
def deploy(plugin_id: str, context: "Context", team_context: "TeamContext",
           parameters: Dict[str, Any]) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHART_PATH)
    _logger.debug("package dir")
    utils.print_dir(CHART_PATH)
    _logger.debug("copy chart dir")
    utils.print_dir(chart_path)
    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        tag=context.images.jupyter_hub.version,
        restart_policy=parameters["restartPolicy"]
        if "restartPolicy" in parameters else "Never",
        plugin_id=plugin_id,
        toolkit_s3_bucket=context.toolkit.s3_bucket,
        image_pull_policy="Always"
        if aws_orbit.__version__.endswith(".dev0") else "IfNotPresent",
    )

    if "script" in parameters:
        script_body = parameters["script"]
    else:
        raise Exception(f"Plugin {plugin_id} must define parameter 'script'")
    script_file = os.path.join(chart_path, "script.txt")

    script_body = utils.resolve_parameters(script_body, vars)
    with open(script_file, "w") as file:
        file.write(script_body)

    repo_location = helm.init_team_repo(context=context,
                                        team_context=team_context)
    repo = team_context.name
    _logger.debug(script_body)
    helm.add_repo(repo=repo, repo_location=repo_location)
    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo, chart_path=chart_path, values=vars)
    helm.install_chart(
        repo=repo,
        namespace=team_context.name,
        name=f"{team_context.name}-{plugin_id}",
        chart_name=chart_name,
        chart_version=chart_version,
    )
def deploy(
    plugin_id: str,
    context: "Context",
    team_context: "TeamContext",
    parameters: Dict[str, Any],
) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHART_PATH,
                                              target_path=plugin_id)

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        restart_policy=parameters["restartPolicy"]
        if "restartPolicy" in parameters else "Always",
        path=parameters["path"]
        if "path" in parameters else "/home/jovyan/shared/voila",
        options=parameters["options"] if "options" in parameters else "",
        plugin_id=plugin_id,
        toolkit_s3_bucket=context.toolkit.s3_bucket,
        image_pull_policy="Always"
        if aws_orbit.__version__.endswith(".dev0") else "IfNotPresent",
        image=parameters["image"]
        if "image" in parameters else team_context.final_image_address,
        sts_ep="legacy"
        if context.networking.data.internet_accessible else "regional",
    )

    repo_location = team_context.team_helm_repository
    if repo_location:
        repo = team_context.name
        helm.add_repo(repo=repo, repo_location=repo_location)
        chart_name, chart_version, chart_package = helm.package_chart(
            repo=repo, chart_path=chart_path, values=vars)
        helm.install_chart(
            repo=repo,
            namespace=team_context.name,
            name=f"{team_context.name}-{plugin_id}",
            chart_name=chart_name,
            chart_version=chart_version,
        )
Esempio n. 5
0
def deploy(plugin_id: str, context: "Context", team_context: "TeamContext",
           parameters: Dict[str, Any]) -> None:
    _logger.debug("Team Env name: %s | Team name: %s", context.name,
                  team_context.name)
    plugin_id = plugin_id.replace("_", "-")
    _logger.debug("plugin_id: %s", plugin_id)
    chart_path = helm.create_team_charts_copy(team_context=team_context,
                                              path=CHART_PATH)
    workers = parameters["workers"] if "workers" in parameters else "3"
    release_tag = parameters[
        "release_tag"] if "release_tag" in parameters else "latest"

    _logger.info(
        f"Ray cluster installed with {workers} workers , version {release_tag}."
    )

    vars: Dict[str, Optional[str]] = dict(
        team=team_context.name,
        region=context.region,
        account_id=context.account_id,
        env_name=context.name,
        restart_policy=parameters["restartPolicy"]
        if "restartPolicy" in parameters else "Never",
        plugin_id=plugin_id,
        workers=workers,
        release_tag=release_tag,
        toolkit_s3_bucket=context.toolkit.s3_bucket,
        image_pull_policy="Always"
        if aws_orbit.__version__.endswith(".dev0") else "IfNotPresent",
    )

    repo_location = helm.init_team_repo(context=context,
                                        team_context=team_context)
    repo = team_context.name
    helm.add_repo(repo=repo, repo_location=repo_location)
    chart_name, chart_version, chart_package = helm.package_chart(
        repo=repo, chart_path=chart_path, values=vars)
    helm.install_chart(
        repo=repo,
        namespace=team_context.name,
        name=f"{team_context.name}-{plugin_id}",
        chart_name=chart_name,
        chart_version=chart_version,
    )