From e24da65951ca4820e20cf9edfc8b4a0496600950 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oriol=20Tint=C3=B3?= <oriol.tinto@lmu.de>
Date: Wed, 17 May 2023 13:46:01 +0200
Subject: [PATCH] Refactor job files to get most of the workflow defined in the
 common folder.

---
 conf/common/jobs.yml            | 88 +++++++++++++++++++++++++++++++++
 conf/real-from-dwd-ana/jobs.yml | 75 +---------------------------
 conf/real-from-ideal/jobs.yml   | 59 ----------------------
 3 files changed, 89 insertions(+), 133 deletions(-)
 create mode 100644 conf/common/jobs.yml

diff --git a/conf/common/jobs.yml b/conf/common/jobs.yml
new file mode 100644
index 0000000..261d115
--- /dev/null
+++ b/conf/common/jobs.yml
@@ -0,0 +1,88 @@
+JOBS:
+  TRANSFER_PROJECT:
+    FILE: templates/common/transfer_project.sh
+    PLATFORM: LOCAL
+
+  BUILD_ICON:
+    FILE: templates/common/build_icon.sh
+    DEPENDENCIES: TRANSFER_PROJECT
+    WALLCLOCK: 04:00
+    PROCESSORS: 16
+    RETRIALS: 2 # retry because spack downloads sometimes timeout
+    NODES: 1
+
+  BUILD_PYTHON_ENVIRONMENT:
+    FILE: templates/common/build_python_environment.sh
+    # Right now we rely on spack for building icon and having a python interpreter, so we need this dependency:
+    DEPENDENCIES: BUILD_ICON
+    WALLCLOCK: 01:00
+    PROCESSORS: 16
+    NODES: 1
+
+  PREPARE_EXPERIMENT:
+    # FILE: How the experiment folder is prepared should be defined for each specific case.
+    DEPENDENCIES: BUILD_ICON
+    RUNNING: once
+    WALLCLOCK: 01:00
+
+  PREPARE_DATE_LOCAL:
+    # FILE: How the date folder is prepared should be defined for each specific case.
+    RUNNING: date
+    WALLCLOCK: 01:00
+    PLATFORM: LOCAL
+
+  PREPARE_DATE_REMOTE:
+    # FILE: How the date folder is prepared should be defined for each specific case.
+    RUNNING: date
+    WALLCLOCK: 01:00
+    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
+
+  PREPARE_MEMBER:
+    # FILE: How the member folder is prepared should be defined for each specific case.
+    DEPENDENCIES: PREPARE_EXPERIMENT PREPARE_DATE_REMOTE PREPARE_DATE_LOCAL
+    RUNNING: member
+    WALLCLOCK: 01:00
+
+  PREPARE_NAMELIST:
+    # FILE: How the namelist is prepared should be defined for each specific case.
+    DEPENDENCIES: TRANSFER_PROJECT BUILD_PYTHON_ENVIRONMENT PREPARE_MEMBER RUN_ICON-1
+    WALLCLOCK: 00:05
+    RUNNING: chunk
+    TYPE: python
+    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
+    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
+
+
+  RUN_ICON:
+    FILE: templates/common/run_icon.sh
+    DEPENDENCIES: PREPARE_NAMELIST
+    WALLCLOCK: 04:00
+    RUNNING: chunk
+    PROCESSORS: 64
+    MEMORY: 81920
+    CUSTOM_DIRECTIVES: [ "#SBATCH --exclusive" ]
+
+  COMPRESS:
+    FILE: templates/common/compress.py
+    DEPENDENCIES: RUN_ICON BUILD_PYTHON_ENVIRONMENT COMPRESS-1
+    RUNNING: chunk
+    TYPE: python
+    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
+    PROCESSORS: 16
+    MEMORY: 16384
+    WALLCLOCK: 01:00
+
+  TRANSFER:
+    FILE: templates/common/transfer.sh
+    DEPENDENCIES: COMPRESS
+    # Since this is running locally, can simply leave a long wallclock.
+    WALLCLOCK: 24:00
+    RUNNING: member
+    PLATFORM: LOCAL
+
+  CLEAN:
+    FILE: templates/common/clean.sh
+    DEPENDENCIES: TRANSFER
+    WALLCLOCK: 00:10
+    RUNNING: member
+    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
diff --git a/conf/real-from-dwd-ana/jobs.yml b/conf/real-from-dwd-ana/jobs.yml
index 04e57d4..2c9aa02 100644
--- a/conf/real-from-dwd-ana/jobs.yml
+++ b/conf/real-from-dwd-ana/jobs.yml
@@ -1,88 +1,15 @@
 JOBS:
-  TRANSFER_PROJECT:
-    FILE: templates/common/transfer_project.sh
-    PLATFORM: LOCAL
-
-  BUILD_ICON:
-    FILE: templates/common/build_icon.sh
-    DEPENDENCIES: TRANSFER_PROJECT
-    WALLCLOCK: 04:00
-    PROCESSORS: 16
-    RETRIALS: 2 # retry because spack downloads sometimes timeout
-    NODES: 1
-
-  BUILD_PYTHON_ENVIRONMENT:
-    FILE: templates/common/build_python_environment.sh
-    # Right now we rely on spack for building icon and having a python interpreter, so we need this dependency:
-    DEPENDENCIES: BUILD_ICON
-    WALLCLOCK: 01:00
-    PROCESSORS: 16
-    NODES: 1
-
   PREPARE_EXPERIMENT:
     FILE: templates/real-from-dwd-ana/prepare_experiment.sh
-    DEPENDENCIES: BUILD_ICON
-    RUNNING: once
-    WALLCLOCK: 01:00
 
   PREPARE_DATE_LOCAL:
     FILE: templates/real-from-dwd-ana/prepare_date_local.sh
-    RUNNING: date
-    WALLCLOCK: 01:00
-    PLATFORM: LOCAL
 
   PREPARE_DATE_REMOTE:
     FILE: templates/real-from-dwd-ana/prepare_date_remote.sh
-    RUNNING: date
-    WALLCLOCK: 01:00
-    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
 
   PREPARE_MEMBER:
     FILE: templates/real-from-dwd-ana/prepare_member.sh
-    DEPENDENCIES: PREPARE_EXPERIMENT PREPARE_DATE_REMOTE PREPARE_DATE_LOCAL
-    RUNNING: member
-    WALLCLOCK: 01:00
 
   PREPARE_NAMELIST:
-    FILE: templates/real-from-dwd-ana/prepare_namelist.py
-    DEPENDENCIES: TRANSFER_PROJECT BUILD_PYTHON_ENVIRONMENT PREPARE_MEMBER RUN_ICON-1
-    WALLCLOCK: 00:05
-    RUNNING: chunk
-    TYPE: python
-    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
-    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
-
-
-  RUN_ICON:
-    FILE: templates/common/run_icon.sh
-    DEPENDENCIES: PREPARE_NAMELIST
-    WALLCLOCK: 04:00
-    RUNNING: chunk
-    PROCESSORS: 64
-    MEMORY: 81920
-    CUSTOM_DIRECTIVES: [ "#SBATCH --exclusive" ]
-
-  COMPRESS:
-    FILE: templates/common/compress.py
-    DEPENDENCIES: RUN_ICON BUILD_PYTHON_ENVIRONMENT COMPRESS-1
-    RUNNING: chunk
-    TYPE: python
-    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
-    PROCESSORS: 16
-    MEMORY: 16384
-    WALLCLOCK: 01:00
-
-  TRANSFER:
-    FILE: templates/common/transfer.sh
-    DEPENDENCIES: COMPRESS
-    # Since this is running locally, can simply leave a long wallclock.
-    WALLCLOCK: 24:00
-    RUNNING: member
-    PLATFORM: LOCAL
-
-  CLEAN:
-    FILE: templates/common/clean.sh
-    DEPENDENCIES: TRANSFER
-    WALLCLOCK: 00:10
-    RUNNING: member
-    PLATFORM: "%DEFAULT.HPCARCH%_LOGIN"
+    FILE: templates/real-from-dwd-ana/prepare_namelist.py
\ No newline at end of file
diff --git a/conf/real-from-ideal/jobs.yml b/conf/real-from-ideal/jobs.yml
index 1fc83dc..ddeb817 100644
--- a/conf/real-from-ideal/jobs.yml
+++ b/conf/real-from-ideal/jobs.yml
@@ -1,29 +1,6 @@
 JOBS:
-  TRANSFER_PROJECT:
-    FILE: templates/common/transfer_project.sh
-    PLATFORM: LOCAL
-
-  BUILD_ICON:
-    FILE: templates/common/build_icon.sh
-    DEPENDENCIES: TRANSFER_PROJECT
-    WALLCLOCK: 04:00
-    PROCESSORS: 16
-    RETRIALS: 2 # retry because spack downloads sometimes timeout
-    NODES: 1
-
-  BUILD_PYTHON_ENVIRONMENT:
-    FILE: templates/common/build_python_environment.sh
-    # Right now we rely on spack for building icon and having a python interpreter, so we need this dependency:
-    DEPENDENCIES: BUILD_ICON
-    WALLCLOCK: 01:00
-    PROCESSORS: 16
-    NODES: 1
-
   PREPARE_EXPERIMENT:
     FILE: templates/real-from-ideal/prepare_experiment.sh
-    DEPENDENCIES: BUILD_ICON
-    RUNNING: once
-    WALLCLOCK: 00:10
 
   PREPARE_IDEAL_DIRECTORY:
     FILE: templates/real-from-ideal/prepare_ideal_directory.sh
@@ -61,45 +38,9 @@ JOBS:
     TYPE: python
     EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
 
-
   PREPARE_MEMBER:
     FILE: templates/real-from-ideal/prepare_member.sh
     DEPENDENCIES: FG_ANA_FROM_IDEALIZED EXTPAR_FROM_IDEALIZED
-    RUNNING: member
-    WALLCLOCK: 01:00
 
   PREPARE_NAMELIST:
     FILE: templates/real-from-ideal/prepare_namelist.py
-    DEPENDENCIES: TRANSFER_PROJECT BUILD_PYTHON_ENVIRONMENT PREPARE_MEMBER RUN_ICON-1
-    WALLCLOCK: 00:05
-    RUNNING: chunk
-    TYPE: python
-    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
-
-  RUN_ICON:
-    FILE: templates/common/run_icon.sh
-    DEPENDENCIES: PREPARE_NAMELIST
-    WALLCLOCK: 01:00
-    RUNNING: chunk
-    PROCESSORS: 16
-    NODES: 1
-
-  COMPRESS:
-    FILE: templates/common/compress.py
-    DEPENDENCIES: RUN_ICON COMPRESS-1 BUILD_PYTHON_ENVIRONMENT
-    RUNNING: chunk
-    TYPE: python
-    EXECUTABLE: "%HPCROOTDIR%/%python_environment.folder_name%/bin/python3"
-
-  TRANSFER:
-    FILE: templates/common/transfer.sh
-    DEPENDENCIES: COMPRESS
-    WALLCLOCK: 00:10
-    RUNNING: member
-    PLATFORM: LOCAL
-
-  CLEAN:
-    FILE: templates/common/clean.sh
-    DEPENDENCIES: TRANSFER
-    WALLCLOCK: 00:10
-    RUNNING: member
-- 
GitLab