diff --git a/app/service/service.py b/app/service/service.py
index 0c2c81a..8c279b6 100644
--- a/app/service/service.py
+++ b/app/service/service.py
@@ -6,6 +6,7 @@ from pyfastocloud_models.stream.entry import IStream, ProxyStream, EncodeStream,
from pyfastocloud.client_constants import ClientStatus
from pyfastocloud_models.series.entry import Serial
+import pyfastocloud_models.constants as constants
from pyfastocloud_models.service.entry import ServiceSettings, ProviderPair, safe_delete_stream
from app.service.service_client import ServiceClient, OperationSystem
from app.service.stream_handler import IStreamHandler
@@ -109,7 +110,9 @@ class Service(IStreamHandler):
settings = self._settings
if prepare:
self._client.prepare_service(settings)
- return self._client.sync_service(settings)
+ res = self._client.sync_service(settings)
+ self.__refresh_catchups()
+ return res
def get_log_stream(self, sid: str):
stream = self.find_stream_by_id(sid)
@@ -401,3 +404,9 @@ class Service(IStreamHandler):
for stream in streams:
self.__init_stream_runtime_fields(stream)
self._streams.append(stream)
+
+ def __refresh_catchups(self):
+ for stream in self._streams:
+ if stream.get_type() == constants.StreamType.CATCHUP:
+ self._client.start_stream(stream.config())
+ return
diff --git a/app/service/service_client.py b/app/service/service_client.py
index 8f90de2..d1c9a90 100644
--- a/app/service/service_client.py
+++ b/app/service/service_client.py
@@ -108,7 +108,8 @@ class ServiceClient(IClientHandler):
streams = []
for stream in settings.streams:
stream.set_server_settings(settings)
- streams.append(stream.config())
+ config = stream.config()
+ streams.append(config)
return self._client.sync_service(self._gen_request_id(), streams)
diff --git a/app/service/service_manager.py b/app/service/service_manager.py
index 781b947..824d30e 100644
--- a/app/service/service_manager.py
+++ b/app/service/service_manager.py
@@ -41,7 +41,6 @@ class ServiceManager(object):
readable, writeable, _ = select.select(rsockets, [], [], 1)
for read in readable:
-
for server in self._servers_pool:
if server.socket() == read:
server.recv_data()
diff --git a/app/service/view.py b/app/service/view.py
index 0b87a92..4a1f237 100644
--- a/app/service/view.py
+++ b/app/service/view.py
@@ -73,6 +73,8 @@ class ServiceView(FlaskView):
oid=stream.output.urls[0].id)
elif stream_type == constants.StreamType.CATCHUP:
stream = server.make_catchup_stream()
+ stream.output.urls[0] = stream.generate_http_link(constants.HlsType.HLS_PULL,
+ oid=stream.output.urls[0].id)
else:
stream = server.make_test_life_stream()
diff --git a/app/stream/view.py b/app/stream/view.py
index 95ff47e..c8c8fef 100644
--- a/app/stream/view.py
+++ b/app/stream/view.py
@@ -269,7 +269,7 @@ class StreamView(FlaskView):
if server:
stream = server.make_catchup_stream()
form = CatchupStreamForm(obj=stream)
- if request.method == 'POST': # FIXME form.validate_on_submit()
+ if request.method == 'POST' and form.validate_on_submit():
new_entry = form.update_entry(stream)
new_entry.save()
server.add_stream(new_entry)
diff --git a/app/templates/provider/dashboard.html b/app/templates/provider/dashboard.html
index d83d13c..5e3cbd5 100644
--- a/app/templates/provider/dashboard.html
+++ b/app/templates/provider/dashboard.html
@@ -49,12 +49,6 @@ Dashboard | {{ config['PUBLIC_CONFIG'].site.title }}
th.stream_actions {
width: 25%;
}
-
-
-
-
-
-
{{super()}}
{% endblock %}
@@ -1624,6 +1618,5 @@ Dashboard | {{ config['PUBLIC_CONFIG'].site.title }}
}
});
}
-
{% endblock %}
diff --git a/app/templates/stream/catchup/base.html b/app/templates/stream/catchup/base.html
index 1018169..1d65a10 100644
--- a/app/templates/stream/catchup/base.html
+++ b/app/templates/stream/catchup/base.html
@@ -54,6 +54,8 @@
{{ render_bootstrap_form(form.input) }}
+ {{ render_bootstrap_form(form.output) }}
+
{{ render_bootstrap_form(form.timeshift_chunk_duration) }}
{{ render_bootstrap_form(form.timeshift_chunk_life_time) }}