mirror of
https://github.com/yavook/kiwi-scp.git
synced 2024-11-22 12:53:00 +00:00
"copy-conf" -> "conf-copy", subcommand "conf-purge", constants centralization
This commit is contained in:
parent
366ed9b4fe
commit
5b489d0392
6 changed files with 72 additions and 38 deletions
|
@ -1,7 +1,33 @@
|
||||||
# system
|
# system
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
#############
|
||||||
|
# ENVIRONMENT
|
||||||
|
|
||||||
# location of "src" directory to use
|
# location of "src" directory to use
|
||||||
KIWI_ROOT = os.getenv('KIWI_ROOT', ".")
|
KIWI_ROOT = os.getenv('KIWI_ROOT', ".")
|
||||||
# default name of kiwi-config file
|
# default name of kiwi-config file
|
||||||
KIWI_CONF_NAME = os.getenv('KIWI_CONF_NAME', "kiwi.yml")
|
KIWI_CONF_NAME = os.getenv('KIWI_CONF_NAME', "kiwi.yml")
|
||||||
|
|
||||||
|
|
||||||
|
############
|
||||||
|
# FILE NAMES
|
||||||
|
|
||||||
|
# text files inside kiwi-config "src" directory
|
||||||
|
HEADER_KIWI_CONF_NAME = f"{KIWI_ROOT}/kiwi_header.yml"
|
||||||
|
DEFAULT_KIWI_CONF_NAME = f"{KIWI_ROOT}/kiwi_default.yml"
|
||||||
|
VERSION_TAG_NAME = f"{KIWI_ROOT}/version-tag"
|
||||||
|
|
||||||
|
# special config directory in projects
|
||||||
|
CONF_DIRECTORY_NAME = 'conf'
|
||||||
|
# location for auxiliary Dockerfiles
|
||||||
|
IMAGES_DIRECTORY_NAME = f"{KIWI_ROOT}/images"
|
||||||
|
|
||||||
|
|
||||||
|
####################
|
||||||
|
# DOCKER IMAGE NAMES
|
||||||
|
|
||||||
|
# name for auxiliary docker images
|
||||||
|
LOCAL_IMAGES_NAME = 'localhost/kiwi-config/auxiliary'
|
||||||
|
DEFAULT_IMAGE_NAME = 'alpine:latest'
|
||||||
|
|
|
@ -6,15 +6,7 @@ import re
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
# local
|
# local
|
||||||
from ._constants import KIWI_ROOT, KIWI_CONF_NAME
|
from ._constants import KIWI_CONF_NAME, HEADER_KIWI_CONF_NAME, DEFAULT_KIWI_CONF_NAME, VERSION_TAG_NAME
|
||||||
|
|
||||||
###########
|
|
||||||
# CONSTANTS
|
|
||||||
|
|
||||||
# text files inside kiwi-config "src" directory
|
|
||||||
HEADER_KIWI_CONF_NAME = f"{KIWI_ROOT}/kiwi_header.yml"
|
|
||||||
DEFAULT_KIWI_CONF_NAME = f"{KIWI_ROOT}/kiwi_default.yml"
|
|
||||||
VERSION_TAG_NAME = f"{KIWI_ROOT}/version-tag"
|
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# local
|
# local
|
||||||
from .cmd import CmdCommand
|
from .cmd import CmdCommand
|
||||||
from .copy_conf import CopyConfCommand
|
from .conf import ConfCopyCommand, ConfPurgeCommand
|
||||||
from .down import DownCommand
|
from .down import DownCommand
|
||||||
from .init import InitCommand
|
from .init import InitCommand
|
||||||
from .logs import LogsCommand
|
from .logs import LogsCommand
|
||||||
|
@ -11,7 +11,8 @@ from .up import UpCommand
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'CmdCommand',
|
'CmdCommand',
|
||||||
'CopyConfCommand',
|
'ConfCopyCommand',
|
||||||
|
'ConfPurgeCommand',
|
||||||
'DownCommand',
|
'DownCommand',
|
||||||
'InitCommand',
|
'InitCommand',
|
||||||
'LogsCommand',
|
'LogsCommand',
|
||||||
|
|
|
@ -4,26 +4,20 @@ import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
# parent
|
# parent
|
||||||
from .._constants import KIWI_ROOT
|
from .._constants import CONF_DIRECTORY_NAME
|
||||||
|
|
||||||
# local
|
# local
|
||||||
from ._subcommand import SubCommand
|
from ._subcommand import SubCommand
|
||||||
from .utils.dockercommand import DockerCommand
|
|
||||||
from .utils.project import list_projects, get_project_dir
|
from .utils.project import list_projects, get_project_dir
|
||||||
from .utils.rootkit import Rootkit, prefix_path
|
from .utils.rootkit import Rootkit, _prefix_path_mnt
|
||||||
|
|
||||||
|
|
||||||
def _add_prefix(prefix, path):
|
class ConfCopyCommand(SubCommand):
|
||||||
abs_path = os.path.abspath(path)
|
"""kiwi conf-copy"""
|
||||||
return os.path.realpath(prefix + '/' + abs_path)
|
|
||||||
|
|
||||||
|
|
||||||
class CopyConfCommand(SubCommand):
|
|
||||||
"""kiwi copy-conf"""
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
'copy-conf',
|
'conf-copy',
|
||||||
description="Synchronize all config files to target directory"
|
description="Synchronize all config files to target directory"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,7 +25,7 @@ class CopyConfCommand(SubCommand):
|
||||||
conf_dirs = []
|
conf_dirs = []
|
||||||
|
|
||||||
for project_name in list_projects(config):
|
for project_name in list_projects(config):
|
||||||
project_conf = f"{get_project_dir(config, project_name)}/conf"
|
project_conf = f"{get_project_dir(config, project_name)}/{CONF_DIRECTORY_NAME}"
|
||||||
|
|
||||||
if os.path.isdir(project_conf):
|
if os.path.isdir(project_conf):
|
||||||
conf_dirs.append(project_conf)
|
conf_dirs.append(project_conf)
|
||||||
|
@ -42,7 +36,28 @@ class CopyConfCommand(SubCommand):
|
||||||
logging.info(f"Sync directories: {conf_dirs}")
|
logging.info(f"Sync directories: {conf_dirs}")
|
||||||
|
|
||||||
Rootkit('rsync').run(
|
Rootkit('rsync').run(
|
||||||
config, args, ['rsync', '-r', *prefix_path(conf_dirs)],
|
config, args, ['rsync', '-r', *_prefix_path_mnt(conf_dirs)],
|
||||||
|
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||||
|
)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
class ConfPurgeCommand(SubCommand):
|
||||||
|
"""kiwi conf-purge"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(
|
||||||
|
'conf-purge',
|
||||||
|
description="Remove all config files in target directory"
|
||||||
|
)
|
||||||
|
|
||||||
|
def run(self, runner, config, args):
|
||||||
|
conf_target = f"{config['runtime:storage']}/{CONF_DIRECTORY_NAME}"
|
||||||
|
logging.info(f"Purging directories: {conf_target}")
|
||||||
|
|
||||||
|
Rootkit().run(
|
||||||
|
config, args, ['rm', '-rf', _prefix_path_mnt(conf_target)],
|
||||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
# system
|
# system
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
# local
|
# local
|
||||||
|
from ..._constants import CONF_DIRECTORY_NAME
|
||||||
from .executable import Executable
|
from .executable import Executable
|
||||||
from .project import *
|
from .project import *
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ def _update_kwargs(config, args, **kwargs):
|
||||||
kwargs['env'].update({
|
kwargs['env'].update({
|
||||||
'COMPOSE_PROJECT_NAME': project_name,
|
'COMPOSE_PROJECT_NAME': project_name,
|
||||||
'KIWI_HUB_NAME': config['network:name'],
|
'KIWI_HUB_NAME': config['network:name'],
|
||||||
'CONFDIR': os.path.join(config['runtime:storage'], 'conf'),
|
'CONFDIR': os.path.join(config['runtime:storage'], CONF_DIRECTORY_NAME),
|
||||||
'TARGETDIR': os.path.join(config['runtime:storage'], get_project_dir(config, project_name))
|
'TARGETDIR': os.path.join(config['runtime:storage'], get_project_dir(config, project_name))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,29 +4,29 @@ import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
# parent
|
# parent
|
||||||
from ..._constants import KIWI_ROOT
|
from ..._constants import IMAGES_DIRECTORY_NAME, LOCAL_IMAGES_NAME, DEFAULT_IMAGE_NAME
|
||||||
|
|
||||||
# local
|
# local
|
||||||
from .dockercommand import DockerCommand
|
from .dockercommand import DockerCommand
|
||||||
|
|
||||||
|
|
||||||
def _prefix_path(prefix, path):
|
def _prefix_path(prefix, path):
|
||||||
abs_path = os.path.abspath(path)
|
|
||||||
return os.path.realpath(prefix + '/' + abs_path)
|
|
||||||
|
|
||||||
|
|
||||||
def prefix_path(path):
|
|
||||||
if isinstance(path, str):
|
if isinstance(path, str):
|
||||||
return _prefix_path('/mnt/', path)
|
abs_path = os.path.abspath(path)
|
||||||
|
return os.path.realpath(f"{prefix}/{abs_path}")
|
||||||
elif isinstance(path, list):
|
elif isinstance(path, list):
|
||||||
return [_prefix_path('/mnt/', p) for p in path]
|
return [_prefix_path(prefix, p) for p in path]
|
||||||
|
|
||||||
|
|
||||||
|
def _prefix_path_mnt(path):
|
||||||
|
return _prefix_path('/mnt/', path)
|
||||||
|
|
||||||
|
|
||||||
def _image_name(image_tag):
|
def _image_name(image_tag):
|
||||||
if image_tag is not None:
|
if image_tag is not None:
|
||||||
return f"kiwi-config/auxiliary:{image_tag}"
|
return f"{LOCAL_IMAGES_NAME}:{image_tag}"
|
||||||
else:
|
else:
|
||||||
return "alpine:latest"
|
return DEFAULT_IMAGE_NAME
|
||||||
|
|
||||||
|
|
||||||
class Rootkit:
|
class Rootkit:
|
||||||
|
@ -66,8 +66,8 @@ class Rootkit:
|
||||||
[
|
[
|
||||||
'build',
|
'build',
|
||||||
'-t', _image_name(self.__image_tag),
|
'-t', _image_name(self.__image_tag),
|
||||||
'-f', f"{KIWI_ROOT}/images/{self.__image_tag}.Dockerfile",
|
'-f', f"{IMAGES_DIRECTORY_NAME}/{self.__image_tag}.Dockerfile",
|
||||||
f"{KIWI_ROOT}/images"
|
f"{IMAGES_DIRECTORY_NAME}"
|
||||||
],
|
],
|
||||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue