From ea0931d9fe6aabcf2fa768f06258c9146a7441d2 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 3 Feb 2018 01:27:58 +0100 Subject: creating and removing worspaces works now --- src/flufigut.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) (limited to 'src/flufigut.py') diff --git a/src/flufigut.py b/src/flufigut.py index 4100aab..31f4ff2 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -34,6 +34,7 @@ import sys import yaml import jinja2 import kubernetes +import time # helper functions ############################################ # @@ -530,25 +531,64 @@ class Planet: class K8sDeployment: - def __init__(self, desc, planet): + def __init__(self, desc, planet, namespace=None): self._desc = desc self._planet = planet + self._namespace = namespace + if not self._namespace: + self._namespace = self._desc.globals['name'] + kubernetes.config.load_kube_config() kubernetes.client.user_agent = 'flufigut' + def __create_namespace(self, v1): + ns = kubernetes.client.V1Namespace() + ns.metadata = kubernetes.client.V1ObjectMeta() + ns.metadata.name = self._namespace + v1.create_namespace(ns) + + def __delete_namespace(self, v1): + try: + opts = kubernetes.client.V1DeleteOptions() + v1.delete_namespace(self._namespace, opts) + except kubernetes.client.rest.ApiException as e: + if e.status == 404: + pass + def deploy(self): + v1 = kubernetes.client.CoreV1Api() + self.__create_namespace(v1) pass def wipe(self): - pass + v1 = kubernetes.client.CoreV1Api() + self.__delete_namespace(v1) + while True: + lst = v1.list_namespace() + found = False + for ns in lst.items: + if ns.metadata.name == self._namespace: + found = True + break + if not found: + break + time.sleep(1) def print_pods(self): v1 = kubernetes.client.CoreV1Api() - ret = v1.list_namespaced_pod(namespace=self._desc.globals['name']) + ret = v1.list_namespaced_pod(namespace=self._namespace) for i in ret.items: print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name)) + def watch_namespaces(self): + v1 = kubernetes.client.CoreV1Api() + + w = kubernetes.watch.Watch() + for event in w.stream(v1.list_namespace, _request_timeout=60): + print("Event: %s %s" % (event['type'], event['object'].metadata.name)) + + # Main ######################################################## # @@ -588,7 +628,9 @@ if __name__ == '__main__': # print("****************************************************") k8s = K8sDeployment(d, p) - k8s.print_pods() + k8s.deploy() + time.sleep(5) + k8s.wipe() except Exception as e: print("ERROR: while running app: %s" % e) -- cgit v1.2.3