From 22612f175761ed7f4dcb5c05ff0c21c3e51ada48 Mon Sep 17 00:00:00 2001 From: bunkerity Date: Mon, 26 Jul 2021 17:15:24 +0200 Subject: [PATCH] minor edit on Linux tests and init work on k8s API --- .github/workflows/linux-bunkerized-nginx.yml | 8 +-- autoconf/IngressController.py | 54 ++++++++++++++++++++ autoconf/requirements.txt | 1 + tests/{linux.sh => linux-run.sh} | 43 +++++++++------- 4 files changed, 84 insertions(+), 22 deletions(-) create mode 100644 autoconf/IngressController.py rename tests/{linux.sh => linux-run.sh} (57%) diff --git a/.github/workflows/linux-bunkerized-nginx.yml b/.github/workflows/linux-bunkerized-nginx.yml index 8a4cb70..f9f0da5 100644 --- a/.github/workflows/linux-bunkerized-nginx.yml +++ b/.github/workflows/linux-bunkerized-nginx.yml @@ -13,10 +13,10 @@ jobs: - name: Checkout source code uses: actions/checkout@v2 - name: Debian test - run: ./tests/linux.sh debian:buster-slim + run: ./tests/linux-run.sh debian:buster-slim test-debian - name: Ubuntu test - run: ./tests/linux.sh ubuntu:focal + run: ./tests/linux-run.sh ubuntu:focal test-ubuntu - name: CentOS test - run: ./tests/linux.sh centos:7 + run: ./tests/linux-run.sh centos:7 test-centos - name: Fedora test - run: ./tests/linux.sh fedora:34 + run: ./tests/linux-run.sh fedora:34 test-fedora diff --git a/autoconf/IngressController.py b/autoconf/IngressController.py new file mode 100644 index 0000000..f63e072 --- /dev/null +++ b/autoconf/IngressController.py @@ -0,0 +1,54 @@ +from kubernetes import client, config, watch + +import asyncio + +class IngressController : + + def __init__(self) : + config.load_kube_config() + self.__api = client.CoreV1Api() + self.__extensions_api = client.ExtensionsV1beta1Api() + + def get_ingresses(self) : + return self.__extensions_api.list_ingress_for_all_namespaces(watch=False) + + def get_services(self) : + return self.__api.list_service_for_all_namespaces(watch=False) + + async def watch_ingress(self) : + print("ok ingress", flush=True) + w = watch.Watch() + for event in w.stream(self.__extensions_api.list_ingress_for_all_namespaces) : + print("*** NEW INGRESS EVENT ***", flush=True) + for k, v in event.items() : + print(k + " :", flush=True) + print(v, flush=True) + await asyncio.sleep(0) + + async def watch_service(self) : + print("ok service", flush=True) + w = watch.Watch() + for event in w.stream(self.__api.list_service_for_all_namespaces) : + print("*** NEW SERVICE EVENT ***", flush=True) + for k, v in event.items() : + print(k + " :", flush=True) + print(v, flush=True) + await asyncio.sleep(0) + +ic = IngressController() + +print("*** INGRESSES ***") +print(ic.get_ingresses()) + +print("*** SERVICES ***") +print(ic.get_services()) + +print("*** LISTENING FOR EVENTS ***") + +ioloop = asyncio.get_event_loop() +print("ok1") +ioloop.create_task(ic.watch_ingress()) +print("ok2") +ioloop.create_task(ic.watch_service()) +print("ok3") +ioloop.run_forever() diff --git a/autoconf/requirements.txt b/autoconf/requirements.txt index ddb40d3..6dbe34d 100644 --- a/autoconf/requirements.txt +++ b/autoconf/requirements.txt @@ -1,3 +1,4 @@ docker requests jinja2 +kubernetes diff --git a/tests/linux.sh b/tests/linux-run.sh similarity index 57% rename from tests/linux.sh rename to tests/linux-run.sh index 112e1cd..a0bfad2 100755 --- a/tests/linux.sh +++ b/tests/linux-run.sh @@ -5,68 +5,73 @@ function cleanup() { } image="$1" +name="$2" +do_cleanup="yes" +if [ "$3" == "no" ] ; then + do_cleanup="no" +fi echo "[*] Run $image" -id="$(docker run --rm -d -it -p 80:80 "$image")" +id="$(docker run --rm -d -it -p 80:80 -p 443:443 --name "$name" "$image")" if [ $? -ne 0 ] ; then echo "[!] docker run failed" - cleanup "$id" + cleanup "$name" exit 1 fi echo "[*] Copy install.sh" -docker cp helpers/install.sh "$id:/tmp" +docker cp helpers/install.sh "$name:/tmp" if [ $? -ne 0 ] ; then echo "[!] docker cp failed" - cleanup "$id" + cleanup "$name" exit 2 fi echo "[*] Copy bunkerized-nginx" -docker cp . "$id:/tmp/bunkerized-nginx-test" +docker cp . "$name:/tmp/bunkerized-nginx-test" if [ $? -ne 0 ] ; then echo "[!] docker cp failed" - cleanup "$id" + cleanup "$name" exit 3 fi echo "[*] Exec install.sh" -docker exec "$id" /bin/bash -c 'chmod +x /tmp/install.sh && /tmp/install.sh' +docker exec "$name" /bin/bash -c 'chmod +x /tmp/install.sh && /tmp/install.sh' if [ $? -ne 0 ] ; then echo "[!] docker exec failed" - cleanup "$id" + cleanup "$name" exit 4 fi echo "[*] Exec nginx -V" -docker exec "$id" nginx -V +docker exec "$name" nginx -V if [ $? -ne 0 ] ; then echo "[!] docker exec failed" - cleanup "$id" + cleanup "$name" exit 5 fi echo "[*] Copy variables.env" -docker cp "tests/variables.env" "$id:/opt/bunkerized-nginx" +docker cp "tests/variables.env" "$name:/opt/bunkerized-nginx" if [ $? -ne 0 ] ; then echo "[!] docker cp failed" - cleanup "$id" + cleanup "$name" exit 6 fi echo "[*] Copy index.html" -docker cp "tests/index.html" "$id:/opt/bunkerized-nginx/www" +docker cp "tests/index.html" "$name:/opt/bunkerized-nginx/www" if [ $? -ne 0 ] ; then echo "[!] docker cp failed" - cleanup "$id" + cleanup "$name" exit 7 fi echo "[*] Exec bunkerized-nginx" -docker exec "$id" bunkerized-nginx +docker exec "$name" bunkerized-nginx if [ $? -ne 0 ] ; then echo "[!] docker exec failed" - cleanup "$id" + cleanup "$name" exit 8 fi @@ -74,8 +79,10 @@ echo "[*] Exec curl" res="$(curl -s -H "User-Agent: LegitOne" http://localhost/)" if [ $? -ne 0 ] || [ "$res" != "ok" ] ; then echo "[!] curl failed" - cleanup "$id" + cleanup "$name" exit 9 fi -cleanup "$id" +if [ "$do_cleanup" == "yes" ] ; then + cleanup "$name" +fi