From 61b341e40961770b285725cecafbc28de95054fe Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 4 Feb 2018 03:40:13 +0100 Subject: change handling of flags --- src/flufigut.py | 65 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) (limited to 'src/flufigut.py') 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') -- cgit v1.2.3