FlexCommand automatic logging with action creation param

This commit is contained in:
Jörn-Michael Miehe 2020-08-18 14:18:54 +02:00
parent c336de4d9c
commit 6976480dd7
7 changed files with 33 additions and 25 deletions

View file

@ -1,5 +1,8 @@
# system
import logging
# local # local
from .utils._misc import get_project_name, get_services, list_projects from .utils.misc import get_project_name, get_services, list_projects
# parent # parent
from ..parser import Parser from ..parser import Parser
@ -71,12 +74,20 @@ class ServiceCommand(ProjectCommand):
class FlexCommand(ServiceCommand): class FlexCommand(ServiceCommand):
"""this command concerns the entire instance, a whole project or just service(s) in a project""" """this command concerns the entire instance, a whole project or just service(s) in a project"""
def __init__(self, name, **kwargs): __action = None
def __init__(self, name, action='', **kwargs):
super().__init__( super().__init__(
name, num_projects='?', num_services='*', name, num_projects='?', num_services='*',
**kwargs **kwargs
) )
if not action:
# default action string
self.__action = f"Running '{str(self)}' for"
else:
self.__action = action
def _run_instance(self, runner, config, args): def _run_instance(self, runner, config, args):
result = True result = True
@ -86,10 +97,10 @@ class FlexCommand(ServiceCommand):
return result return result
def _run_project(self, runner, config, args, project_name): def _run_project(self, runner, config, args):
pass pass
def _run_services(self, runner, config, args, project_name, services): def _run_services(self, runner, config, args, services):
pass pass
def run(self, runner, config, args): def run(self, runner, config, args):
@ -98,11 +109,14 @@ class FlexCommand(ServiceCommand):
if project_name is None: if project_name is None:
# no project given, run for entire instance # no project given, run for entire instance
logging.info(f"{self.__action} this instance")
return self._run_instance(runner, config, args) return self._run_instance(runner, config, args)
if services is None: if not services:
# no services given, run for whole project # no services given, run for whole project
return self._run_project(runner, config, args, project_name) logging.info(f"{self.__action} project '{project_name}'")
return self._run_project(runner, config, args)
# run for service(s) inside project # run for service(s) inside project
return self._run_services(runner, config, args, project_name, services) logging.info(f"{self.__action} services {services} in project '{project_name}'")
return self._run_services(runner, config, args, services)

View file

@ -5,7 +5,7 @@ import subprocess
# local # local
from ._subcommand import SubCommand from ._subcommand import SubCommand
from .utils._misc import list_projects, get_project_dir from .utils.misc import list_projects, get_project_dir
from .utils.rootkit import Rootkit, prefix_path_mnt from .utils.rootkit import Rootkit, prefix_path_mnt
# parent # parent

View file

@ -4,7 +4,7 @@ import logging
# local # local
from ._subcommand import FlexCommand from ._subcommand import FlexCommand
from .utils.dockercommand import DockerCommand from .utils.dockercommand import DockerCommand
from .utils._misc import are_you_sure from .utils.misc import are_you_sure
class DownCommand(FlexCommand): class DownCommand(FlexCommand):
@ -12,7 +12,8 @@ class DownCommand(FlexCommand):
def __init__(self): def __init__(self):
super().__init__( super().__init__(
'down', description="Bring down the whole instance, a project or service(s) inside a project" 'down', "Bringing down",
description="Bring down the whole instance, a project or service(s) inside a project"
) )
def _run_instance(self, runner, config, args): def _run_instance(self, runner, config, args):
@ -21,17 +22,13 @@ class DownCommand(FlexCommand):
return False return False
def _run_project(self, runner, config, args, project_name): def _run_project(self, runner, config, args):
logging.info(f"Bringing down project '{project_name}'")
DockerCommand('docker-compose').run( DockerCommand('docker-compose').run(
config, args, ['down'] config, args, ['down']
) )
return True return True
def _run_services(self, runner, config, args, project_name, services): def _run_services(self, runner, config, args, services):
logging.info(f"Bringing down services {services} in project '{project_name}'")
DockerCommand('docker-compose').run( DockerCommand('docker-compose').run(
config, args, ['stop', *services] config, args, ['stop', *services]
) )

View file

@ -5,7 +5,7 @@ import subprocess
# local # local
from ._subcommand import SubCommand from ._subcommand import SubCommand
from .utils.dockercommand import DockerCommand from .utils.dockercommand import DockerCommand
from .utils._misc import are_you_sure from .utils.misc import are_you_sure
def _find_net(config, args): def _find_net(config, args):

View file

@ -11,20 +11,17 @@ class UpCommand(FlexCommand):
def __init__(self): def __init__(self):
super().__init__( super().__init__(
'up', description="Bring up the whole instance, a project or service(s) inside a project" 'up', "Bringing up",
description="Bring up the whole instance, a project or service(s) inside a project"
) )
def _run_project(self, runner, config, args, project_name): def _run_project(self, runner, config, args):
logging.info(f"Bringing up project '{project_name}'")
DockerCommand('docker-compose').run( DockerCommand('docker-compose').run(
config, args, ['up', '-d'] config, args, ['up', '-d']
) )
return True return True
def _run_services(self, runner, config, args, project_name, services): def _run_services(self, runner, config, args, services):
logging.info(f"Bringing up services {services} in project '{project_name}'")
DockerCommand('docker-compose').run( DockerCommand('docker-compose').run(
config, args, ['up', '-d', *services] config, args, ['up', '-d', *services]
) )

View file

@ -5,7 +5,7 @@ import subprocess
# local # local
from .executable import Executable from .executable import Executable
from ._misc import get_project_dir, get_project_name from .misc import get_project_dir, get_project_name
# parent # parent
from ..._constants import CONF_DIRECTORY_NAME from ..._constants import CONF_DIRECTORY_NAME