subcommands "new", "enable", "disable"

This commit is contained in:
Jörn-Michael Miehe 2020-08-18 15:56:58 +02:00
parent 3014e7057c
commit 1a98137c71
6 changed files with 141 additions and 0 deletions

View file

@ -0,0 +1,19 @@
version: "2"
networks:
# reachable from outside
default:
driver: bridge
# interconnects projects
kiwi_hub:
external:
name: $KIWI_HUB_NAME
services:
something:
image: maintainer/repo:tag
restart: unless-stopped
networks:
- default
- kiwi_hub
[...]

View file

@ -18,6 +18,7 @@ KIWI_CONF_NAME = os.getenv('KIWI_CONF_NAME', "kiwi.yml")
HEADER_KIWI_CONF_NAME = f"{KIWI_ROOT}/etc/kiwi_header.yml"
DEFAULT_KIWI_CONF_NAME = f"{KIWI_ROOT}/etc/kiwi_default.yml"
VERSION_TAG_NAME = f"{KIWI_ROOT}/etc/version_tag"
DEFAULT_DOCKER_COMPOSE_NAME = f"{KIWI_ROOT}/etc/docker-compose_default.yml"
# special config directory in projects
CONF_DIRECTORY_NAME = 'conf'

View file

@ -2,10 +2,13 @@
from .build import BuildCommand
from .cmd import CmdCommand
from .conf import ConfCopyCommand, ConfPurgeCommand
from .disable import DisableCommand
from .down import DownCommand
from .enable import EnableCommand
from .init import InitCommand
from .logs import LogsCommand
from .net import NetUpCommand, NetDownCommand
from .new import NewCommand
from .pull import PullCommand
from .push import PushCommand
from .sh import ShCommand
@ -18,11 +21,14 @@ __all__ = [
'CmdCommand',
'ConfCopyCommand',
'ConfPurgeCommand',
'DisableCommand',
'DownCommand',
'EnableCommand',
'InitCommand',
'LogsCommand',
'NetUpCommand',
'NetDownCommand',
'NewCommand',
'PullCommand',
'PushCommand',
'ShCommand',

View file

@ -0,0 +1,38 @@
# system
import logging
import os
# local
from .utils.misc import get_project_names, get_project_dir, get_project_down_dir
from ._subcommand import ProjectCommand
class DisableCommand(ProjectCommand):
"""kiwi disable"""
def __init__(self):
super().__init__(
'disable', num_projects='+',
description="Disable whole project(s) in this instance"
)
def run(self, runner, config, args):
result = True
for project_name in get_project_names(args):
project_dir = get_project_dir(config, project_name)
project_down_dir = get_project_down_dir(config, project_name)
if os.path.isdir(project_dir):
logging.info(f"Disabling project '{project_name}'")
os.rename(project_dir, project_down_dir)
elif os.path.isdir(project_down_dir):
logging.warning(f"Project '{project_name}' is already disabled!")
result = False
else:
logging.warning(f"Project '{project_name}' not found in instance!")
result = False
return result

View file

@ -0,0 +1,38 @@
# system
import logging
import os
# local
from .utils.misc import get_project_names, get_project_dir, get_project_down_dir
from ._subcommand import ProjectCommand
class EnableCommand(ProjectCommand):
"""kiwi enable"""
def __init__(self):
super().__init__(
'enable', num_projects='+',
description="Enable whole project(s) in this instance"
)
def run(self, runner, config, args):
result = True
for project_name in get_project_names(args):
project_dir = get_project_dir(config, project_name)
project_down_dir = get_project_down_dir(config, project_name)
if os.path.isdir(project_down_dir):
logging.info(f"Enabling project '{project_name}'")
os.rename(project_down_dir, project_dir)
elif os.path.isdir(project_dir):
logging.warning(f"Project '{project_name}' is already enabled!")
result = False
else:
logging.warning(f"Project '{project_name}' not found in instance!")
result = False
return result

View file

@ -0,0 +1,39 @@
# system
import logging
import os
import shutil
# local
from .utils.misc import get_project_names, get_project_dir, get_project_down_dir
from ._subcommand import ProjectCommand
# parent
from .._constants import DEFAULT_DOCKER_COMPOSE_NAME
class NewCommand(ProjectCommand):
"""kiwi new"""
def __init__(self):
super().__init__(
'new', num_projects='+',
description="Create new empty project(s) in this instance"
)
def run(self, runner, config, args):
result = True
for project_name in get_project_names(args):
project_dir = get_project_dir(config, project_name)
project_down_dir = get_project_down_dir(config, project_name)
if os.path.isdir(project_dir) or os.path.isdir(project_down_dir):
logging.error(f"Project '{project_name}' exists in this instance!")
result = False
else:
logging.info(f"Creating project '{project_name}'")
os.mkdir(project_dir)
shutil.copy(DEFAULT_DOCKER_COMPOSE_NAME, os.path.join(project_dir, "docker-compose.yml"))
return result