From c5ff77424d4404dd6695570c2628278db810446b Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 4 Aug 2020 08:23:51 +0200 Subject: [PATCH] Added a task :harbor:get-container-name --- src/harbor/__init__.py | 2 ++ src/harbor/tasks/service.py | 25 +++++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/harbor/__init__.py b/src/harbor/__init__.py index aa8b9eb..c60183a 100644 --- a/src/harbor/__init__.py +++ b/src/harbor/__init__.py @@ -23,6 +23,7 @@ from .tasks.service import InspectContainerTask from .tasks.service import ExecTask from .tasks.service import ServiceRemoveTask +from .tasks.service import GetContainerNameTask from .tasks.service import ServiceUpTask from .tasks.service import ServiceStopTask from .tasks.service import WaitForServiceTask @@ -63,6 +64,7 @@ def imports(): TaskDeclaration(ServiceStopTask()), TaskDeclaration(WaitForServiceTask()), TaskDeclaration(ServiceRemoveTask()), + TaskDeclaration(GetContainerNameTask()), TaskDeclaration(ExecTask()), TaskDeclaration(LogsTask()), TaskDeclaration(AnalyzeServiceTask()), diff --git a/src/harbor/tasks/service.py b/src/harbor/tasks/service.py index 46ec90e..37989dc 100644 --- a/src/harbor/tasks/service.py +++ b/src/harbor/tasks/service.py @@ -23,7 +23,7 @@ def configure_argparse(self, parser: ArgumentParser): parser.add_argument('name', help='Service name') parser.add_argument('--extra-args', '-c', help='Optional compose arguments', default='') - def prepare_single_for_single_container(self, ctx: ExecutionContext) -> tuple: + def prepare_tuple_for_single_container(self, ctx: ExecutionContext) -> tuple: service_name = ctx.get_arg('--name') service = self.services(ctx).get_by_name(service_name) instance_num = int(ctx.get_arg('--instance-num')) if ctx.get_arg('--instance-num') else None @@ -260,7 +260,7 @@ def run(self, ctx: ExecutionContext) -> bool: tty = bool(ctx.get_arg('--no-tty')) interactive = bool(ctx.get_arg('--no-interactive')) - container_name, service, instance_num = self.prepare_single_for_single_container(ctx) + container_name, service, instance_num = self.prepare_tuple_for_single_container(ctx) if not service: return False @@ -275,6 +275,23 @@ def run(self, ctx: ExecutionContext) -> bool: return True +class GetContainerNameTask(BaseHarborServiceTask): + """Returns a full container name - can be used in scripting""" + + def get_name(self) -> str: + return ":get-container-name" + + def configure_argparse(self, parser: ArgumentParser): + super().configure_argparse(parser) + parser.add_argument('--instance-num', '-i', default=None, help='Instance number. If None, then will pick last.') + + def run(self, ctx: ExecutionContext) -> bool: + container_name, service, instance_num = self.prepare_tuple_for_single_container(ctx) + self.io().out(container_name) + + return True + + class InspectContainerTask(BaseHarborServiceTask): """Inspect a single container""" @@ -286,7 +303,7 @@ def get_name(self) -> str: return ':inspect' def run(self, ctx: ExecutionContext) -> bool: - container_name, service, instance_num = self.prepare_single_for_single_container(ctx) + container_name, service, instance_num = self.prepare_tuple_for_single_container(ctx) if not service: return False @@ -372,7 +389,7 @@ def get_name(self) -> str: return ':logs' def run(self, ctx: ExecutionContext) -> bool: - container_name, service, instance_num = self.prepare_single_for_single_container(ctx) + container_name, service, instance_num = self.prepare_tuple_for_single_container(ctx) buffered = bool(ctx.get_arg('--buffered')) if not service: