aboutsummaryrefslogtreecommitdiff
path: root/playground
diff options
context:
space:
mode:
authorbozo.kopic <bozo@kopic.xyz>2022-03-22 01:31:27 +0100
committerbozo.kopic <bozo@kopic.xyz>2022-03-22 01:31:27 +0100
commitcc4ba3b063f14943579ffbfe416828590f70ae0a (patch)
treeaf2127920fb57603206ca670beb63b5d58650fb8 /playground
parentc594b1fca854a7b9fb73d854a9830143cd1032fc (diff)
WIP major rewrite
Diffstat (limited to 'playground')
-rw-r--r--playground/a01/.gitignore1
-rw-r--r--playground/a01/main.py112
-rw-r--r--playground/conf.yaml3
-rw-r--r--playground/config/domain.xml34
-rw-r--r--playground/config/network.xml10
-rw-r--r--playground/config/ssh.key27
-rw-r--r--playground/config/ssh.key.pub1
-rw-r--r--playground/env.sh7
-rwxr-xr-xplayground/execute.sh6
-rwxr-xr-xplayground/run.sh3
-rwxr-xr-xplayground/server.sh7
-rw-r--r--playground/server.yaml1
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: {}