diff options
-rwxr-xr-x | src/flufigut.py | 66 | ||||
-rw-r--r-- | templates/default/flumotion/planet.xml.j2 | 5 | ||||
-rw-r--r-- | templates/default/kubernetes/flumotion-worker-deploy.yml.j2 | 8 |
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 }} |