Newer
Older
Antoine Barthélemy
a validé
import utilities.generic
Antoine Barthélemy
a validé
import models.nemo.utilities.namelist
import models.nemo.utilities.experiment
import models.nemo.utilities.experiment_plan
import models.nemo.utilities.argument_parser
import models.nemo.utilities.global_information
#############
# functions #
#############
def cancel_experiment(version, configuration, name, keep_run_directories):
Cancel all running and submitted legs of an experiment.
print('Canceling experiment "%s", in configuration "%s", in version "%s"...\n'%(name,
Antoine Barthélemy
a validé
experiment = models.nemo.utilities.experiment.Experiment(version=version,
configuration=configuration, name=name)
experiment_plan = experiment.get_experiment_plan(for_modification=True)
for leg in experiment_plan.legs:
if leg.status in (
Antoine Barthélemy
a validé
models.nemo.utilities.experiment_plan.EXPERIMENT_LEG_STATUS_SUBMITTED,
models.nemo.utilities.experiment_plan.EXPERIMENT_LEG_STATUS_RUNNING,
):
Antoine Barthélemy
a validé
leg.cancel(delete_run_directory=(not keep_run_directories))
# write the updated experiment plan
experiment_plan.rewrite()
#################
# main function #
#################
def main():
parser = argparse.ArgumentParser(description=cancel_experiment.__doc__,
formatter_class=argparse.RawTextHelpFormatter)
Antoine Barthélemy
a validé
models.nemo.utilities.argument_parser.add_argument_version(parser=parser, required=False)
models.nemo.utilities.argument_parser.add_argument_configuration(parser=parser, required=False)
models.nemo.utilities.argument_parser.add_argument_name(parser=parser)
parser.add_argument(
action='store_true',
help='keep the leg run directories upon cancellation\n(default: False)',
arguments = vars(parser.parse_args())
Antoine Barthélemy
a validé
arguments['version'], arguments['configuration'] = (
Antoine Barthélemy
a validé
models.nemo.utilities.global_information.get_version_and_configuration(
Antoine Barthélemy
a validé
tentative_version=arguments['version'], tentative_configuration=arguments['configuration']))
Antoine Barthélemy
a validé
except utilities.generic.ClimateToolboxException as e:
cancel_experiment(**arguments)
Antoine Barthélemy
a validé
except utilities.generic.ClimateToolboxException as e:
if __name__ == '__main__':
main()