From a6ec246933ebabdf94e31466f8630190a9b7d945 Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Thu, 25 May 2023 17:09:49 +0000
Subject: [PATCH 1/8] added code to the driver script to reset CI when label is
 switched back to Ready once in progress

---
 ci/scripts/driver.sh | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh
index ec05263d1..1438e6129 100755
--- a/ci/scripts/driver.sh
+++ b/ci/scripts/driver.sh
@@ -65,7 +65,21 @@ fi
 pr_list=$(${GH} pr list --repo "${REPO_URL}" --label "CI-${MACHINE_ID^}-Ready" --state "open" | awk '{print $1}') || true
 
 for pr in ${pr_list}; do
-  "${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}"
+  db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}")
+#############################################################
+# Check if a Ready labeled PR has changed back from once set 
+# and in that case remove all previous jobs in slubm and
+# and remove PR from filesystem to start clean
+#############################################################
+  if [[ "already is in list" == *"${db_list}" ]]; then
+    "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}"
+    pr_dir="${GFS_CI_ROOT}/PR/${pr}"
+    for cases in "${pr_dir}/RUNTESTS/"*; do
+      pslot=$(basename "${cases}")
+      sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" |  awk '{print $1}' | xargs scancel || true
+    done
+    rm -Rf "${pr_dir}"
+  fi
 done
 
 pr_list=""
-- 
GitLab


From 2b6fcf701c9a45f07b8b64366a9cda37f43b8a0e Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Thu, 25 May 2023 17:33:02 +0000
Subject: [PATCH 2/8] missed second star for wildcard for substring test in
 bash for when driver get Ready when had already been

---
 ci/scripts/driver.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh
index 1438e6129..3b8c5c3fc 100755
--- a/ci/scripts/driver.sh
+++ b/ci/scripts/driver.sh
@@ -71,7 +71,7 @@ for pr in ${pr_list}; do
 # and in that case remove all previous jobs in slubm and
 # and remove PR from filesystem to start clean
 #############################################################
-  if [[ "already is in list" == *"${db_list}" ]]; then
+  if [[ "already is in list" == *"${db_list}"* ]]; then
     "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}"
     pr_dir="${GFS_CI_ROOT}/PR/${pr}"
     for cases in "${pr_dir}/RUNTESTS/"*; do
-- 
GitLab


From aef132fb5a89eeaaba2d241118915c257e0e640e Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Thu, 25 May 2023 17:39:16 +0000
Subject: [PATCH 3/8] had substring logic in reverse for driver script

---
 ci/scripts/driver.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh
index 3b8c5c3fc..0a5b210fa 100755
--- a/ci/scripts/driver.sh
+++ b/ci/scripts/driver.sh
@@ -71,7 +71,7 @@ for pr in ${pr_list}; do
 # and in that case remove all previous jobs in slubm and
 # and remove PR from filesystem to start clean
 #############################################################
-  if [[ "already is in list" == *"${db_list}"* ]]; then
+  if [[ "${db_list}" == *"already is in list"* ]]; then
     "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}"
     pr_dir="${GFS_CI_ROOT}/PR/${pr}"
     for cases in "${pr_dir}/RUNTESTS/"*; do
-- 
GitLab


From 832a84eb2b307a361c941add09380b276c4a05ea Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Thu, 25 May 2023 20:56:16 +0000
Subject: [PATCH 4/8] added a Ready update count as an id so that multiple
 driver instances will not create false negatives on build when starting over
 in PR dir

---
 ci/scripts/check_ci.sh         |  6 +++---
 ci/scripts/driver.sh           | 38 ++++++++++++++++++++++++---------
 ci/scripts/pr_list_database.py | 39 ++++++++++++++++++++--------------
 3 files changed, 54 insertions(+), 29 deletions(-)

diff --git a/ci/scripts/check_ci.sh b/ci/scripts/check_ci.sh
index 58e869765..6ea975d91 100755
--- a/ci/scripts/check_ci.sh
+++ b/ci/scripts/check_ci.sh
@@ -57,7 +57,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db"
 
 pr_list=""
 if [[ -f "${pr_list_dbfile}" ]]; then
-  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true
+  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfild "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true
 fi
 if [[ -z "${pr_list+x}" ]]; then
   echo "no PRs open and ready to run cases on .. exiting"
@@ -86,7 +86,7 @@ for pr in ${pr_list}; do
     "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Running" --add-label "CI-${MACHINE_ID^}-Passed"
     sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
     "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
-    "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}"
+    "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}"
     # Completely remove the PR and its cloned repo on sucess of all cases
     rm -Rf "${pr_dir}" 
     continue 
@@ -122,7 +122,7 @@ for pr in ${pr_list}; do
       } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}" 
       sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
       "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
-      "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}"
+      "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}"
       for kill_cases in "${pr_dir}/RUNTESTS/"*; do
          pslot=$(basename "${kill_cases}")
          sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" |  awk '{print $1}' | xargs scancel || true
diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh
index 0a5b210fa..fb2d16eb5 100755
--- a/ci/scripts/driver.sh
+++ b/ci/scripts/driver.sh
@@ -59,22 +59,28 @@ set -x
 ############################################################
 pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db"
 if [[ ! -f "${pr_list_dbfile}" ]]; then
-  "${HOMEgfs}/ci/scripts/pr_list_database.py" --create "${pr_list_dbfile}"
+  "${HOMEgfs}/ci/scripts/pr_list_database.py" --create --sbfile "${pr_list_dbfile}"
 fi
 
 pr_list=$(${GH} pr list --repo "${REPO_URL}" --label "CI-${MACHINE_ID^}-Ready" --state "open" | awk '{print $1}') || true
 
 for pr in ${pr_list}; do
-  db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}")
+  db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" --sbfile "${pr_list_dbfile}")
+  pr_id=0
 #############################################################
 # Check if a Ready labeled PR has changed back from once set 
 # and in that case remove all previous jobs in slubm and
 # and remove PR from filesystem to start clean
 #############################################################
   if [[ "${db_list}" == *"already is in list"* ]]; then
-    "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}"
+    pr_id=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk '{print $4}') || true
+    pr_id=$((pr_id+1))
+    "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Ready "${pr_id}"
     pr_dir="${GFS_CI_ROOT}/PR/${pr}"
     for cases in "${pr_dir}/RUNTESTS/"*; do
+      if [[ -z "${cases+x}" ]]; then
+         break
+      fi   
       pslot=$(basename "${cases}")
       sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" |  awk '{print $1}' | xargs scancel || true
     done
@@ -84,7 +90,7 @@ done
 
 pr_list=""
 if [[ -f "${pr_list_dbfile}" ]]; then
-  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Ready | awk '{print $1}') || true
+  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Ready | awk '{print $1}') || true
 fi
 if [[ -z "${pr_list+x}" ]]; then
   echo "no PRs open and ready for checkout/build .. exiting"
@@ -99,23 +105,35 @@ fi
 
 for pr in ${pr_list}; do
   # Skip pr's that are currently Building for when driver is called in cron
-  pr_building=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | awk -v pr="${pr}" '{ if ($1 == pr) print $0 }' | grep Building) || true
+  pr_building=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk -v pr="${pr}" '{ if ($1 == pr) print $0 }' | grep Building) || true
   if [[ -z "${pr_building+x}" ]]; then
       continue
   fi
   "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Ready" --add-label "CI-${MACHINE_ID^}-Building"
-  "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Building "${pr_list_dbfile}"
+  "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Building
   echo "Processing Pull Request #${pr}"
   pr_dir="${GFS_CI_ROOT}/PR/${pr}"
+  rm -Rf "${pr_dir}"
   mkdir -p "${pr_dir}"
   # call clone-build_ci to clone and build PR
   id=$("${GH}" pr view "${pr}" --repo "${REPO_URL}" --json id --jq '.id')
   set +e
   "${HOMEgfs}/ci/scripts/clone-build_ci.sh" -p "${pr}" -d "${pr_dir}" -o "${pr_dir}/output_${id}"
   ci_status=$?
+##################################################################
+# Checking for special case when Ready label was updated
+# that cause a running driver exit fail because was currently
+# building so we force and exit 0 instead to does not get relabled
+#################################################################
+  if [[ ${ci_status} -ne 0 ]]; then
+     pr_id_check=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk '{print $4}') || true
+     if [[ "${pr_id}" -ne "${pr_id_check}" ]]; then
+        exit 0
+     fi   
+  fi
   set -e
   if [[ ${ci_status} -eq 0 ]]; then
-    "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Built "${pr_list_dbfile}"
+    "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Built
     #setup space to put an experiment
     # export RUNTESTS for yaml case files to pickup
     export RUNTESTS="${pr_dir}/RUNTESTS"
@@ -140,14 +158,14 @@ for pr in ${pr_list}; do
           echo "Case setup: Completed at $(date) for experiment ${pslot}" || true
         } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
         "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Running"
-        "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Running "${pr_list_dbfile}"
+        "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Running
       else 
         {
           echo "Failed to create experiment:  *FAIL* ${pslot}"
           echo "Experiment setup: failed at $(date) for experiment ${pslot}" || true
         } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
         "${GH}" pr edit "${pr}" --repo "${REPO_URL}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Failed"
-        "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}"
+        "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" -sbfile "${pr_list_dbfile}"
       fi
     done
 
@@ -158,7 +176,7 @@ for pr in ${pr_list}; do
       echo "CI on ${MACHINE_ID^} failed to build on $(date) for repo ${REPO_URL}" || true
     } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
     "${GH}" pr edit "${pr}" --repo "${REPO_URL}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Failed"
-    "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}"
+    "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}"
   fi
   sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
   "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}"
diff --git a/ci/scripts/pr_list_database.py b/ci/scripts/pr_list_database.py
index b2bc1bc23..c3d797165 100755
--- a/ci/scripts/pr_list_database.py
+++ b/ci/scripts/pr_list_database.py
@@ -2,6 +2,7 @@
 
 import sys
 from pathlib import Path
+import argparse
 from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
 import sqlite3
 
@@ -39,7 +40,7 @@ def sql_table(obj: sqlite3.Cursor) -> None:
 
     """
 
-    obj.execute("CREATE TABLE processing(pr integer PRIMARY KEY, state text, status text)")
+    obj.execute("CREATE TABLE processing(pr integer PRIMARY KEY, state text, status text, reset integer)")
 
 
 def sql_insert(obj: sqlite3.Cursor, entities: list) -> None:
@@ -51,14 +52,14 @@ def sql_insert(obj: sqlite3.Cursor, entities: list) -> None:
     obj : sqlite3.Cursor
         Cursor object for Sqlite3
     entities : list
-        The list three string values that go into sqlite table (pr, state, status)
+        The list three string values that go into sqlite table (pr, state, status, reset)
 
     """
 
-    obj.execute('INSERT INTO processing(pr, state, status) VALUES(?, ?, ?)', entities)
+    obj.execute('INSERT INTO processing(pr, state, status, reset) VALUES(?, ?, ?, ?)', entities)
 
 
-def sql_update(obj: sqlite3.Cursor, pr: str, state: str, status: str) -> None:
+def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None:
     """Updates table for a given pr with new values for state and status
 
     Parameters
@@ -67,14 +68,18 @@ def sql_update(obj: sqlite3.Cursor, pr: str, state: str, status: str) -> None:
         sqlite3 Cursor Object
     pr : str
         The given pr number to update in the table
-    state : str
-        The new value for the state (Open, Closed)
-    status: str
-        The new value for the status (Ready, Running, Failed)
+    updates : dict
+        Dictionary of values to update for a given PR to include by postion
+        state, The new value for the state (Open, Closed)
+        status, The new value for the status (Ready, Running, Failed)
+        reset, The value for number of times reset to Ready
 
     """
 
-    obj.execute(f'UPDATE processing SET state = "{state}", status = "{status}" WHERE pr = {pr}')
+    update_list = ['state','status','reset']
+    for value in updates:
+       update = update_list.pop(0)
+       obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}')
 
 
 def sql_fetch(obj: sqlite3.Cursor) -> list:
@@ -114,11 +119,11 @@ def input_args():
     parser = ArgumentParser(description=description,
                             formatter_class=ArgumentDefaultsHelpFormatter)
 
-    parser.add_argument('sbfile', help='SQLite3 database file with PR list', type=str)
+    parser.add_argument('--sbfile', help='SQLite3 database file with PR list')
     parser.add_argument('--create', help='create sqlite file for pr list status', action='store_true', required=False)
     parser.add_argument('--add_pr', nargs=1, metavar='PR', help='add new pr to list (defults to: Open,Ready)', required=False)
     parser.add_argument('--remove_pr', nargs=1, metavar='PR', help='removes pr from list', required=False)
-    parser.add_argument('--update_pr', nargs=3, metavar=('pr', 'state', 'status'), help='updates state and status of a given pr', required=False)
+    parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'), help='updates state and status of a given pr', required=False)
     parser.add_argument('--display', help='output pr table', action='store_true', required=False)
 
     args = parser.parse_args()
@@ -142,14 +147,16 @@ if __name__ == '__main__':
                 print(f"pr {row[0]} already is in list: nothing added")
                 sys.exit(0)
 
-        entities = (args.add_pr[0], 'Open', 'Ready')
+        entities = (args.add_pr[0], 'Open', 'Ready', 0)
         sql_insert(obj, entities)
 
     if args.update_pr:
-        pr = args.update_pr[0]
-        state = args.update_pr[1]
-        status = args.update_pr[2]
-        sql_update(obj, pr, state, status)
+        if len(args.update_pr) < 2:
+            print(f"update_pr must have at least one vaule to update")
+            sys.exit(0)
+        pr = args.update_pr[0]     
+
+        sql_update(obj, pr, args.update_pr[1:])
 
     if args.remove_pr:
         sql_remove(obj, args.remove_pr[0])
-- 
GitLab


From bdbdf50f3e491e5c91d3a863989986015b0b48da Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Thu, 25 May 2023 21:29:41 +0000
Subject: [PATCH 5/8] pynorms - few basic ones

---
 ci/scripts/pr_list_database.py | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/ci/scripts/pr_list_database.py b/ci/scripts/pr_list_database.py
index c3d797165..24ef49501 100755
--- a/ci/scripts/pr_list_database.py
+++ b/ci/scripts/pr_list_database.py
@@ -59,7 +59,7 @@ def sql_insert(obj: sqlite3.Cursor, entities: list) -> None:
     obj.execute('INSERT INTO processing(pr, state, status, reset) VALUES(?, ?, ?, ?)', entities)
 
 
-def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None:
+def sql_update(obj: sqlite3.Cursor, pr: str, updates: dict) -> None:
     """Updates table for a given pr with new values for state and status
 
     Parameters
@@ -76,10 +76,10 @@ def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None:
 
     """
 
-    update_list = ['state','status','reset']
+    update_list = ['state', 'status', 'reset']
     for value in updates:
-       update = update_list.pop(0)
-       obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}')
+        update = update_list.pop(0)
+        obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}')
 
 
 def sql_fetch(obj: sqlite3.Cursor) -> list:
@@ -123,7 +123,8 @@ def input_args():
     parser.add_argument('--create', help='create sqlite file for pr list status', action='store_true', required=False)
     parser.add_argument('--add_pr', nargs=1, metavar='PR', help='add new pr to list (defults to: Open,Ready)', required=False)
     parser.add_argument('--remove_pr', nargs=1, metavar='PR', help='removes pr from list', required=False)
-    parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'), help='updates state and status of a given pr', required=False)
+    parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'),
+                        help='updates state and status of a given pr', required=False)
     parser.add_argument('--display', help='output pr table', action='store_true', required=False)
 
     args = parser.parse_args()
@@ -154,7 +155,7 @@ if __name__ == '__main__':
         if len(args.update_pr) < 2:
             print(f"update_pr must have at least one vaule to update")
             sys.exit(0)
-        pr = args.update_pr[0]     
+        pr = args.update_pr[0]
 
         sql_update(obj, pr, args.update_pr[1:])
 
-- 
GitLab


From 6d16e5ab69c7ed71f387a37555da0e745293fea4 Mon Sep 17 00:00:00 2001
From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov>
Date: Fri, 26 May 2023 15:35:22 +0000
Subject: [PATCH 6/8] needed to add --sbfile switch onto pr_list_database.py
 script in run_ci.sh

---
 ci/scripts/run_ci.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci/scripts/run_ci.sh b/ci/scripts/run_ci.sh
index 95a0e5d31..df485ceb3 100755
--- a/ci/scripts/run_ci.sh
+++ b/ci/scripts/run_ci.sh
@@ -47,7 +47,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db"
 
 pr_list=""
 if [[ -f "${pr_list_dbfile}" ]]; then
-  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Running | awk '{print $1}' | head -"${max_concurrent_pr}") || true
+  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Running | awk '{print $1}' | head -"${max_concurrent_pr}") || true
 fi
 if [[ -z "${pr_list}" ]]; then
   echo "no open and built PRs that are ready for the cases to advance with rocotorun .. exiting"
-- 
GitLab


From c4562dc7a8bc800b94e1b54ae377be85be94aab5 Mon Sep 17 00:00:00 2001
From: TerrenceMcGuinness-NOAA <terrence.mcguinness@cox.net>
Date: Fri, 26 May 2023 11:57:58 -0400
Subject: [PATCH 7/8] Update ci/scripts/driver.sh

Co-authored-by: Rahul Mahajan <aerorahul@users.noreply.github.com>
---
 ci/scripts/driver.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh
index fb2d16eb5..0158ab98b 100755
--- a/ci/scripts/driver.sh
+++ b/ci/scripts/driver.sh
@@ -69,7 +69,7 @@ for pr in ${pr_list}; do
   pr_id=0
 #############################################################
 # Check if a Ready labeled PR has changed back from once set 
-# and in that case remove all previous jobs in slubm and
+# and in that case remove all previous jobs in scheduler and
 # and remove PR from filesystem to start clean
 #############################################################
   if [[ "${db_list}" == *"already is in list"* ]]; then
-- 
GitLab


From ecce15166cc92aee285a20ccd3bd6b4cc7849611 Mon Sep 17 00:00:00 2001
From: TerrenceMcGuinness-NOAA <terrence.mcguinness@cox.net>
Date: Fri, 26 May 2023 11:59:15 -0400
Subject: [PATCH 8/8] Update check_ci.sh

Type spelling file for new switch to pr_list_database.py in check
---
 ci/scripts/check_ci.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci/scripts/check_ci.sh b/ci/scripts/check_ci.sh
index 6ea975d91..8f22ba5c0 100755
--- a/ci/scripts/check_ci.sh
+++ b/ci/scripts/check_ci.sh
@@ -57,7 +57,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db"
 
 pr_list=""
 if [[ -f "${pr_list_dbfile}" ]]; then
-  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfild "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true
+  pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true
 fi
 if [[ -z "${pr_list+x}" ]]; then
   echo "no PRs open and ready to run cases on .. exiting"
-- 
GitLab