From f101c97e18df690083e26538bbd49a44d580501b Mon Sep 17 00:00:00 2001
From: "R. Florian von Cube" <ralf.florian.von.cube@cern.ch>
Date: Mon, 13 Jan 2025 18:49:47 +0100
Subject: [PATCH] Adapt match_expr and start_expr for overflow-xcache-socal.

---
 compiled/cern/global/frontend.xml | 2 +-
 compiled/cern/itb/frontend.xml    | 2 +-
 compiled/cern/itbdev/frontend.xml | 2 +-
 compiled/fnal/global/frontend.xml | 2 +-
 compiled/fnal/itb/frontend.xml    | 2 +-
 inventory/classes/common.yml      | 4 ++--
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/compiled/cern/global/frontend.xml b/compiled/cern/global/frontend.xml
index 0e8bf50..312a507 100644
--- a/compiled/cern/global/frontend.xml
+++ b/compiled/cern/global/frontend.xml
@@ -560,7 +560,7 @@
             <running_glideins_per_entry max="300" min="0" relative_to_queue="1.05"/>
             <running_glideins_total curb="3200" max="3500"/>
          </config>
-         <match match_expr='( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
+         <match match_expr='(glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
             <factory query_expr='(GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)'>
                <match_attrs>
                   <match_attr name="GLIDEIN_CMSSite" type="string"/>
diff --git a/compiled/cern/itb/frontend.xml b/compiled/cern/itb/frontend.xml
index 80457a2..86860df 100644
--- a/compiled/cern/itb/frontend.xml
+++ b/compiled/cern/itb/frontend.xml
@@ -559,7 +559,7 @@
             <running_glideins_per_entry max="300" min="0" relative_to_queue="1.05"/>
             <running_glideins_total curb="3200" max="3500"/>
          </config>
-         <match match_expr='( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
+         <match match_expr='(glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
             <factory query_expr='(GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)'>
                <match_attrs>
                   <match_attr name="GLIDEIN_CMSSite" type="string"/>
diff --git a/compiled/cern/itbdev/frontend.xml b/compiled/cern/itbdev/frontend.xml
index cbeb9e7..22d1aa2 100644
--- a/compiled/cern/itbdev/frontend.xml
+++ b/compiled/cern/itbdev/frontend.xml
@@ -526,7 +526,7 @@
             <running_glideins_per_entry max="300" min="0" relative_to_queue="1.05"/>
             <running_glideins_total curb="3200" max="3500"/>
          </config>
-         <match match_expr='( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
+         <match match_expr='(glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
             <factory query_expr='(GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)'>
                <match_attrs>
                   <match_attr name="GLIDEIN_CMSSite" type="string"/>
diff --git a/compiled/fnal/global/frontend.xml b/compiled/fnal/global/frontend.xml
index 9ac16a2..56ae520 100644
--- a/compiled/fnal/global/frontend.xml
+++ b/compiled/fnal/global/frontend.xml
@@ -560,7 +560,7 @@
             <running_glideins_per_entry max="300" min="0" relative_to_queue="1.05"/>
             <running_glideins_total curb="3200" max="3500"/>
          </config>
-         <match match_expr='( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
+         <match match_expr='(glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
             <factory query_expr='(GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)'>
                <match_attrs>
                   <match_attr name="GLIDEIN_CMSSite" type="string"/>
diff --git a/compiled/fnal/itb/frontend.xml b/compiled/fnal/itb/frontend.xml
index bfa7fe6..61fb18b 100644
--- a/compiled/fnal/itb/frontend.xml
+++ b/compiled/fnal/itb/frontend.xml
@@ -559,7 +559,7 @@
             <running_glideins_per_entry max="300" min="0" relative_to_queue="1.05"/>
             <running_glideins_total curb="3200" max="3500"/>
          </config>
-         <match match_expr='( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
+         <match match_expr='(glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )' start_expr='ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )'>
             <factory query_expr='(GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)'>
                <match_attrs>
                   <match_attr name="GLIDEIN_CMSSite" type="string"/>
diff --git a/inventory/classes/common.yml b/inventory/classes/common.yml
index cf8405c..34e26ab 100644
--- a/inventory/classes/common.yml
+++ b/inventory/classes/common.yml
@@ -333,10 +333,10 @@ parameters:
         max: 3500
       # If a) Site is UCSD or Caltech and any MINI or MINISIM OR b) Site==Wisconsin and only MINI data OR  c) Site==MIT and only a subset of MINI
       match_expr: >-
-        ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_UCSD", "T2_US_Caltech"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_Wisconsin"] and "MINIAODSIM" not in job["DESIRED_CMSDataset"] ) or ( glidein["attrs"].get("GLIDEIN_CMSSite") in ["T2_US_MIT"] and ( "UL2016" in job["DESIRED_CMSDataset"] or "UL2017" in job["DESIRED_CMSDataset"]))
+        (glidein["attrs"].get("GLIDEIN_Country") in job["DESIRED_Overflow_Region"].split(",")) and ( glidein["attrs"].get("GLIDEIN_CMSSite") not in ["T2_US_Wisconsin", "T2_US_MIT"] or "MINIAODSIM" not in job["DESIRED_CMSDataset"] )
       # Same idea,  UCSD and Caltech can get jobs looking for any  MINIAOD and MINIAODSIM,  Wisconsin can only get jobs looking for MINIAOD and MIT only gets jobs looking for a subset of MINIAOD
       start_expr: >-
-        ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ( GLIDEIN_CMSSite=?="T2_US_Wisconsin"  &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset) ) || ( GLIDEIN_CMSSite=?="T2_US_MIT"  &amp;&amp; regexp("/*/Run201[6,7].*/MINIAOD/.*UL201[6,7].*", DESIRED_CMSDataset) ) ) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )
+        ifthenelse(CMS_ALLOW_OVERFLOW isnt undefined,CMS_ALLOW_OVERFLOW=?="True", undefined) &amp;&amp; (CRAB_UserRole=!="production") &amp;&amp; ifthenelse(DESIRED_Overflow_Region isnt undefined, stringListMember(GLIDEIN_Country,DESIRED_Overflow_Region),undefined) &amp;&amp;( ((GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech") &amp;&amp; (regexp("/*/RunIISummer(19|20)UL(16|17|18).*/MINIAODSIM", DESIRED_CMSDataset) || regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset))) || ((GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; regexp("/*/Run201[6,7,8].*/MINIAOD/.*UL201[6,7,8].*", DESIRED_CMSDataset)) &amp;&amp; ( isUndefined(RequestGPUs) || RequestGPUs =?= 0 )
       factory_query_expr: >-
         (GLIDEIN_CMSSite=?="T2_US_UCSD" || GLIDEIN_CMSSite=?="T2_US_Caltech" || GLIDEIN_CMSSite=?="T2_US_Wisconsin" || GLIDEIN_CMSSite=?="T2_US_MIT") &amp;&amp; stringListMember("CMS",GLIDEIN_Supported_VOs) &amp;&amp; !ifthenelse(CMS_Local_Entry isnt undefined, CMS_Local_Entry, False)
       job_query_expr: >-
-- 
GitLab