@@ -874,6 +874,7 @@ def merge_output_artifact(art, parent, layer=0):
874
874
self .template = self .template .deepcopy ()
875
875
876
876
def add_success_tag (templ ):
877
+ from .dag import DAG
877
878
from .steps import Steps
878
879
if isinstance (templ , ScriptOPTemplate ):
879
880
templ .outputs .parameters ["dflow_success_tag" ] = \
@@ -889,21 +890,10 @@ def add_success_tag(templ):
889
890
elif isinstance (templ , PythonScriptOPTemplate ):
890
891
templ .script += "\n with open('/tmp/outputs" \
891
892
"/success_tag', 'w') as f:\n f.write('1')\n "
892
- elif isinstance (templ , Steps ):
893
- last_step = templ .steps [- 1 ]
894
- last_templ = last_step .template
895
- add_success_tag (last_templ )
896
- last_step .outputs .parameters ["dflow_success_tag" ] = \
897
- deepcopy (
898
- last_templ .outputs .parameters ["dflow_success_tag" ])
893
+ elif isinstance (templ , (Steps , DAG )):
899
894
templ .outputs .parameters ["dflow_success_tag" ] = \
900
895
OutputParameter (
901
- value_from_parameter = last_step .outputs .parameters [
902
- "dflow_success_tag" ], default = "0" )
903
- else :
904
- raise RuntimeError (
905
- "Unsupported type of OPTemplate for "
906
- "continue_on_num_success or continue_on_success_ratio" )
896
+ value_from_parameter = "nonexist" , default = "1" )
907
897
908
898
add_success_tag (self .template )
909
899
self .outputs .parameters ["dflow_success_tag" ] = deepcopy (
@@ -1619,15 +1609,12 @@ def handle_expr(val, scope):
1619
1609
for name , par in self .outputs .parameters .items ():
1620
1610
par .value = []
1621
1611
for ps in self .parallel_steps :
1622
- if not hasattr (ps .outputs .parameters [name ], "value" ) and \
1623
- hasattr (ps .outputs .parameters [name ], "default" ):
1624
- value = ps .outputs .parameters [name ].default
1625
- else :
1612
+ if hasattr (ps .outputs .parameters [name ], "value" ):
1626
1613
value = ps .outputs .parameters [name ].value
1627
- if isinstance (value , str ):
1628
- par .value .append (value )
1629
- else :
1630
- par .value .append (jsonpickle .dumps (value ))
1614
+ if isinstance (value , str ):
1615
+ par .value .append (value )
1616
+ else :
1617
+ par .value .append (jsonpickle .dumps (value ))
1631
1618
for name , art in self .outputs .artifacts .items ():
1632
1619
for save in self .template .outputs .artifacts [name ].save :
1633
1620
if isinstance (save , S3Artifact ):
@@ -2017,6 +2004,11 @@ def exec_pod(self, scope, parameters, item=None):
2017
2004
else :
2018
2005
raise ValueError ("Unsupported copy method for debug mode." )
2019
2006
2007
+ # set default output parameters
2008
+ for name , par in self .outputs .parameters .items ():
2009
+ if hasattr (par , "default" ):
2010
+ par .value = par .default
2011
+
2020
2012
script_path = os .path .join (stepdir , "script" )
2021
2013
if self .phase == "Pending" :
2022
2014
# render variables in the script
0 commit comments