UseCaseDevelopmentTimers

python · Use Case Builder

Source

import demistomock as demisto  # noqa: F401
from CommonServerPython import *  # noqa: F401


def stop_all_timers_except_backlog():
    timers_to_stop = [
        "usecasedevelopmenttimer",
        "usecasetestingtimer",
        "usecasepreproductiontimer",
        "usecasebuilderdevelopmentdeadline",
        "usecaseproductiontimer",
    ]
    for timer in timers_to_stop:
        demisto.executeCommand("pauseTimer", {"timerField": timer})


def stop_all_timers_except_production():
    timers_to_stop = ["usecasedevelopmenttimer", "usecasetestingtimer", "usecasebacklogtimer", "usecasepreproductiontimer"]
    for timer in timers_to_stop:
        demisto.executeCommand("stopTimer", {"timerField": timer})


def stop_all_timers_except_development():
    timers_to_stop = ["usecasetestingtimer", "usecasepreproductiontimer", "usecasebacklogtimer", "usecaseproductiontimer"]
    for timer in timers_to_stop:
        demisto.executeCommand("pauseTimer", {"timerField": timer})


def stop_all_timers_except_testing():
    timers_to_stop = ["usecasedevelopmenttimer", "usecasepreproductiontimer", "usecasebacklogtimer", "usecaseproductiontimer"]
    for timer in timers_to_stop:
        demisto.executeCommand("pauseTimer", {"timerField": timer})


def stop_all_timers_except_preproduction():
    timers_to_stop = ["usecasedevelopmenttimer", "usecasetestingtimer", "usecasebacklogtimer", "usecaseproductiontimer"]
    for timer in timers_to_stop:
        demisto.executeCommand("pauseTimer", {"timerField": timer})


def main(incident):
    stage = incident.get("CustomFields", {}).get("usecasedevelopmentstage")

    args = demisto.args()
    # setting up timer
    try:
        if args.get("new") and stage == "Production":  # checks if the stage was set to production
            demisto.executeCommand("stopTimer", {"timerField": "usecasebuilderdevelopmentdeadline"})
            demisto.executeCommand("startTimer", {"timerField": "usecaseproductiontimer"})
            stop_all_timers_except_production()
            demisto.results(
                "The use case development stage has been set to Production!"
                " timer has been stopped, total use case time in production started."
            )
        elif args.get("new") and stage == "In Development":  # checks if the stage was set to in development
            demisto.executeCommand("startTimer", {"timerField": "usecasedevelopmenttimer"})
            stop_all_timers_except_development()
            demisto.results("The use case is in development timer has been started.")
        elif args.get("new") and stage == "Testing":  # checks if the stage was set to testing
            demisto.executeCommand("startTimer", {"timerField": "usecasetestingtimer"})
            stop_all_timers_except_testing()
            demisto.results("The use case has been moved to the testing stages timer has been started.")
        elif args.get("new") and stage == "Pre-Production":  # checks if the stage was set to pre-production
            demisto.executeCommand("startTimer", {"timerField": "usecasepreproductiontimer"})
            stop_all_timers_except_preproduction()
            demisto.results("The use case has been moved to the pre-production stages timer has been started.")
        else:
            demisto.executeCommand("startTimer", {"timerField": "usecasebacklogtimer"})
            stop_all_timers_except_backlog()
            demisto.results("The use case has been moved to backlog timer has been started.")

    except Exception as e:  # error handling
        err_msg = f"Encountered an error while running the script: [{e}]"
        return_error(err_msg, error=e)


if __name__ in ("__main__", "__builtin__", "builtins"):
    incident = demisto.incidents()[0]
    main(incident)