IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
瀏覽代碼

Added focker jail {start, stop, remove, exec}

tags/0.92
父節點
當前提交
499ac39743
共有 2 個檔案被更改,包括 52 行新增1 行删除
  1. +22
    -0
      focker.py
  2. +30
    -1
      jail.py

+ 22
- 0
focker.py 查看文件

@@ -1,4 +1,5 @@
from argparse import ArgumentParser
import argparse
import yaml
import os
# from weir import zfs, process
@@ -16,6 +17,10 @@ from .volume import command_volume_create, \
import sys
from .zfs import zfs_init
from .jail import command_jail_create, \
command_jail_start, \
command_jail_stop, \
command_jail_remove, \
command_jail_exec, \
command_jail_run, \
command_jail_list, \
command_jail_tag, \
@@ -67,6 +72,23 @@ def create_parser():
parser.add_argument('--mounts', '-m', type=str, nargs='+', default=[])
parser.add_argument('--hostname', '-n', type=str)
parser = subparsers.add_parser('start')
parser.set_defaults(func=command_jail_start)
parser.add_argument('reference', type=str)
parser = subparsers.add_parser('stop')
parser.set_defaults(func=command_jail_stop)
parser.add_argument('reference', type=str)
parser = subparsers.add_parser('remove')
parser.set_defaults(func=command_jail_remove)
parser.add_argument('reference', type=str)
parser = subparsers.add_parser('exec')
parser.set_defaults(func=command_jail_exec)
parser.add_argument('reference', type=str)
parser.add_argument('command', type=str, nargs=argparse.REMAINDER, default=['/bin/sh'])
parser = subparsers.add_parser('run')
parser.set_defaults(func=command_jail_run)
parser.add_argument('image', type=str)


+ 30
- 1
jail.py 查看文件

@@ -116,9 +116,12 @@ def jail_run(path, command, mounts=[]):
def jail_stop(path):
try:
jid = get_jid(path)
subprocess.run(['jail', '-r', jid])
jailname = os.path.split(path)[-1]
subprocess.run(['jail', '-r', jailname])
except ValueError:
print('JID could not be determined')
# import time
# time.sleep(1)
mi = getmntinfo()
for m in mi:
mntonname = m['f_mntonname'].decode('utf-8')
@@ -165,6 +168,32 @@ def command_jail_create(args):
print(path)
def command_jail_start(args):
name, _ = zfs_find(args.reference, focker_type='jail')
path = zfs_mountpoint(name)
jailname = os.path.split(path)[-1]
subprocess.run(['jail', '-c', jailname])
def command_jail_stop(args):
name, _ = zfs_find(args.reference, focker_type='jail')
path = zfs_mountpoint(name)
jail_stop(path)
def command_jail_remove(args):
name, _ = zfs_find(args.reference, focker_type='jail')
path = zfs_mountpoint(name)
jail_remove(path)
def command_jail_exec(args):
name, _ = zfs_find(args.reference, focker_type='jail')
path = zfs_mountpoint(name)
jid = get_jid(path)
subprocess.run(['jexec', str(jid)] + args.command)
def command_jail_run(args):
base, _ = zfs_snapshot_by_tag_or_sha256(args.image)
# root = '/'.join(base.split('/')[:-1])


Loading…
取消
儲存