From 1785504541c44d29934b4a6dea34e48894ac1aff Mon Sep 17 00:00:00 2001 From: praveenraghav01 Date: Thu, 2 Mar 2023 14:49:45 +0530 Subject: [PATCH 1/4] support for partial deploy --- cloudlift/__init__.py | 5 +++-- cloudlift/deployment/service_updater.py | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cloudlift/__init__.py b/cloudlift/__init__.py index 3c7e4adf..8c408086 100644 --- a/cloudlift/__init__.py +++ b/cloudlift/__init__.py @@ -113,8 +113,9 @@ def edit_config(name, environment): @click.option("--build-arg", type=(str, str), multiple=True, help="These args are passed to docker build command " "as --build-args. Supports multiple.\ Please leave space between name and value" ) -def deploy_service(name, environment, version, build_arg): - ServiceUpdater(name, environment, None, version, dict(build_arg)).run() +@click.option('--component', help='nested service name') +def deploy_service(name, environment, version, build_arg, component): + ServiceUpdater(name, environment, None, version, dict(build_arg)).run(component) @cli.command() diff --git a/cloudlift/deployment/service_updater.py b/cloudlift/deployment/service_updater.py index c8e626d0..453e28c3 100644 --- a/cloudlift/deployment/service_updater.py +++ b/cloudlift/deployment/service_updater.py @@ -37,9 +37,11 @@ def __init__(self, name, environment, env_sample_file, version=None, self.working_dir = working_dir self.build_args = build_args - def run(self): + def run(self, component=None): log_warning("Deploying to {self.region}".format(**locals())) self.init_stack_info() + if component is not None and self.ecs_service_names == component: + self.ecs_service_names = [component] if not os.path.exists(self.env_sample_file): raise UnrecoverableException('env.sample not found. Exiting.') ecr_client = EcrClient(self.name, self.region, self.build_args) From 044f9caca2908a3d3f88028068babd4fcc243df7 Mon Sep 17 00:00:00 2001 From: praveenraghav01 Date: Thu, 9 Mar 2023 17:13:53 +0530 Subject: [PATCH 2/4] added error handling --- cloudlift/deployment/service_updater.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cloudlift/deployment/service_updater.py b/cloudlift/deployment/service_updater.py index 453e28c3..ef471f82 100644 --- a/cloudlift/deployment/service_updater.py +++ b/cloudlift/deployment/service_updater.py @@ -40,8 +40,15 @@ def __init__(self, name, environment, env_sample_file, version=None, def run(self, component=None): log_warning("Deploying to {self.region}".format(**locals())) self.init_stack_info() - if component is not None and self.ecs_service_names == component: - self.ecs_service_names = [component] + if component is not None: + found = False + for service_name in self.ecs_service_names: + if component in service_name: + self.ecs_service_names = [service_name] + found = True + break + if not found: + raise UnrecoverableException("Component {component} not found in service {self.name}".format(**locals())) if not os.path.exists(self.env_sample_file): raise UnrecoverableException('env.sample not found. Exiting.') ecr_client = EcrClient(self.name, self.region, self.build_args) From 44d5f42a9fef6111c891d969cd9c5a30d91b99ab Mon Sep 17 00:00:00 2001 From: praveenraghav01 Date: Mon, 15 May 2023 15:41:19 +0530 Subject: [PATCH 3/4] added support for multiple values --- cloudlift/__init__.py | 4 ++-- cloudlift/deployment/service_updater.py | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cloudlift/__init__.py b/cloudlift/__init__.py index 8c408086..e4c2b6ab 100644 --- a/cloudlift/__init__.py +++ b/cloudlift/__init__.py @@ -113,9 +113,9 @@ def edit_config(name, environment): @click.option("--build-arg", type=(str, str), multiple=True, help="These args are passed to docker build command " "as --build-args. Supports multiple.\ Please leave space between name and value" ) -@click.option('--component', help='nested service name') +@click.option('--component', help='nested service name', multiple=True) def deploy_service(name, environment, version, build_arg, component): - ServiceUpdater(name, environment, None, version, dict(build_arg)).run(component) + ServiceUpdater(name, environment, None, version, dict(build_arg)).run(list(component)) @cli.command() diff --git a/cloudlift/deployment/service_updater.py b/cloudlift/deployment/service_updater.py index ef471f82..9c85c3ba 100644 --- a/cloudlift/deployment/service_updater.py +++ b/cloudlift/deployment/service_updater.py @@ -41,14 +41,11 @@ def run(self, component=None): log_warning("Deploying to {self.region}".format(**locals())) self.init_stack_info() if component is not None: - found = False - for service_name in self.ecs_service_names: - if component in service_name: - self.ecs_service_names = [service_name] - found = True - break + found = [str for str in self.ecs_service_names if any(sub in str for sub in component)] if not found: raise UnrecoverableException("Component {component} not found in service {self.name}".format(**locals())) + elif len(found) != 0 and len(found) != len(component): + log_warning("Few Component {found} found in service {self.name}".format(**locals())) if not os.path.exists(self.env_sample_file): raise UnrecoverableException('env.sample not found. Exiting.') ecr_client = EcrClient(self.name, self.region, self.build_args) From d6c3f2837f2d84c127c50b714c4f805a89041e1f Mon Sep 17 00:00:00 2001 From: praveenraghav01 Date: Mon, 15 May 2023 15:51:51 +0530 Subject: [PATCH 4/4] added support for multi value --- cloudlift/deployment/service_updater.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudlift/deployment/service_updater.py b/cloudlift/deployment/service_updater.py index 9c85c3ba..3ceeee58 100644 --- a/cloudlift/deployment/service_updater.py +++ b/cloudlift/deployment/service_updater.py @@ -42,6 +42,7 @@ def run(self, component=None): self.init_stack_info() if component is not None: found = [str for str in self.ecs_service_names if any(sub in str for sub in component)] + self.ecs_service_names = found if not found: raise UnrecoverableException("Component {component} not found in service {self.name}".format(**locals())) elif len(found) != 0 and len(found) != len(component):