Hi, finally managed to get the info without hard-coding the scenario Id. Here is the code:
from datetime import datetime
import dataiku
import dataikuapi
from dataiku.scenario import Trigger, Scenario
t = Trigger()
s = Scenario()
trigger_name = t.trigger['name']
trigger_project_key = s.project_key
start_time = dataiku.get_custom_variables().get(trigger_name)
def get_scenario_by_trigger_name(project_key, trigger_name):
# Search for a scenario by a trigger name
# Return type dataikuapi.dss.scenario.DSSScenario
client = dataiku.api_client()
prj = dataikuapi.dss.project.DSSProject(client, project_key)
for scenario in prj.list_scenarios():
trigger_list = scenario.get('triggerDigest', '').split(',')
if trigger_name in trigger_list:
return prj.get_scenario(scenario['id'])
def get_status_and_last_run_date(scenario):
# Returns the actual status of the scenario and the
# last start and end date
# Return type (string,datetime,datetime)
run = scenario.get_last_runs()[0] if len(scenario.get_last_runs()) > 0 else None
if run:
if scenario.get_current_run():
scenario_status = 'RUNNING'
else:
run_info = run.get_info()
scenario_status = run_info.get('result', {}).get('outcome', '?')
end_time = datetime.fromtimestamp(int(run_info['end'])/1000)
start_time = datetime.fromtimestamp(int(run_info['start'])/1000)
return scenario_status, start_time, end_time
trigger_scenario = get_scenario_by_trigger_name(trigger_project_key, trigger_name)
print(get_status_and_last_run_date(trigger_scenario))
...