diff options
author | Christian Pointner <equinox@spreadspace.org> | 2014-10-11 16:03:34 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2014-10-11 16:03:34 +0200 |
commit | 81aefd3248bc9464b47af2c5d85d694cbda4d60f (patch) | |
tree | 48fd3603a7bbc5a3809694cb4528b0822d37a394 | |
parent | also create porter for local duplicates (diff) |
added support for local duplicates for http-streamer
-rwxr-xr-x | src/flufigut.py | 49 | ||||
-rw-r--r-- | templates/flumotion/default/http2-stream.xml | 58 |
2 files changed, 39 insertions, 68 deletions
diff --git a/src/flufigut.py b/src/flufigut.py index 031987e..fdbed7e 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -302,29 +302,28 @@ if output_format == 'flumotion': } if localdup: - port = localdup['port'] if 'porter' in machines[machine]: - if port in machines[machine]['porter']: - raise SystemExit("ERROR: porter cannot be created because machine '%s' already uses port %i" % (machine, port)) + if localdup['port'] in machines[machine]['porter']: + raise SystemExit("ERROR: porter cannot be created because machine '%s' already uses port %i" % (machine, localdup['port'])) else: machines[machine]['porter'] = {} - machines[machine]['porter'][port] = { + machines[machine]['porter'][localdup['port']] = { 'socket-path': "porter-%s"%(rand_string()), 'username': rand_string(size=12), 'password': rand_string(size=12), } - atmosphere['porter-%s-%i'%(machine, port)] = { + atmosphere['porter-%s-%i'%(machine, localdup['port'])] = { 'type': "porter", - 'desc': "Porter (local-only) for %s on port %i"%(machine, port), + 'desc': "Porter (local-only) for %s on port %i"%(machine, localdup['port']), 'worker': stream_worker, 'properties': { - 'port': port, + 'port': localdup['port'], 'interface': "localhost", - 'socket-path': machines[machine]['porter'][port]['socket-path'], - 'username': machines[machine]['porter'][port]['username'], - 'password': machines[machine]['porter'][port]['password'], + 'socket-path': machines[machine]['porter'][localdup['port']]['socket-path'], + 'username': machines[machine]['porter'][localdup['port']]['username'], + 'password': machines[machine]['porter'][localdup['port']]['password'], }, } @@ -348,6 +347,36 @@ if output_format == 'flumotion': else: feeder = muxer_feed + if localdup and format in localdup['formats']: + repeater_name = 'localdup-%s%i-%s-%s-%s' % (cluster, idx+1, mux_name, format, profile) + flow['repeater'][repeater_name] = { + 'type': "repeater", + 'desc': "local duplicate on %s%i for %s %s-%s" % (cluster, idx+1, mux_name, format, profile), + 'worker': stream_worker, + 'feeder': feeder } + feeder = repeater_name + + name = '%s-local-%s%i-%s-%s-%s' % (stream[cluster]['type'], cluster, idx+1, mux_name, format, profile) + mount_point = '/%s-%s-%s.%s' % (mux_name, format, profile, globals['formats'][format]['muxer']) + flow['streamer'][name] = { + 'type': "%s-stream" % stream[cluster]['type'], + 'desc': "%s streamer for %s %s-%s (part %i of %s cluster, local duplicate)" % (stream[cluster]['type'], mux_name, format, profile, idx+1, cluster), + 'worker': stream_worker, + 'feeder': feeder, + 'properties': { + 'description': globals['description'], + 'type': 'slave', + 'porter-socket-path': machines[machine]['porter'][localdup['port']]['socket-path'], + 'porter-username': machines[machine]['porter'][localdup['port']]['username'], + 'porter-password': machines[machine]['porter'][localdup['port']]['password'], + 'mount-point': mount_point, + } + } + if 'burst-on-connect' in stream[cluster]['localdup'].keys(): + flow['streamer'][name]['properties']['burst-on-connect'] = 'true' + flow['streamer'][name]['properties']['burst-time'] = stream[cluster]['localdup']['burst-on-connect'] + + name = '%s-%s%i-%s-%s-%s' % (stream[cluster]['type'], cluster, idx+1, mux_name, format, profile) mount_point = '/%s-%s-%s.%s' % (mux_name, format, profile, globals['formats'][format]['muxer']) if streamer_cnt > 1: diff --git a/templates/flumotion/default/http2-stream.xml b/templates/flumotion/default/http2-stream.xml deleted file mode 100644 index 7b9314f..0000000 --- a/templates/flumotion/default/http2-stream.xml +++ /dev/null @@ -1,58 +0,0 @@ - <component name="{{ '%s_rep' % (name) }}" - type="repeater" - label="{{ '%s (local repeater)' % (component.desc) }}" - worker="{{ component.worker }}" - project="flumotion" - version="{{ globals.version }}"> - <eater name="default"> - <feed alias="default">{{ component.feeder }}</feed> - </eater> - <clock-master>false</clock-master> - </component> - - <component name="{{ name }}" - type="http-streamer" - label="{{ component.desc }}" - worker="{{ component.worker }}" - project="flumotion" - version="{{ globals.version }}"> - <eater name="default"> - <feed alias="default">{{ '%s_rep' % (name) }}</feed> - </eater> - <plugs> -%% if component.rrd_dir is defined - <plug socket="flumotion.component.plugs.rrd.ComponentRRDPlug" type="component-rrd"> -%% if component.rrd_clients is defined - <property name="clients-connected-file">{{ component.rrd_clients }}</property> -%% endif -%% if component.rrd_bytes is defined - <property name="bytes-transferred-file">{{ component.rrd_bytes }}</property> -%% endif - </plug> -%% endif - </plugs> -%% for name, value in component.properties.items() -%% if name != 'samplerate' - <property name="{{ name }}">{{ value }}</property> -%% endif -%% endfor - <clock-master>false</clock-master> - </component> - - <component name="{{ '%s_local' % (name) }}" - type="http-streamer" - label="{{ '%s (local streamer)' % (component.desc) }}" - worker="{{ component.worker }}" - project="flumotion" - version="{{ globals.version }}"> - <eater name="default"> - <feed alias="default">{{ '%s_rep' % (name) }}</feed> - </eater> - <property name="burst-time">1</property> - <property name="burst-on-connect">true</property> - <property name="mount-point">{{ component.properties['mount-point'] }}</property> - <property name="hostname">localhost</property> - <property name="port">{{ component.properties['port'] + 1 }}</property> - <property name="type">master</property> - <clock-master>false</clock-master> - </component> |