diff --git a/src/models.py b/src/models.py index e3e1f281c1bc59bed181cd8e73eb8d79ffb2256b..a55fbcc04580c426dd56c6caebe900dd534a164f 100644 --- a/src/models.py +++ b/src/models.py @@ -47,6 +47,7 @@ class PlayLog(db.Model): timeslot_id = Column(Integer) show_name = Column(String(256)) log_source = Column(Integer) + is_synced = Column(Boolean) @@ -62,7 +63,8 @@ class PlayLog(db.Model): self.track_type = data.track_type self.timeslot_id = data.timeslot_id self.show_name = data.show_name - self.log_source = data.log_source + self.log_source = data.log_source # The play-out source this log is coming from (e.g. engine1, engine2) + self.is_synced = False # Only relevant for main nodes, in a multi-node setup def save(self): @@ -177,6 +179,7 @@ class TrackSchema(ma.SQLAlchemySchema): class ActivityLog(db.Model): """ Table holding a log of play-out source active and sync states. + Only used in "SYNC" deployment mode. """ __tablename__ = 'activity_log' @@ -218,7 +221,7 @@ class HealthHistory(db.Model): health_info = Column(String(2048)) - def __init__(self, data): + def __init__(self, source_number): """ Initializes an health entry. """ diff --git a/src/service.py b/src/service.py index 1dec65be301d0feeac8f314577c03e3dd48c5da3..d2073fd3bfcb416aa3050e78a1f7275c3ccef46c 100644 --- a/src/service.py +++ b/src/service.py @@ -139,24 +139,26 @@ class ApiService(): playlog = PlayLog(data) playlog.save() - self.logger.info("Stored playlog for '%s'" % playlog.track_start) + self.logger.debug("Stored playlog for '%s'" % playlog.track_start) - # Push to sync node if configured - if self.sync_host: + # Main Node: Push to Sync Node, if enabled + if self.node_type = NodeType.MAIN and self.sync_host: playlog_schema = PlayLogSchema() json_playlog = playlog_schema.dump(playlog) - + try: api_url = self.sync_host + self.config.get("sync_api_store_playlog") r = requests.post(api_url, json=json_playlog) if r.status_code == 200: self.logger.info("Successfully pushed playlog for '%s' to '%s'" % (playlog.track_start, self.sync_host)) + playlog.is_synced = True + playlog.save() else: self.logger.error("Error while pushing playlog to sync-node: " + r.json()) except Exception as e: self.logger.error("Error while posting to sync-node API '%s'!" % (api_url), e) - + def clock_info(self): """ Retrieves the currently playing playlist.