summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/flufigut.py66
-rw-r--r--templates/default/flumotion/planet.xml.j25
-rw-r--r--templates/default/kubernetes/flumotion-worker-deploy.yml.j28
3 files changed, 48 insertions, 31 deletions
diff --git a/src/flufigut.py b/src/flufigut.py
index f679f68..7744b5e 100755
--- a/src/flufigut.py
+++ b/src/flufigut.py
@@ -58,11 +58,14 @@ class Worker:
self.name = name
self.subname = subname
- def __repr__(self):
+ def __str__(self):
if self.subname:
return "%s:%s" % (self.name, self.subname)
return self.name
+ def __repr__(self):
+ return "Worker(%s, %s)" % (self.name, self.subname)
+
class WorkerPattern:
@@ -162,21 +165,30 @@ class Planet:
#
# utils
def __add_worker(self, worker):
- if worker.name in self.workers:
- if worker.subname:
- if not isinstance(self.workers[worker.name], dict):
- raise Excepteption("worker '%s' seems to have entries with and without subnames" % worker.name)
- if worker.subname not in self.workers[worker.name]:
- self.workers[worker.name][worker.subname] = 1
- else:
- self.workers[worker.name][worker.subname] += 1
- else:
- self.workers[worker.name] += 1
- else:
- if worker.subname:
- self.workers[worker.name] = {worker.subname: 1}
- else:
- self.workers[worker.name] = 1
+ if worker.name not in self.workers:
+ self.workers[worker.name] = {
+ 'name': worker.name,
+ 'subs': {},
+ 'password': rand_string(size=20),
+ 'flags': {}
+ }
+ if not worker.subname:
+ return
+
+ self.workers[worker.name]['subs'][worker.subname] = {
+ 'fullname': str(worker),
+ 'flags': {}
+ }
+ return
+
+ if not worker.subname:
+ return
+
+ if worker.subname not in self.workers[worker.name]['subs']:
+ self.workers[worker.name]['subs'][worker.subname] = {
+ 'fullname': str(worker),
+ 'flags': {}
+ }
def __get_worker(self, comp_name):
match_prefix_len = 0
@@ -574,10 +586,9 @@ class K8sDeployment:
if e.status == 404:
pass
- def __generate_object(self, tmpl_env, template_file, worker_name=None, worker_subnames=None):
+ def __generate_object(self, tmpl_env, template_file, worker=None):
tmpl = tmpl_env.get_template(template_file + '.j2')
- object_yaml = tmpl.render(namespace=self._namespace, desc=self._desc, planet=self._planet,
- worker_name=worker_name, worker_subnames=worker_subnames)
+ object_yaml = tmpl.render(namespace=self._namespace, desc=self._desc, planet=self._planet, worker=worker)
return yaml.load(object_yaml)
def _deploy_manager(self, template_dir, tmpl_env, v1, appsV1):
@@ -591,11 +602,14 @@ class K8sDeployment:
deploy = self.__generate_object(tmpl_env, 'flumotion-manager-deploy.yml')
appsV1.create_namespaced_deployment(self._namespace, deploy)
- def _deploy_worker(self, template_dir, tmpl_env, v1, appsV1, name, worker):
- subnames = ['default']
- if isinstance(worker, dict):
- subnames = worker.keys()
- deploy = self.__generate_object(tmpl_env, 'flumotion-worker-deploy.yml', name, subnames)
+ def _deploy_worker(self, template_dir, tmpl_env, v1, appsV1, worker):
+ if not len(worker['subs']):
+ worker['subs']['worker'] = {
+ 'fullname': worker['name'],
+ 'flags': worker['flags']
+ }
+
+ deploy = self.__generate_object(tmpl_env, 'flumotion-worker-deploy.yml', worker)
appsV1.create_namespaced_deployment(self._namespace, deploy)
def deploy(self, template_dir):
@@ -607,8 +621,8 @@ class K8sDeployment:
tmpl_env = jinja2.Environment(loader=loader, line_statement_prefix='%%')
self._deploy_manager(template_dir, tmpl_env, v1, appsV1)
- for worker_name, worker_entry in self._planet.workers.items():
- self._deploy_worker(template_dir, tmpl_env, v1, appsV1, worker_name, worker_entry)
+ for _, worker in self._planet.workers.items():
+ self._deploy_worker(template_dir, tmpl_env, v1, appsV1, worker)
def wipe(self):
v1 = kubernetes.client.CoreV1Api()
diff --git a/templates/default/flumotion/planet.xml.j2 b/templates/default/flumotion/planet.xml.j2
index 881a5ff..0a86b30 100644
--- a/templates/default/flumotion/planet.xml.j2
+++ b/templates/default/flumotion/planet.xml.j2
@@ -7,7 +7,10 @@
<port>{{ globals.manager.port }}</port>
<transport>{{ globals.manager.transport }}</transport>
<component name="manager-bouncer" type="htpasswdcrypt-bouncer">
- <property name="filename">/etc/flumotion/{{ globals.name }}.passwd</property>
+<!-- <property name="filename">/etc/flumotion/{{ globals.name }}.passwd</property> -->
+ <property name="data">
+ user:PSfNpHTkpTx1M
+ </property>
</component>
</manager>
diff --git a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2 b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2
index 8504b34..778aa06 100644
--- a/templates/default/kubernetes/flumotion-worker-deploy.yml.j2
+++ b/templates/default/kubernetes/flumotion-worker-deploy.yml.j2
@@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ namespace }}
- name: flumotion-worker-{{ worker_name }}
+ name: flumotion-worker-{{ worker.name }}
labels:
app: flumotion
type: worker
@@ -21,9 +21,9 @@ spec:
app: flumotion
type: worker
spec:
- nodeName: {{ worker_name }}
+ nodeName: {{ worker.name }}
containers:
-{% for subname in worker_subnames %}
+{% for subname, sub in worker.subs.items() %}
- name: {{ subname }}
image: spreadspace/flumotion:worker
imagePullPolicy: Always
@@ -32,7 +32,7 @@ spec:
- -H flumotion-manager
- -P 8642
- -T tcp
- - -n {{ worker_name }}:{{ subname }}
+ - -n {{ sub.fullname }}
- -u user
- -p test
- -F {{ 8000 + loop.index0 * 10 }}-{{ 8001 + loop.index0 * 10 }}