summaryrefslogtreecommitdiff
path: root/src/flufigut.py
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-02-04 03:40:13 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-02-04 03:40:13 +0100
commit61b341e40961770b285725cecafbc28de95054fe (patch)
tree1431b47bdce4d7fac5a69301117e8f6355c0b0c4 /src/flufigut.py
parentworker password are secrets now as well (diff)
change handling of flags
Diffstat (limited to 'src/flufigut.py')
-rwxr-xr-xsrc/flufigut.py65
1 files changed, 35 insertions, 30 deletions
diff --git a/src/flufigut.py b/src/flufigut.py
index 77980d7..dfcb5e8 100755
--- a/src/flufigut.py
+++ b/src/flufigut.py
@@ -172,14 +172,14 @@ class Planet:
'name': worker.name,
'subs': {},
'password': rand_string(size=20),
- 'flags': {}
+ 'flags': []
}
if not worker.subname:
return
self.workers[worker.name]['subs'][worker.subname] = {
'fullname': str(worker),
- 'flags': {}
+ 'flags': []
}
return
@@ -189,9 +189,15 @@ class Planet:
if worker.subname not in self.workers[worker.name]['subs']:
self.workers[worker.name]['subs'][worker.subname] = {
'fullname': str(worker),
- 'flags': {}
+ 'flags': []
}
+ def __set_worker_flags(self, worker, flag):
+ if flag not in self.workers[worker.name]['flags']:
+ self.workers[worker.name]['flags'].append(flag)
+ if worker.subname and flag not in self.workers[worker.name]['subs'][worker.subname]['flags']:
+ self.workers[worker.name]['subs'][worker.subname]['flags'].append(flag)
+
def __get_worker(self, comp_name):
match_prefix_len = 0
match = None
@@ -218,11 +224,6 @@ class Planet:
#
# inputs
- def __set_input_worker_flags(self, worker, input):
- self.workers[worker.name]['flags'] = "input-%s" % input['type']
- if worker.subname:
- self.workers[worker.name]['subs'][worker.subname]['flags'] = "input-%s" % input['type']
-
def __set_input_properties(self, comp_name, props):
for prop in props:
if prop == 'resolution':
@@ -250,7 +251,7 @@ class Planet:
if input['master']:
master_cnt += 1
- self.__set_input_worker_flags(worker, input)
+ self.__set_worker_flags(worker, "input-%s" % input['type'])
self.__set_input_properties(comp_name, input['properties'])
if master_cnt == 0:
@@ -530,28 +531,32 @@ class Planet:
def _generate_records(self):
self.flow['recorders'] = {}
- for _, record in self._desc.records.items():
- for mux in record['muxes']:
- format = record['muxes'][mux]["format"]
- profile = record['muxes'][mux]["profile"]
- feeder = 'mux-%s-%s-%s' % (mux, format, profile)
-
- comp_name = 'record-%s-%s-%s' % (mux, format, profile)
- comp_desc = 'recorder for %s %s-%s' % (mux, format, profile)
-
- self.flow['recorders'][comp_name] = {
- 'type': "recorder",
- 'desc': comp_desc,
- 'worker': str(self.__get_worker(comp_name)),
- 'feeder': feeder,
- 'properties': {}
- }
- for prop in record:
- if prop != 'muxes':
- self.flow['recorders'][comp_name]['properties'][prop] = record[prop]
+ for record_name, record in self._desc.records.items():
+ mux = record['mux']
+ format = record['format']
+ profile = record['profile']
+ feeder = 'mux-%s-%s-%s' % (mux, format, profile)
+
+ comp_name = 'record-%s-%s-%s' % (mux, format, profile)
+ comp_desc = 'recorder for %s %s-%s' % (mux, format, profile)
+ worker = self.__get_worker(comp_name)
+
+ self.flow['recorders'][comp_name] = {
+ 'type': "recorder",
+ 'desc': comp_desc,
+ 'worker': str(worker),
+ 'feeder': feeder,
+ 'properties': {},
+ '_recorder_id': record_name
+ }
+ for prop in record:
+ if prop not in ['mux', 'format', 'profile']:
+ self.flow['recorders'][comp_name]['properties'][prop] = record[prop]
+ self.__set_worker_flags(worker, "record-%s" % record_name)
#
# all
+
def generate(self):
self._generate_inputs()
self._generate_muxes()
@@ -559,7 +564,7 @@ class Planet:
self._generate_records()
return self._unassigned_components
- def toXML(self, template_dir):
+ def planet_xml(self, template_dir):
loader = jinja2.FileSystemLoader(os.path.join(template_dir, self._desc.globals['templates'], 'flumotion'))
env = jinja2.Environment(loader=loader, line_statement_prefix='%%')
template = env.get_template('planet.xml.j2')
@@ -615,7 +620,7 @@ class K8sDeployment:
v1.create_namespaced_service(self._namespace, svc)
cm = self.__generate_object(tmpl_env, 'flumotion-manager-cm.yml')
- cm['data']['planet.xml'] = self._planet.toXML(template_dir)
+ cm['data']['planet.xml'] = self._planet.planet_xml(template_dir)
v1.create_namespaced_config_map(self._namespace, cm)
secret = self.__generate_object(tmpl_env, 'flumotion-manager-secret.yml')