diff options
| author | bozo.kopic <bozo@kopic.xyz> | 2022-03-22 01:31:27 +0100 |
|---|---|---|
| committer | bozo.kopic <bozo@kopic.xyz> | 2022-03-22 01:31:27 +0100 |
| commit | cc4ba3b063f14943579ffbfe416828590f70ae0a (patch) | |
| tree | af2127920fb57603206ca670beb63b5d58650fb8 /playground | |
| parent | c594b1fca854a7b9fb73d854a9830143cd1032fc (diff) | |
WIP major rewrite
Diffstat (limited to 'playground')
| -rw-r--r-- | playground/a01/.gitignore | 1 | ||||
| -rw-r--r-- | playground/a01/main.py | 112 | ||||
| -rw-r--r-- | playground/conf.yaml | 3 | ||||
| -rw-r--r-- | playground/config/domain.xml | 34 | ||||
| -rw-r--r-- | playground/config/network.xml | 10 | ||||
| -rw-r--r-- | playground/config/ssh.key | 27 | ||||
| -rw-r--r-- | playground/config/ssh.key.pub | 1 | ||||
| -rw-r--r-- | playground/env.sh | 7 | ||||
| -rwxr-xr-x | playground/execute.sh | 6 | ||||
| -rwxr-xr-x | playground/run.sh | 3 | ||||
| -rwxr-xr-x | playground/server.sh | 7 | ||||
| -rw-r--r-- | playground/server.yaml | 1 |
12 files changed, 21 insertions, 191 deletions
diff --git a/playground/a01/.gitignore b/playground/a01/.gitignore deleted file mode 100644 index 09d06c8..0000000 --- a/playground/a01/.gitignore +++ /dev/null @@ -1 +0,0 @@ -repository diff --git a/playground/a01/main.py b/playground/a01/main.py deleted file mode 100644 index 9f96465..0000000 --- a/playground/a01/main.py +++ /dev/null @@ -1,112 +0,0 @@ -import libvirt -import sys -import time -import git -import os -import shutil -import pathlib -import tempfile -import paramiko.client -import paramiko.rsakey - - -def main(): - repo_path = 'repository' - conf = {'domain': 'archlinux', - 'ssh_username': 'root', - 'ssh_password': 'archlinux', - 'script': ['pwd', - 'ls', - 'cat test.txt']} - with tempfile.TemporaryDirectory() as tmpdir: - repo_arch_path = str( - (pathlib.Path(tmpdir) / 'hatter_archive.tar').absolute()) - init_git_archive(repo_path, repo_arch_path) - execute_libvirt(conf, repo_arch_path) - - -def init_git_archive(repo_path, repo_arch_path): - shutil.rmtree(repo_path, ignore_errors=True) - os.mkdir(repo_path) - with open(pathlib.Path(repo_path) / 'test.txt', 'w', - encoding='utf-8') as f: - f.write('test123\n') - g = git.Git(repo_path) - g.init() - g.add('.') - g.commit(m='init') - g.archive('HEAD', o=repo_arch_path) - - -def execute_libvirt(conf, repo_arch_path): - conn = libvirt.open(conf.get('uri', 'qemu:///system')) - domain = conn.lookupByName(conf['domain']) - if domain.isActive(): - domain.destroy() - snapshot_names = domain.snapshotListNames() - if 'temp_hatter' in snapshot_names: - domain.snapshotLookupByName('temp_hatter').delete() - origin_snapshot = domain.snapshotCreateXML( - "<domainsnapshot><name>temp_hatter</name></domainsnapshot>") - snapshot_name = conf.get('snapshot') - if snapshot_name: - snapshot = domain.snapshotLookupByName(snapshot_name) - if snapshot: - domain.revertToSnapshot(snapshot) - domain.create() - address = None - for _ in range(10): - addresses = domain.interfaceAddresses(0) - for i in addresses.values(): - for j in i['addrs']: - address = j['addr'] - break - if address: - execute_ssh(conf, address, repo_arch_path) - break - time.sleep(1) - domain.destroy() - domain.revertToSnapshot(origin_snapshot) - origin_snapshot.delete() - conn.close() - - -def execute_ssh(conf, address, repo_arch_path): - conn = paramiko.client.SSHClient() - conn.set_missing_host_key_policy(paramiko.client.AutoAddPolicy) - connected = False - for _ in range(10): - try: - conn.connect(address, username=conf['ssh_username'], - password=conf['ssh_password'], - timeout=1, auth_timeout=1) - connected = True - break - except Exception as e: - time.sleep(5) - if not connected: - return - sftp_conn = conn.open_sftp() - sftp_conn.put(repo_arch_path, 'hatter_archive.tar') - sftp_conn.close() - execute_ssh_cmd(conn, 'rm -rf hatter_archive', '.') - execute_ssh_cmd(conn, 'mkdir hatter_archive', '.') - execute_ssh_cmd(conn, 'tar xf hatter_archive.tar -C hatter_archive', '.') - for cmd in conf['script']: - print('>> ', cmd) - stdout, stderr = execute_ssh_cmd(conn, cmd, 'hatter_archive') - print('>>>> stdout') - print(stdout, end='') - print('>>>> stderr') - print(stderr) - conn.close() - - -def execute_ssh_cmd(conn, cmd, cwd): - _, ssh_stdout, ssh_stderr = conn.exec_command( - 'cd {} && {}'.format(cwd, cmd)) - return ssh_stdout.read().decode('utf-8'), ssh_stderr.read().decode('utf-8') - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/playground/conf.yaml b/playground/conf.yaml deleted file mode 100644 index efee9fe..0000000 --- a/playground/conf.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -repositories: [] -... diff --git a/playground/config/domain.xml b/playground/config/domain.xml deleted file mode 100644 index 7091c12..0000000 --- a/playground/config/domain.xml +++ /dev/null @@ -1,34 +0,0 @@ -<domain type='kvm'> - <name>archlinux</name> - <os> - <type>hvm</type> - <boot dev='hd'/> - </os> - <on_poweroff>destroy</on_poweroff> - <on_reboot>restart</on_reboot> - <on_crash>destroy</on_crash> - <memory unit="G">1</memory> - <pm> - <suspend-to-mem enabled='no'/> - <suspend-to-disk enabled='no'/> - </pm> - <features> - <acpi/> - <apic/> - </features> - <clock offset='utc'/> - <devices> - <emulator>/usr/bin/qemu-system-x86_64</emulator> - <disk type='file'> - <driver name='qemu' type='qcow2'/> - <source file='/srv/libvirt/archlinux.qcow2'/> - <target dev='hda' bus='virtio'/> - </disk> - <interface type='network'> - <source network="default"/> - </interface> - <video> - <model type='vga' vram='65536' heads='1'/> - </video> - </devices> -</domain> diff --git a/playground/config/network.xml b/playground/config/network.xml deleted file mode 100644 index f64eedc..0000000 --- a/playground/config/network.xml +++ /dev/null @@ -1,10 +0,0 @@ -<network> - <name>default</name> - <bridge name="virbr0"/> - <forward mode="nat"/> - <ip address="10.0.0.1" netmask="255.255.255.0"> - <dhcp> - <range start="10.0.0.10" end="10.0.0.100"/> - </dhcp> - </ip> -</network> diff --git a/playground/config/ssh.key b/playground/config/ssh.key deleted file mode 100644 index 57eb86e..0000000 --- a/playground/config/ssh.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA9t4sSxeHa8A0TwMOzD9M9OITtcbl3rki/QfBLIFBkKlP24Tx -BOH5dRfWq0LC7j1+ViDUyBEuPw513ADxuwUhpLbhelkDM7rrmobXvKfYfKlK6mtn -RA2tFSeJNmWO7Cz3VYR3JWUgG5TGowXWHRx42MP7fzmbWKd2HSVUUmKVONb98YjW -nZFTmBaV53lHfVLCKitxsToFL0uGzqFSMt27BK9GDaCA159zC4G7YqjiqxkqA5UY -x2IbMFKMd7eAKw/yCdBRuCWGYFvjPlHj1m4zCHZsfFQ5fYrO9NFd2ieYxQBgSfJ+ -cDSmiaXXWWfooaG0h2UKMkrqU0YmHGOA2c/xJwIDAQABAoIBAE0Q4Iz0pG7ryqib -0MPMQw7zgKmvlNUpwJVzFUf6deheIrLp1n/qt4BpV7eRGN9czRLAHwzx6BkBP6PV -m6EBohYUjWEvZoOAp8pOrAyV7UxFYUC7FLq29kBzXi9gFvT9uJy2xKck4ZgaosQD -r2rZF5S74cg+yJMte/7vR1qMsf7S6eyrDVMQGP6c0apMT1GxmcAHx9T71ePoYnD2 -faUzr+lVnTLGB6wv1cyaF/Nrt/leskBJ0qmKfkWMRc2uPPPDIvGW39z9OIoPqlEr -4RKqwvyqRzh0uQ/4tpZzMQTfQQSzQ3B9gxCyox7Fc8z/KOSVHzbFso9FCjidCtxR -054KmqkCgYEA/r1tdovJzv7AYJeeEV81VFCwtxIg2T04JhhfYiGg/MSSp4Jc05UM -ivVn9VIyjj9kP0mFTSH/4zLFpo9jp7a/HTfqOK6fIT0p8bQ/PJ8ZZ7cQN1MsV7bh -YaXaUF8Oh/yidnZC3dH1ByVrvZC8DolGlpLAvl8i66kUXGvHvnuYNB0CgYEA+BbG -84ge1O9aLxEKzW9soTglFJREMT3jMvK7oUPvYy6JhjoKbM3CnkFSQx+k+QA5wgKf -Z+bWGjWZ3paOP1wgmRl/3/ST08W79I6WaQVBx28DiGypyJ3V0/lkfxvsAhsPhM0n -qya+ASYuYa1OZR2sdykyYA74+lor8DzEwIfB7xMCgYEA9516QbkvuZ23siyu4YQC -eqrUm59rfr8bTSxzyxeVPR52z4zQXnqLbqeNHdGAgvTrpPj6MjfSXC6GIZlP7T6e -FvC7I83ZsJ2bn+7taSfdsgsoIB8hA0IpYpms1GMR5O2VnkDmTmhAHWoqiGGf6yFV -FBgicupXL2ty90NtLaNGF6ECgYAcvE6pEKA5m8u/XeL5bqmPdvhcjNvlNDznvtPa -1wqYW2CUio6Akci0Ge7UVYr/SHZoMXOTTlqISKMc9CVf02T3Nsvn/eVNhz7BEe78 -FR7MYeBv4d48nYOR/PYV/v70M3w1rqmkmmUxruF6cN9+uNQsLTpng/R00xL5zaAg -iNj+vwKBgQCbPS90lQ+d3YSB0W5kdBigTfgMASwFiENXHEPReTTDi73y9AQL8yh7 -fhwegAxBuKYUMqUh/yjE/lWE9j+TjLufPOLq3K0C+xoOQExuZ7+xEg9SjIju+Fj5 -iebkM6IzOZtiCNZXEQvJiHj6aTM6wTy8OhuLry04ayXvJ6Kmj63lsw== ------END RSA PRIVATE KEY----- diff --git a/playground/config/ssh.key.pub b/playground/config/ssh.key.pub deleted file mode 100644 index a3c6b6f..0000000 --- a/playground/config/ssh.key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD23ixLF4drwDRPAw7MP0z04hO1xuXeuSL9B8EsgUGQqU/bhPEE4fl1F9arQsLuPX5WINTIES4/DnXcAPG7BSGktuF6WQMzuuuahte8p9h8qUrqa2dEDa0VJ4k2ZY7sLPdVhHclZSAblMajBdYdHHjYw/t/OZtYp3YdJVRSYpU41v3xiNadkVOYFpXneUd9UsIqK3GxOgUvS4bOoVIy3bsEr0YNoIDXn3MLgbtiqOKrGSoDlRjHYhswUox3t4ArD/IJ0FG4JYZgW+M+UePWbjMIdmx8VDl9is700V3aJ5jFAGBJ8n5wNKaJpddZZ+ihobSHZQoySupTRiYcY4DZz/En bozo@bart diff --git a/playground/env.sh b/playground/env.sh new file mode 100644 index 0000000..b39dc8b --- /dev/null +++ b/playground/env.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +PYTHON=${PYTHON:-python} +RUN_PATH=$(cd $(dirname -- "$0") && pwd) +ROOT_PATH=$RUN_PATH/.. + +export PYTHONPATH=$ROOT_PATH/src_py diff --git a/playground/execute.sh b/playground/execute.sh new file mode 100755 index 0000000..0325904 --- /dev/null +++ b/playground/execute.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +. $(dirname -- "$0")/env.sh + +exec $PYTHON -m hatter execute \ + "$@" diff --git a/playground/run.sh b/playground/run.sh deleted file mode 100755 index 7302d7b..0000000 --- a/playground/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -PYTHONPATH="../src_py" python -m hatter.main -c conf.yaml --web-path ../build/jshatter $* diff --git a/playground/server.sh b/playground/server.sh new file mode 100755 index 0000000..8011973 --- /dev/null +++ b/playground/server.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +. $(dirname -- "$0")/env.sh + +exec $PYTHON -m hatter server \ + --conf server.yaml \ + "$@" diff --git a/playground/server.yaml b/playground/server.yaml new file mode 100644 index 0000000..0ebc807 --- /dev/null +++ b/playground/server.yaml @@ -0,0 +1 @@ +repos: {} |
