Ejemplo n.º 1
0
 def post(self):
     name = str(self.get_argument("name"))
     enable = int(self.get_argument("enable"))
     zk_benchmode_path = zk_prefix + "/" + name + "/" + "benchmode"
     zk = ZKData()
     zk.set(zk_benchmode_path, enable)
     zk.close()
Ejemplo n.º 2
0
 def _set_states(self, minfo, zk_path, stream_base, user):
     zk = ZKData()
     if minfo["streams"]:
         for stream1 in minfo["streams"]:
             zk.set(zk_path + "/" + stream1, minfo["streams"][stream1])
     if minfo["segs"]:
         for seg in minfo["segs"]:
             zk.set(zk_path + "/" + user + "/" + seg, minfo["segs"][seg])
     zk.close()
Ejemplo n.º 3
0
    def _get_manifest(self, stream, user):
        # Retrive the manifest from upstream.
        try:
            r = requests.get(content_provider_url + "/" + stream)
            r.raise_for_status()
            manifest = r.text
        except Exception as e:
            print("Exception: " + str(e), flush=True)
            return str(e)

        # launch zk
        stream_base = "/".join(stream.split("/")[:-1])
        zk_path = zk_manifest_prefix + "/" + stream_base

        # Parse manifest
        minfo = {"segs": {}, "streams": {}, "manifest": ""}
        ad_spec = {
            "prefix": "adstream/" + user,
            "path": ad_storage_root + "/" + stream_base,
            "interval": ad_interval,  # ad interval (#segments)
            "duration": ad_duration,  # ad duration
            "analytic_ahead": ad_analytic_ahead,
            "transcode_ahead": ad_transcode_ahead,
        }

        zk = ZKData()
        if stream.endswith(".m3u8"):
            minfo = parse_hls(
                stream_cp_url=content_provider_url + "/" + stream,
                m3u8=manifest,
                stream_info=zk.get(zk_path + "/" + stream.split("/")[-1]),
                ad_spec=ad_spec,
                ad_segment=ad_segment)
        if stream.endswith(".mpd"):
            minfo = parse_dash(stream_cp_url=content_provider_url + "/" +
                               stream,
                               mpd=manifest,
                               ad_spec=ad_spec,
                               ad_segment=ad_segment)

        # set zk states
        if minfo["streams"]:
            for stream1 in minfo["streams"]:
                zk.set(zk_path + "/" + stream1, minfo["streams"][stream1])
        if minfo["segs"]:
            for seg in minfo["segs"]:
                zk.set(zk_path + "/" + user + "/" + seg, minfo["segs"][seg])

        zk.close()
        return minfo
Ejemplo n.º 4
0
def set_ad_path(path, value):
    zkd = ZKData()
    zkd.set(path, value)
    print("set " + path + " to " + value, flush=True)
    zkd.close()
Ejemplo n.º 5
0
 def _set_usecase_status(self, name, usecase, value):
     zk_usecase_path = zk_prefix + "/" + name + "/" + usecase
     zk = ZKData()
     zk.set(zk_usecase_path, value)
     zk.close()