mirror of
https://github.com/yavook/kiwi-scp.git
synced 2024-11-22 12:53:00 +00:00
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
# system
|
|
import logging
|
|
import subprocess
|
|
|
|
# local
|
|
from ..config import LoadedConfig
|
|
from ..executable import Executable
|
|
from ..subcommand import SubCommand
|
|
|
|
|
|
def _find_net(net_name):
|
|
ps = Executable('docker').run([
|
|
'network', 'ls', '--filter', f"name={net_name}", '--format', '{{.Name}}'
|
|
], stdout=subprocess.PIPE)
|
|
|
|
net_found = str(ps.stdout, 'utf-8').strip()
|
|
|
|
return net_found == net_name
|
|
|
|
|
|
class NetUpCommand(SubCommand):
|
|
"""kiwi net-up"""
|
|
|
|
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"
|
|
)
|
|
|
|
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
|
|
|
|
return True
|