summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-02-01 11:16:10 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-02-01 11:16:10 +0100
commitefa603b4dc2572dd97b4e2b6db76110c727e38b4 (patch)
tree96ed24767af5ef7e050044a230c7508aab9da0f2
parentworkers can now have a subname (diff)
also accept a single pattern
-rw-r--r--src/examples/elevate2018.yml12
-rwxr-xr-xsrc/flufigut.py53
2 files changed, 37 insertions, 28 deletions
diff --git a/src/examples/elevate2018.yml b/src/examples/elevate2018.yml
index 77bf36a..3cec69f 100644
--- a/src/examples/elevate2018.yml
+++ b/src/examples/elevate2018.yml
@@ -36,14 +36,14 @@ globals:
mjpeg: { 1080p25: 95 }
workers:
dione:
- capture: [ "capture-*" ]
+ capture: "capture-*"
default: [ "resize-*", "resample-*", "encode-*" ]
helene: [ "encode-sdi-orig-vp8-*", "encode-sdi-orig-h264-360p25", "mux-*", "http-local1*", "record-*" ]
- emc-00: [ "repeat-public*" ]
- emc-01: [ "http-public1*" ]
- emc-02: [ "http-public2*" ]
- emc-03: [ "http-public3*" ]
- emc-04: [ "http-public4*" ]
+ emc-00: "repeat-public*"
+ emc-01: "http-public1*"
+ emc-02: "http-public2*"
+ emc-03: "http-public3*"
+ emc-04: "http-public4*"
inputs:
sdi-orig:
type: decklink
diff --git a/src/flufigut.py b/src/flufigut.py
index ce2a48b..c266287 100755
--- a/src/flufigut.py
+++ b/src/flufigut.py
@@ -51,7 +51,7 @@ class Worker:
self.name = name
self.subname = subname
- def __str__(self):
+ def __repr__(self):
if self.subname:
return "%s:%s" % (self.name, self.subname)
return self.name
@@ -76,33 +76,42 @@ class Description:
self.worker_patterns = {}
- def __compute_worker_patterns(self, worker_name, worker_subname, patterns):
- for pattern in patterns:
- is_prefix = False
- search_string = pattern
- worker = Worker(worker_name, worker_subname)
- if '*' in pattern:
- if '*' in pattern[:-1]:
- raise Exception("invalid worker pattern '%s' in worker '%s' component globs may only have a single '*' at the end)" % (pattern, worker))
- is_prefix = True
- search_string = pattern[:-1]
- if not search_string:
- raise Exception("worker '%s' has wildcard or empty pattern which is not allowed" % (worker))
- if search_string in self.worker_patterns:
- raise Exception("worker pattern '%s' is used by at least two workers (%s and %s)" %
- (pattern, worker, self.worker_patterns[search_string].worker))
-
- self.worker_patterns[search_string] = WorkerPattern(pattern, is_prefix, worker)
+ def __compute_worker_pattern(self, worker, pattern):
+ is_prefix = False
+ search_string = pattern
+ if '*' in pattern:
+ if '*' in pattern[:-1]:
+ raise Exception("invalid worker pattern '%s' in worker '%s' component globs may only have a single '*' at the end)" % (pattern, worker))
+ is_prefix = True
+ search_string = pattern[:-1]
+
+ if not search_string:
+ raise Exception("worker '%s' has wildcard or empty pattern which is not allowed" % (worker))
+ if search_string in self.worker_patterns:
+ raise Exception("worker pattern '%s' is used by at least two workers (%s and %s)" %
+ (pattern, worker, self.worker_patterns[search_string].worker))
+
+ self.worker_patterns[search_string] = WorkerPattern(pattern, is_prefix, worker)
def _compute_worker_patterns(self):
for name, entry in self.globals['workers'].items():
- if isinstance(entry, list):
- self.__compute_worker_patterns(name, None, entry)
+ if isinstance(entry, str):
+ self.__compute_worker_pattern(Worker(name), entry)
+ elif isinstance(entry, list):
+ for pattern in entry:
+ self.__compute_worker_pattern(Worker(name), pattern)
elif isinstance(entry, dict):
for subname, subentry in entry.items():
- self.__compute_worker_patterns(name, subname, subentry)
+ worker = Worker(name, subname)
+ if isinstance(subentry, str):
+ self.__compute_worker_pattern(worker, subentry)
+ elif isinstance(subentry, list):
+ for pattern in subentry:
+ self.__compute_worker_pattern(worker, pattern)
+ else:
+ raise Exception("globals.workers entry '%s' is invalid" % worker)
else:
- raise Exception("globals.workers entries must contain lists of patterns")
+ raise Exception("globals.workers entry '%s' is invalid" % name)
def parse(self, config_file):
cf = open(config_file, 'r')