diff --git a/.gitignore b/.gitignore index 0e253ae4..35a9c9ec 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ __pycache__ *~ package app/data/build_tag.txt -build +/build diff --git a/app/base.py b/app/base.py index cc20da1b..ba3504ba 100644 --- a/app/base.py +++ b/app/base.py @@ -15,7 +15,7 @@ import os from abc import ABC, abstractmethod -from app.deploy import get_stack_status +from app.deploy.deploy import get_stack_status from decouple import config diff --git a/app/build/__init__.py b/app/build/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/build_containers.py b/app/build/build_containers.py similarity index 98% rename from app/build_containers.py rename to app/build/build_containers.py index 0187bb5e..ee74b807 100644 --- a/app/build_containers.py +++ b/app/build/build_containers.py @@ -52,7 +52,7 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args): continue_on_error = ctx.obj.continue_on_error # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure - container_build_dir = Path(__file__).absolute().parent.joinpath("data", "container-build") + container_build_dir = Path(__file__).absolute().parent.parent.joinpath("data", "container-build") if local_stack: dev_root_path = os.getcwd()[0:os.getcwd().rindex("stack-orchestrator")] diff --git a/app/build_npms.py b/app/build/build_npms.py similarity index 100% rename from app/build_npms.py rename to app/build/build_npms.py diff --git a/app/data/stacks/mainnet-laconic/deploy/commands.py b/app/data/stacks/mainnet-laconic/deploy/commands.py index 3a62b42d..030200f1 100644 --- a/app/data/stacks/mainnet-laconic/deploy/commands.py +++ b/app/data/stacks/mainnet-laconic/deploy/commands.py @@ -14,9 +14,9 @@ # along with this program. If not, see . from app.util import get_yaml -from app.deploy_types import DeployCommandContext, LaconicStackSetupCommand, DeploymentContext -from app.stack_state import State -from app.deploy_util import VolumeMapping, run_container_command +from app.deploy.deploy_types import DeployCommandContext, LaconicStackSetupCommand, DeploymentContext +from app.deploy.stack_state import State +from app.deploy.deploy_util import VolumeMapping, run_container_command from app.command_types import CommandOptions from enum import Enum from pathlib import Path diff --git a/app/data/stacks/test/deploy/commands.py b/app/data/stacks/test/deploy/commands.py index fbb9a8ea..2eebeea2 100644 --- a/app/data/stacks/test/deploy/commands.py +++ b/app/data/stacks/test/deploy/commands.py @@ -14,9 +14,9 @@ # along with this program. If not, see . from app.util import get_yaml -from app.deploy_types import DeployCommandContext -from app.stack_state import State -from app.deploy_util import VolumeMapping, run_container_command +from app.deploy.deploy_types import DeployCommandContext +from app.deploy.stack_state import State +from app.deploy.deploy_util import VolumeMapping, run_container_command from pathlib import Path default_spec_file_content = """config: diff --git a/app/deploy/__init__.py b/app/deploy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/deploy/compose/__init__.py b/app/deploy/compose/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/deploy_docker.py b/app/deploy/compose/deploy_docker.py similarity index 97% rename from app/deploy_docker.py rename to app/deploy/compose/deploy_docker.py index 5b20d46c..03306346 100644 --- a/app/deploy_docker.py +++ b/app/deploy/compose/deploy_docker.py @@ -14,7 +14,7 @@ # along with this program. If not, see . from python_on_whales import DockerClient, DockerException -from app.deployer import Deployer, DeployerException +from app.deploy.deployer import Deployer, DeployerException class DockerDeployer(Deployer): diff --git a/app/deploy.py b/app/deploy/deploy.py similarity index 92% rename from app/deploy.py rename to app/deploy/deploy.py index 75859f59..40cd0a8d 100644 --- a/app/deploy.py +++ b/app/deploy/deploy.py @@ -25,12 +25,12 @@ import subprocess import click from pathlib import Path from app.util import include_exclude_check, get_parsed_stack_config, global_options2, get_dev_root_path -from app.deployer import Deployer, DeployerException -from app.deployer_factory import getDeployer -from app.deploy_types import ClusterContext, DeployCommandContext -from app.deployment_create import create as deployment_create -from app.deployment_create import init as deployment_init -from app.deployment_create import setup as deployment_setup +from app.deploy.deployer import Deployer, DeployerException +from app.deploy.deployer_factory import getDeployer +from app.deploy.deploy_types import ClusterContext, DeployCommandContext +from app.deploy.deployment_create import create as deployment_create +from app.deploy.deployment_create import init as deployment_init +from app.deploy.deployment_create import setup as deployment_setup @click.group() @@ -258,7 +258,7 @@ def _make_cluster_context(ctx, stack, include, exclude, cluster, env_file): deployment = True else: # See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure - compose_dir = Path(__file__).absolute().parent.joinpath("data", "compose") + compose_dir = Path(__file__).absolute().parent.parent.joinpath("data", "compose") if cluster is None: # Create default unique, stable cluster name from confile file path and stack name if provided @@ -397,11 +397,11 @@ def _orchestrate_cluster_config(ctx, cluster_config, deployer, container_exec_en source_value = None try: source_value = deployer.execute(pd.source_container, - ["sh", "-c", - "sh /docker-entrypoint-scripts.d/export-" - f"{pd.source_variable}.sh"], - tty=False, - envs=container_exec_env) + ["sh", "-c", + "sh /docker-entrypoint-scripts.d/export-" + f"{pd.source_variable}.sh"], + tty=False, + envs=container_exec_env) except DeployerException as error: if ctx.debug: print(f"Docker exception reading config source: {error}") @@ -418,11 +418,11 @@ def _orchestrate_cluster_config(ctx, cluster_config, deployer, container_exec_en if ctx.debug: print(f"fetched source value: {source_value}") destination_output = deployer.execute(pd.destination_container, - ["sh", "-c", - f"sh /scripts/import-{pd.destination_variable}.sh" - f" {source_value}"], - tty=False, - envs=container_exec_env) + ["sh", "-c", + f"sh /scripts/import-{pd.destination_variable}.sh" + f" {source_value}"], + tty=False, + envs=container_exec_env) waiting_for_data = False if ctx.debug: print(f"destination output: {destination_output}") diff --git a/app/deploy_types.py b/app/deploy/deploy_types.py similarity index 97% rename from app/deploy_types.py rename to app/deploy/deploy_types.py index ecc0d5a3..16b5c313 100644 --- a/app/deploy_types.py +++ b/app/deploy/deploy_types.py @@ -17,7 +17,7 @@ from typing import List from dataclasses import dataclass from pathlib import Path from app.command_types import CommandOptions -from app.deployer import Deployer +from app.deploy.deployer import Deployer @dataclass diff --git a/app/deploy_util.py b/app/deploy/deploy_util.py similarity index 97% rename from app/deploy_util.py rename to app/deploy/deploy_util.py index b492d6e1..4a1ffbfe 100644 --- a/app/deploy_util.py +++ b/app/deploy/deploy_util.py @@ -15,7 +15,7 @@ import os from typing import List -from app.deploy_types import DeployCommandContext, VolumeMapping +from app.deploy.deploy_types import DeployCommandContext, VolumeMapping from app.util import get_parsed_stack_config, get_yaml, get_compose_file_dir, get_pod_list diff --git a/app/deployer.py b/app/deploy/deployer.py similarity index 100% rename from app/deployer.py rename to app/deploy/deployer.py diff --git a/app/deployer_factory.py b/app/deploy/deployer_factory.py similarity index 90% rename from app/deployer_factory.py rename to app/deploy/deployer_factory.py index 45c54ecd..de89b72c 100644 --- a/app/deployer_factory.py +++ b/app/deploy/deployer_factory.py @@ -13,8 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from app.deploy_k8s import K8sDeployer -from app.deploy_docker import DockerDeployer +from app.deploy.k8s.deploy_k8s import K8sDeployer +from app.deploy.compose.deploy_docker import DockerDeployer def getDeployer(type, compose_files, compose_project_name, compose_env_file): diff --git a/app/deployment.py b/app/deploy/deployment.py similarity index 95% rename from app/deployment.py rename to app/deploy/deployment.py index 36cdecac..b1b4a486 100644 --- a/app/deployment.py +++ b/app/deploy/deployment.py @@ -16,10 +16,10 @@ import click from pathlib import Path import sys -from app.deploy import up_operation, down_operation, ps_operation, port_operation -from app.deploy import exec_operation, logs_operation, create_deploy_context -from app.stack import Stack -from app.spec import Spec +from app.deploy.deploy import up_operation, down_operation, ps_operation, port_operation +from app.deploy.deploy import exec_operation, logs_operation, create_deploy_context +from app.deploy.stack import Stack +from app.deploy.spec import Spec class DeploymentContext: diff --git a/app/deployment_create.py b/app/deploy/deployment_create.py similarity index 99% rename from app/deployment_create.py rename to app/deploy/deployment_create.py index 81259795..dcaccb2b 100644 --- a/app/deployment_create.py +++ b/app/deploy/deployment_create.py @@ -23,7 +23,7 @@ from shutil import copy, copyfile, copytree import sys from app.util import (get_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_path) -from app.deploy_types import DeploymentContext, DeployCommandContext, LaconicStackSetupCommand +from app.deploy.deploy_types import DeploymentContext, DeployCommandContext, LaconicStackSetupCommand def _make_default_deployment_dir(): @@ -325,7 +325,7 @@ def create(ctx, spec_file, deployment_dir, network_dir, initial_peers): os.mkdir(destination_compose_dir) destination_pods_dir = os.path.join(deployment_dir, "pods") os.mkdir(destination_pods_dir) - data_dir = Path(__file__).absolute().parent.joinpath("data") + data_dir = Path(__file__).absolute().parent.parent.joinpath("data") yaml = get_yaml() for pod in pods: pod_file_path = get_pod_file_path(parsed_stack, pod) diff --git a/app/deploy/k8s/__init__.py b/app/deploy/k8s/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/deploy_k8s.py b/app/deploy/k8s/deploy_k8s.py similarity index 97% rename from app/deploy_k8s.py rename to app/deploy/k8s/deploy_k8s.py index c6a3e03e..7cf0261d 100644 --- a/app/deploy_k8s.py +++ b/app/deploy/k8s/deploy_k8s.py @@ -14,7 +14,7 @@ # along with this program. If not, see . from kubernetes import client, config -from app.deployer import Deployer +from app.deploy.deployer import Deployer class K8sDeployer(Deployer): diff --git a/app/spec.py b/app/deploy/spec.py similarity index 100% rename from app/spec.py rename to app/deploy/spec.py diff --git a/app/stack.py b/app/deploy/stack.py similarity index 100% rename from app/stack.py rename to app/deploy/stack.py diff --git a/app/stack_state.py b/app/deploy/stack_state.py similarity index 100% rename from app/stack_state.py rename to app/deploy/stack_state.py diff --git a/app/repos/__init__.py b/app/repos/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/app/setup_repositories.py b/app/repos/setup_repositories.py similarity index 98% rename from app/setup_repositories.py rename to app/repos/setup_repositories.py index c14dccb4..0ce11670 100644 --- a/app/setup_repositories.py +++ b/app/repos/setup_repositories.py @@ -240,7 +240,7 @@ def command(ctx, include, exclude, git_ssh, check_only, pull, branches, branches if 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.parent.joinpath("data", "stacks", stack, "stack.yml") with stack_file_path: stack_config = yaml.safe_load(open(stack_file_path, "r")) # TODO: syntax check the input here diff --git a/cli.py b/cli.py index 63823715..5dea43ca 100644 --- a/cli.py +++ b/cli.py @@ -16,12 +16,12 @@ import click from app.command_types import CommandOptions -from app import setup_repositories -from app import build_containers -from app import build_npms -from app import deploy +from app.repos import setup_repositories +from app.build import build_containers +from app.build import build_npms +from app.deploy import deploy from app import version -from app import deployment +from app.deploy import deployment from app import update CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])