summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/flufigut.py49
-rw-r--r--templates/flumotion/default/http2-stream.xml58
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>