1
0
Fork 0
mirror of https://github.com/yavook/kiwi-scp.git synced 2024-11-22 12:53:00 +00:00
kiwi-scp/src/kiwi/subcommands/_hidden.py

107 lines
3 KiB
Python
Raw Normal View History

2020-08-17 14:47:08 +00:00
# system
import logging
import subprocess
# local
2020-08-18 10:28:59 +00:00
from .._constants import CONF_DIRECTORY_NAME
2020-08-20 12:15:38 +00:00
from ..executable import Executable
2020-08-19 15:21:38 +00:00
from ..subcommand import SubCommand
from ..config import LoadedConfig
2020-08-19 15:22:40 +00:00
from ..projects import Projects
2020-08-19 15:15:00 +00:00
from ..rootkit import Rootkit, prefix_path_mnt
2020-08-17 14:47:08 +00:00
class ConfCopyCommand(SubCommand):
"""kiwi conf-copy"""
2020-08-17 14:47:08 +00:00
def __init__(self):
super().__init__(
'conf-copy',
2020-08-20 12:15:38 +00:00
action="Syncing all configs for", add_parser=False,
2020-08-17 14:47:08 +00:00
description="Synchronize all config files to target directory"
)
def _run_instance(self, runner, args):
conf_dirs = [
project.conf_dir_name()
for project in Projects.from_dir().filter_enabled()
]
2020-08-17 14:47:08 +00:00
if conf_dirs:
# add target directory
conf_dirs.append(LoadedConfig.get()['runtime:storage'])
logging.info(f"Sync directories: {conf_dirs}")
2020-08-17 14:47:08 +00:00
Rootkit('rsync').run([
'rsync', '-r', *prefix_path_mnt(conf_dirs)
], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
2020-08-17 14:47:08 +00:00
return True
class ConfPurgeCommand(SubCommand):
"""kiwi conf-purge"""
def __init__(self):
super().__init__(
'conf-purge',
2020-08-20 12:15:38 +00:00
action="Removing all configs for", add_parser=False,
description="Remove all config files in target directory"
)
def _run_instance(self, runner, args):
conf_target = f"{LoadedConfig.get()['runtime:storage']}/{CONF_DIRECTORY_NAME}"
logging.info(f"Purging directories: {conf_target}")
Rootkit().run([
'rm', '-rf', prefix_path_mnt(conf_target)
], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
return True
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
def _find_net(net_name):
ps = Executable('docker').run([
'network', 'ls', '--filter', f"name={net_name}", '--format', '{{.Name}}'
], stdout=subprocess.PIPE)
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
net_found = str(ps.stdout, 'utf-8').strip()
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
return net_found == net_name
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
class NetUpCommand(SubCommand):
"""kiwi net-up"""
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
def __init__(self):
super().__init__(
'net-up',
action="Creating the local network hub for", add_parser=False,
description="Create the local network hub for this instance"
)
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
def _run_instance(self, runner, args):
config = LoadedConfig.get()
net_name = config['network:name']
net_cidr = config['network:cidr']
if _find_net(net_name):
logging.info(f"Network '{net_name}' already exists")
return True
try:
Executable('docker').run([
'network', 'create',
'--driver', 'bridge',
'--internal',
'--subnet', net_cidr,
net_name
], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
logging.info(f"Network '{net_name}' created")
except subprocess.CalledProcessError:
logging.error(f"Error creating network '{net_name}'")
return False
2020-08-18 15:49:49 +00:00
2020-08-20 12:15:38 +00:00
return True