summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-02-03 01:27:58 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-02-03 01:27:58 +0100
commitea0931d9fe6aabcf2fa768f06258c9146a7441d2 (patch)
tree5867b05bebbc047f0d9b119e227738ee5c542b21 /src
parentinitial kubernetes support (diff)
creating and removing worspaces works now
Diffstat (limited to 'src')
-rwxr-xr-xsrc/flufigut.py50
1 files changed, 46 insertions, 4 deletions
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)