From 45704f8bff6208ec28e4661c9f8d639be788b8fe Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Mon, 24 Jun 2024 01:02:20 +0800 Subject: [PATCH 1/8] fix extra config detection --- stack_orchestrator/deploy/deployment_create.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stack_orchestrator/deploy/deployment_create.py b/stack_orchestrator/deploy/deployment_create.py index 4e0a8e13..ba709ed8 100644 --- a/stack_orchestrator/deploy/deployment_create.py +++ b/stack_orchestrator/deploy/deployment_create.py @@ -238,6 +238,11 @@ def _find_extra_config_dirs(parsed_pod_file, pod): config_dir = host_path.split("/")[2] if config_dir != pod: config_dirs.add(config_dir) + for env_file in service_info.get("env_file", []): + if env_file.startswith("../config"): + config_dir = env_file.split("/")[2] + if config_dir != pod: + config_dirs.add(config_dir) return config_dirs -- 2.45.2 From 9b27ba1619691206d339e07ebb8d4f7d628fe1a8 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Mon, 24 Jun 2024 22:08:40 +0800 Subject: [PATCH 2/8] fix `deployment ports` command --- stack_orchestrator/deploy/deployment.py | 1 + 1 file changed, 1 insertion(+) diff --git a/stack_orchestrator/deploy/deployment.py b/stack_orchestrator/deploy/deployment.py index f364121f..db6ad6cc 100644 --- a/stack_orchestrator/deploy/deployment.py +++ b/stack_orchestrator/deploy/deployment.py @@ -123,6 +123,7 @@ def push_images(ctx): @click.argument('extra_args', nargs=-1) # help: command: port @click.pass_context def port(ctx, extra_args): + ctx.obj = make_deploy_context(ctx) port_operation(ctx, extra_args) -- 2.45.2 From e0a9046685d5cf65e01ccf44dfee2fc5eaf6e515 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Sat, 22 Jun 2024 01:17:37 +0800 Subject: [PATCH 3/8] support version in source/dist install --- setup.py | 4 +++- stack_orchestrator/version.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 773451f5..ace0d536 100644 --- a/setup.py +++ b/setup.py @@ -4,9 +4,11 @@ with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read() with open("requirements.txt", "r", encoding="utf-8") as fh: requirements = fh.read() +with open("stack_orchestrator/data/version.txt", "r", encoding="utf-8") as fh: + version = fh.readlines()[-1].strip(" \n") setup( name='laconic-stack-orchestrator', - version='1.0.12', + version=version, author='Cerc', author_email='info@cerc.io', license='GNU Affero General Public License', diff --git a/stack_orchestrator/version.py b/stack_orchestrator/version.py index 68e47b44..541e5580 100644 --- a/stack_orchestrator/version.py +++ b/stack_orchestrator/version.py @@ -14,7 +14,7 @@ # along with this program. If not, see . import click -import importlib.resources +from importlib import resources, metadata @click.command() @@ -24,8 +24,11 @@ def command(ctx): # See: https://stackoverflow.com/a/20885799/1701505 from stack_orchestrator import data - with importlib.resources.open_text(data, "build_tag.txt") as version_file: - # TODO: code better version that skips comment lines - version_string = version_file.read().splitlines()[1] + if resources.is_resource(data, "build_tag.txt"): + with resources.open_text(data, "build_tag.txt") as version_file: + # TODO: code better version that skips comment lines + version_string = version_file.read().splitlines()[1] + else: + version_string = metadata.version("laconic-stack-orchestrator") + "-unknown" - print(f"Version: {version_string}") + print(version_string) -- 2.45.2 From 426357bbdba500bebc98ad05677f9e92ab27f42c Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Thu, 27 Jun 2024 14:08:39 +0800 Subject: [PATCH 4/8] fall back to SHA if not on branch or tag --- stack_orchestrator/repos/setup_repositories.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/stack_orchestrator/repos/setup_repositories.py b/stack_orchestrator/repos/setup_repositories.py index 4014e183..ea6159f8 100644 --- a/stack_orchestrator/repos/setup_repositories.py +++ b/stack_orchestrator/repos/setup_repositories.py @@ -20,6 +20,7 @@ import os import sys from decouple import config import git +from git.exc import GitCommandError from tqdm import tqdm import click import importlib.resources @@ -81,9 +82,13 @@ def _get_repo_current_branch_or_tag(full_filesystem_repo_path): except TypeError: # This means that the current ref is not a branch, so possibly a tag # Let's try to get the tag - current_repo_branch_or_tag = git.Repo(full_filesystem_repo_path).git.describe("--tags", "--exact-match") - # Note that git is assymetric -- the tag you told it to check out may not be the one - # you get back here (if there are multiple tags associated with the same commit) + try: + current_repo_branch_or_tag = git.Repo(full_filesystem_repo_path).git.describe("--tags", "--exact-match") + # Note that git is asymmetric -- the tag you told it to check out may not be the one + # you get back here (if there are multiple tags associated with the same commit) + except GitCommandError as e: + # If there is no matching branch or tag checked out, just use the current SHA + current_repo_branch_or_tag = git.Repo(full_filesystem_repo_path).commit("HEAD").hexsha return current_repo_branch_or_tag, is_branch @@ -102,7 +107,7 @@ def process_repo(pull, check_only, git_ssh, dev_root_path, branches_array, fully full_filesystem_repo_path ) if is_present else (None, None) if not opts.o.quiet: - present_text = f"already exists active {'branch' if is_branch else 'tag'}: {current_repo_branch_or_tag}" if is_present \ + present_text = f"already exists active {'branch' if is_branch else 'ref'}: {current_repo_branch_or_tag}" if is_present \ else 'Needs to be fetched' print(f"Checking: {full_filesystem_repo_path}: {present_text}") # Quick check that it's actually a repo @@ -120,7 +125,7 @@ def process_repo(pull, check_only, git_ssh, dev_root_path, branches_array, fully origin = git_repo.remotes.origin origin.pull(progress=None if opts.o.quiet else GitProgress()) else: - print("skipping pull because this repo checked out a tag") + print("skipping pull because this repo is not on a branch") else: print("(git pull skipped)") if not is_present: -- 2.45.2 From 8fb0e4a328082bb14a5035c637804e36f66c35a6 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Mon, 1 Jul 2024 11:37:02 +0800 Subject: [PATCH 5/8] lint fix --- stack_orchestrator/repos/setup_repositories.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack_orchestrator/repos/setup_repositories.py b/stack_orchestrator/repos/setup_repositories.py index ea6159f8..d16cea2b 100644 --- a/stack_orchestrator/repos/setup_repositories.py +++ b/stack_orchestrator/repos/setup_repositories.py @@ -86,7 +86,7 @@ def _get_repo_current_branch_or_tag(full_filesystem_repo_path): current_repo_branch_or_tag = git.Repo(full_filesystem_repo_path).git.describe("--tags", "--exact-match") # Note that git is asymmetric -- the tag you told it to check out may not be the one # you get back here (if there are multiple tags associated with the same commit) - except GitCommandError as e: + except GitCommandError: # If there is no matching branch or tag checked out, just use the current SHA current_repo_branch_or_tag = git.Repo(full_filesystem_repo_path).commit("HEAD").hexsha return current_repo_branch_or_tag, is_branch -- 2.45.2 From 8dfca4b227af8306b781a8ced95917d3c87b3351 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Tue, 2 Jul 2024 12:52:27 +0800 Subject: [PATCH 6/8] fix stack path resolution This was broken for "build-containers" with external stacks. Now setup and build use the same functions. --- stack_orchestrator/build/build_util.py | 12 +++---- .../deploy/deployment_create.py | 4 +-- .../repos/setup_repositories.py | 23 +++---------- stack_orchestrator/util.py | 33 +++++++++---------- 4 files changed, 27 insertions(+), 45 deletions(-) diff --git a/stack_orchestrator/build/build_util.py b/stack_orchestrator/build/build_util.py index 7eb89ba9..15be1f9b 100644 --- a/stack_orchestrator/build/build_util.py +++ b/stack_orchestrator/build/build_util.py @@ -21,11 +21,6 @@ from stack_orchestrator.util import get_parsed_stack_config, warn_exit def get_containers_in_scope(stack: str): - # See: https://stackoverflow.com/a/20885799/1701505 - from stack_orchestrator import data - with importlib.resources.open_text(data, "container-image-list.txt") as container_list_file: - all_containers = container_list_file.read().splitlines() - containers_in_scope = [] if stack: stack_config = get_parsed_stack_config(stack) @@ -33,11 +28,14 @@ def get_containers_in_scope(stack: str): warn_exit(f"stack {stack} does not define any containers") containers_in_scope = stack_config['containers'] else: - containers_in_scope = all_containers + # See: https://stackoverflow.com/a/20885799/1701505 + from stack_orchestrator import data + with importlib.resources.open_text(data, "container-image-list.txt") as container_list_file: + containers_in_scope = container_list_file.read().splitlines() if opts.o.verbose: print(f'Containers: {containers_in_scope}') if stack: print(f"Stack: {stack}") - return containers_in_scope \ No newline at end of file + return containers_in_scope diff --git a/stack_orchestrator/deploy/deployment_create.py b/stack_orchestrator/deploy/deployment_create.py index ba709ed8..ac40b768 100644 --- a/stack_orchestrator/deploy/deployment_create.py +++ b/stack_orchestrator/deploy/deployment_create.py @@ -24,7 +24,7 @@ from secrets import token_hex import sys from stack_orchestrator import constants from stack_orchestrator.opts import opts -from stack_orchestrator.util import (get_stack_file_path, get_parsed_deployment_spec, get_parsed_stack_config, +from stack_orchestrator.util import (get_internal_stack_file_path, get_parsed_deployment_spec, get_parsed_stack_config, global_options, get_yaml, get_pod_list, get_pod_file_path, pod_has_scripts, get_pod_script_paths, get_plugin_code_paths, error_exit, env_var_map_from_file, resolve_config_dir) @@ -459,7 +459,7 @@ def create_operation(deployment_command_context, spec_file, deployment_dir, netw _check_volume_definitions(parsed_spec) stack_name = parsed_spec["stack"] deployment_type = parsed_spec[constants.deploy_to_key] - stack_file = get_stack_file_path(stack_name) + stack_file = get_internal_stack_file_path(stack_name) parsed_stack = get_parsed_stack_config(stack_name) if opts.o.debug: print(f"parsed spec: {parsed_spec}") diff --git a/stack_orchestrator/repos/setup_repositories.py b/stack_orchestrator/repos/setup_repositories.py index d16cea2b..83075647 100644 --- a/stack_orchestrator/repos/setup_repositories.py +++ b/stack_orchestrator/repos/setup_repositories.py @@ -24,11 +24,8 @@ from git.exc import GitCommandError from tqdm import tqdm import click import importlib.resources -from pathlib import Path -import yaml -from stack_orchestrator.constants import stack_file_name from stack_orchestrator.opts import opts -from stack_orchestrator.util import include_exclude_check, stack_is_external, error_exit, warn_exit +from stack_orchestrator.util import get_parsed_stack_config, include_exclude_check, error_exit, warn_exit class GitProgress(git.RemoteProgress): @@ -227,20 +224,10 @@ def command(ctx, include, exclude, git_ssh, check_only, pull, branches): repos_in_scope = [] if stack: - if stack_is_external(stack): - stack_file_path = Path(stack).joinpath(stack_file_name) - else: - # In order to be compatible with Python 3.8 we need to use this hack to get the path: - # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure - stack_file_path = Path(__file__).absolute().parent.parent.joinpath("data", "stacks", stack, stack_file_name) - if not stack_file_path.exists(): - error_exit(f"stack {stack} does not exist") - with stack_file_path: - stack_config = yaml.safe_load(open(stack_file_path, "r")) - if "repos" not in stack_config or stack_config["repos"] is None: - warn_exit(f"stack {stack} does not define any repositories") - else: - repos_in_scope = stack_config["repos"] + stack_config = get_parsed_stack_config(stack) + if "repos" not in stack_config or stack_config["repos"] is None: + warn_exit(f"stack {stack} does not define any repositories") + repos_in_scope = stack_config["repos"] else: repos_in_scope = all_repos diff --git a/stack_orchestrator/util.py b/stack_orchestrator/util.py index d4e4d32f..3d4054ac 100644 --- a/stack_orchestrator/util.py +++ b/stack_orchestrator/util.py @@ -20,6 +20,7 @@ import ruamel.yaml from pathlib import Path from dotenv import dotenv_values from typing import Mapping, Set, List +from stack_orchestrator.constants import stack_file_name def include_exclude_check(s, include, exclude): @@ -33,10 +34,10 @@ def include_exclude_check(s, include, exclude): return s not in exclude_list -def get_stack_file_path(stack): +def get_internal_stack_file_path(stack): # In order to be compatible with Python 3.8 we need to use this hack to get the path: # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure - stack_file_path = Path(__file__).absolute().parent.joinpath("data", "stacks", stack, "stack.yml") + stack_file_path = Path(__file__).absolute().parent.joinpath("data", "stacks", stack, stack_file_name) return stack_file_path @@ -52,21 +53,17 @@ def get_dev_root_path(ctx): # Caller can pass either the name of a stack, or a path to a stack file def get_parsed_stack_config(stack): - stack_file_path = stack if isinstance(stack, os.PathLike) else get_stack_file_path(stack) - try: - with stack_file_path: - stack_config = get_yaml().load(open(stack_file_path, "r")) - return stack_config - except FileNotFoundError as error: - # We try here to generate a useful diagnostic error - # First check if the stack directory is present - stack_directory = stack_file_path.parent - if os.path.exists(stack_directory): - print(f"Error: stack.yml file is missing from stack: {stack}") - else: - print(f"Error: stack: {stack} does not exist") - print(f"Exiting, error: {error}") - sys.exit(1) + if stack_is_external(stack): + stack_file_path = Path(stack).joinpath(stack_file_name) + else: + stack_file_path = get_internal_stack_file_path(stack) + if stack_file_path.exists(): + return get_yaml().load(open(stack_file_path, "r")) + # We try here to generate a useful diagnostic error + # First check if the stack directory is present + if stack_file_path.parent.exists(): + error_exit(f"stack.yml file is missing from stack: {stack}") + error_exit(f"stack {stack} does not exist") def get_pod_list(parsed_stack): @@ -87,7 +84,7 @@ def get_plugin_code_paths(stack) -> List[Path]: result: Set[Path] = set() for pod in pods: if type(pod) is str: - result.add(get_stack_file_path(stack).parent) + result.add(get_internal_stack_file_path(stack).parent) else: pod_root_dir = os.path.join(get_dev_root_path(None), pod["repository"].split("/")[-1], pod["path"]) result.add(Path(os.path.join(pod_root_dir, "stack"))) -- 2.45.2 From 75bed6f10b7b8719c58080e59a4ce25c7a29465b Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Wed, 3 Jul 2024 15:12:27 +0800 Subject: [PATCH 7/8] fix external stack path resolution for deployments --- stack_orchestrator/deploy/deploy.py | 25 +++++++++++------- stack_orchestrator/deploy/deployment.py | 6 ++--- .../deploy/deployment_create.py | 6 ++--- stack_orchestrator/util.py | 26 +++++++++++-------- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/stack_orchestrator/deploy/deploy.py b/stack_orchestrator/deploy/deploy.py index db1611f9..ddbec3d3 100644 --- a/stack_orchestrator/deploy/deploy.py +++ b/stack_orchestrator/deploy/deploy.py @@ -26,8 +26,15 @@ import click from pathlib import Path from stack_orchestrator import constants from stack_orchestrator.opts import opts -from stack_orchestrator.util import include_exclude_check, get_parsed_stack_config, global_options2, get_dev_root_path -from stack_orchestrator.util import resolve_compose_file +from stack_orchestrator.util import ( + get_stack_path, + include_exclude_check, + get_parsed_stack_config, + global_options2, + get_dev_root_path, + stack_is_in_deployment, + resolve_compose_file, +) from stack_orchestrator.deploy.deployer import Deployer, DeployerException from stack_orchestrator.deploy.deployer_factory import getDeployer from stack_orchestrator.deploy.deploy_types import ClusterContext, DeployCommandContext @@ -60,6 +67,7 @@ def command(ctx, include, exclude, env_file, cluster, deploy_to): if deploy_to is None: deploy_to = "compose" + stack = get_stack_path(stack) ctx.obj = create_deploy_context(global_options2(ctx), None, stack, include, exclude, cluster, env_file, deploy_to) # Subcommand is executed now, by the magic of click @@ -77,6 +85,7 @@ def create_deploy_context( if deployment_context and cluster is None: cluster = deployment_context.get_cluster_id() cluster_context = _make_cluster_context(global_context, stack, include, exclude, cluster, env_file) + # breakpoint() deployer = getDeployer(deploy_to, deployment_context, compose_files=cluster_context.compose_files, compose_project_name=cluster_context.cluster, compose_env_file=cluster_context.env_file) @@ -274,16 +283,12 @@ def _make_default_cluster_name(deployment, compose_dir, stack, include, exclude) # stack has to be either PathLike pointing to a stack yml file, or a string with the name of a known stack def _make_cluster_context(ctx, stack, include, exclude, cluster, env_file): - dev_root_path = get_dev_root_path(ctx) - # TODO: huge hack, fix this - # If the caller passed a path for the stack file, then we know that we can get the compose files - # from the same directory - deployment = False - if isinstance(stack, os.PathLike): - compose_dir = stack.parent.joinpath("compose") - deployment = True + # TODO: hack, this should be encapsulated by the deployment context. + deployment = stack_is_in_deployment(stack) + if deployment: + compose_dir = stack.joinpath("compose") else: # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure compose_dir = Path(__file__).absolute().parent.parent.joinpath("data", "compose") diff --git a/stack_orchestrator/deploy/deployment.py b/stack_orchestrator/deploy/deployment.py index db6ad6cc..a7fd8bb2 100644 --- a/stack_orchestrator/deploy/deployment.py +++ b/stack_orchestrator/deploy/deployment.py @@ -50,15 +50,15 @@ def command(ctx, dir): def make_deploy_context(ctx) -> DeployCommandContext: context: DeploymentContext = ctx.obj - stack_file_path = context.get_stack_file() env_file = context.get_env_file() cluster_name = context.get_cluster_id() if constants.deploy_to_key in context.spec.obj: deployment_type = context.spec.obj[constants.deploy_to_key] else: deployment_type = constants.compose_deploy_type - return create_deploy_context(ctx.parent.parent.obj, context, stack_file_path, None, None, cluster_name, env_file, - deployment_type) + stack = context.deployment_dir + return create_deploy_context(ctx.parent.parent.obj, context, stack, None, None, + cluster_name, env_file, deployment_type) @command.command() diff --git a/stack_orchestrator/deploy/deployment_create.py b/stack_orchestrator/deploy/deployment_create.py index ac40b768..5f565854 100644 --- a/stack_orchestrator/deploy/deployment_create.py +++ b/stack_orchestrator/deploy/deployment_create.py @@ -24,7 +24,7 @@ from secrets import token_hex import sys from stack_orchestrator import constants from stack_orchestrator.opts import opts -from stack_orchestrator.util import (get_internal_stack_file_path, get_parsed_deployment_spec, get_parsed_stack_config, +from stack_orchestrator.util import (get_stack_path, get_parsed_deployment_spec, get_parsed_stack_config, global_options, get_yaml, get_pod_list, get_pod_file_path, pod_has_scripts, get_pod_script_paths, get_plugin_code_paths, error_exit, env_var_map_from_file, resolve_config_dir) @@ -459,7 +459,7 @@ def create_operation(deployment_command_context, spec_file, deployment_dir, netw _check_volume_definitions(parsed_spec) stack_name = parsed_spec["stack"] deployment_type = parsed_spec[constants.deploy_to_key] - stack_file = get_internal_stack_file_path(stack_name) + stack_file = get_stack_path(stack_name).joinpath(constants.stack_file_name) parsed_stack = get_parsed_stack_config(stack_name) if opts.o.debug: print(f"parsed spec: {parsed_spec}") @@ -472,7 +472,7 @@ def create_operation(deployment_command_context, spec_file, deployment_dir, netw os.mkdir(deployment_dir_path) # Copy spec file and the stack file into the deployment dir copyfile(spec_file, deployment_dir_path.joinpath(constants.spec_file_name)) - copyfile(stack_file, deployment_dir_path.joinpath(os.path.basename(stack_file))) + copyfile(stack_file, deployment_dir_path.joinpath(constants.stack_file_name)) _create_deployment_file(deployment_dir_path) # Copy any config varibles from the spec file into an env file suitable for compose _write_config_file(spec_file, deployment_dir_path.joinpath(constants.config_file_name)) diff --git a/stack_orchestrator/util.py b/stack_orchestrator/util.py index 3d4054ac..d2dd0425 100644 --- a/stack_orchestrator/util.py +++ b/stack_orchestrator/util.py @@ -20,7 +20,7 @@ import ruamel.yaml from pathlib import Path from dotenv import dotenv_values from typing import Mapping, Set, List -from stack_orchestrator.constants import stack_file_name +from stack_orchestrator.constants import stack_file_name, deployment_file_name def include_exclude_check(s, include, exclude): @@ -34,11 +34,14 @@ def include_exclude_check(s, include, exclude): return s not in exclude_list -def get_internal_stack_file_path(stack): - # In order to be compatible with Python 3.8 we need to use this hack to get the path: - # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure - stack_file_path = Path(__file__).absolute().parent.joinpath("data", "stacks", stack, stack_file_name) - return stack_file_path +def get_stack_path(stack): + if stack_is_external(stack): + stack_path = Path(stack) + else: + # In order to be compatible with Python 3.8 we need to use this hack to get the path: + # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure + stack_path = Path(__file__).absolute().parent.joinpath("data", "stacks", stack) + return stack_path def get_dev_root_path(ctx): @@ -53,10 +56,7 @@ def get_dev_root_path(ctx): # Caller can pass either the name of a stack, or a path to a stack file def get_parsed_stack_config(stack): - if stack_is_external(stack): - stack_file_path = Path(stack).joinpath(stack_file_name) - else: - stack_file_path = get_internal_stack_file_path(stack) + stack_file_path = get_stack_path(stack).joinpath(stack_file_name) if stack_file_path.exists(): return get_yaml().load(open(stack_file_path, "r")) # We try here to generate a useful diagnostic error @@ -84,7 +84,7 @@ def get_plugin_code_paths(stack) -> List[Path]: result: Set[Path] = set() for pod in pods: if type(pod) is str: - result.add(get_internal_stack_file_path(stack).parent) + result.add(get_stack_path(stack)) else: pod_root_dir = os.path.join(get_dev_root_path(None), pod["repository"].split("/")[-1], pod["path"]) result.add(Path(os.path.join(pod_root_dir, "stack"))) @@ -196,6 +196,10 @@ def stack_is_external(stack: str): return Path(stack).exists() if stack is not None else False +def stack_is_in_deployment(stack: Path): + return stack.joinpath(deployment_file_name).exists() + + def get_yaml(): # See: https://stackoverflow.com/a/45701840/1701505 yaml = ruamel.yaml.YAML() -- 2.45.2 From c1f93f211c536aa5056b29f6ddafa01eb7832215 Mon Sep 17 00:00:00 2001 From: Roy Crihfield Date: Tue, 9 Jul 2024 23:08:34 +0800 Subject: [PATCH 8/8] rm comment --- stack_orchestrator/deploy/deploy.py | 1 - 1 file changed, 1 deletion(-) diff --git a/stack_orchestrator/deploy/deploy.py b/stack_orchestrator/deploy/deploy.py index ddbec3d3..deb32d63 100644 --- a/stack_orchestrator/deploy/deploy.py +++ b/stack_orchestrator/deploy/deploy.py @@ -85,7 +85,6 @@ def create_deploy_context( if deployment_context and cluster is None: cluster = deployment_context.get_cluster_id() cluster_context = _make_cluster_context(global_context, stack, include, exclude, cluster, env_file) - # breakpoint() deployer = getDeployer(deploy_to, deployment_context, compose_files=cluster_context.compose_files, compose_project_name=cluster_context.cluster, compose_env_file=cluster_context.env_file) -- 2.45.2