コード例 #1
0
ファイル: views.py プロジェクト: tutalk/django_tutalk
def start_scenario(request, exptr_name=None, scen_name=None):
    exptr_scens = get_scenarios()
    if (
        exptr_name in exptr_scens
        and scen_name in exptr_scens[exptr_name]
        and "full_path" in exptr_scens[exptr_name][scen_name]
    ):
        full_path = exptr_scens[exptr_name][scen_name]["full_path"]
        os.spawnlp(os.P_NOWAIT, "start_scenario", "start_scenario", "--exptr", exptr_name, "--scen", full_path, "-d")
        time.sleep(5)
        return redirect("scenario-runner:index")

    else:
        LOGGER.debug("exptr_name: %s not found in exptr_scens\n%s", exptr_name, json.dumps(exptr_scens, indent=4))

    return redirect("scenario-runner:index")
コード例 #2
0
def user_in_scenario_db(request):
    exptr = request.session["experimenter"]
    scen = request.session["scenario"]
    uid = request.session["tutalk_uid"]

    exptr_scens = get_scenarios()
    if exptr in exptr_scens:
        scens = exptr_scens[exptr]
        if scen in scens:
            scen_info = scens[scen]
            if "running" == scen_info["status"]:
                if "groups" in scen_info:
                    for group in scen_info["groups"]:
                        for user in group["users"]:
                            if uid == user["uid"]:
                                return True
    return False
コード例 #3
0
ファイル: views.py プロジェクト: tutalk/django_tutalk
def stop_scenario(request, exptr_name=None, scen_name=None):
    get_object_or_404(models.Experimenter, name=exptr_name)
    exptr_scens = get_scenarios()
    if exptr_name in exptr_scens:
        if scen_name in exptr_scens[exptr_name]:
            if "pid" in exptr_scens[exptr_name][scen_name]:
                pid = exptr_scens[exptr_name][scen_name]["pid"]
                if check_pid(pid):
                    try:
                        os.kill(pid, signal.SIGINT)
                        time.sleep(1)
                        if check_pid(pid):
                            os.kill(pid, signal.SIGKILL)
                            pfx = "%s.%s" % (exptr_name, scen_name)
                            rc = get_redis_connection()
                            rc.hdel(
                                "%s.scenarios" % get_tutalk_host(), "%s.status" % pfx, "%s.pid" % pfx, "%s.groups" % pfx
                            )
                        time.sleep(2)
                    except OSError as ose:
                        LOGGER.error(ose)
    return redirect("scenario-runner:index")