From 82ea3faba78cdedd6c05de18d6714de50f275fbf Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:15:14 +0200 Subject: [PATCH 1/7] Common: Remove Python 2 compatibility --- common/check_unevaluated_dids | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index d342885..4581563 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright European Organization for Nuclear Research (CERN) 2013 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,7 +12,6 @@ """ Probe to check the backlog of dids waiting for rule evaluation. """ -from __future__ import print_function import sys From 25eb91d27b05410ed29421d8f01beb24b100a5f2 Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:16:22 +0200 Subject: [PATCH 2/7] Common: Use standard file header --- common/check_unevaluated_dids | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index 4581563..b135157 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -1,13 +1,17 @@ #!/usr/bin/env python3 -# Copyright European Organization for Nuclear Research (CERN) 2013 +# Copyright European Organization for Nuclear Research (CERN) since 2012 # # Licensed under the Apache License, Version 2.0 (the "License"); -# You may not use this file except in compliance with the License. -# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# Authors: -# - Vincent Garonne, , 2013 -# - Thomas Beermann, , 2019 +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Probe to check the backlog of dids waiting for rule evaluation. From bc0cca4d65a9720b94a6e28e8431e413100f11d2 Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:22:46 +0200 Subject: [PATCH 3/7] Common: Port query to SQLAlchemy 2.0 syntax --- common/check_unevaluated_dids | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index b135157..03043d0 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -20,20 +20,22 @@ Probe to check the backlog of dids waiting for rule evaluation. import sys from prometheus_client import CollectorRegistry, Gauge, push_to_gateway +from sqlalchemy import func, select + from rucio.common.config import config_get -from rucio.db.sqla.session import BASE, get_session +from rucio.db.sqla import models +from rucio.db.sqla.session import get_session from utils.common import probe_metrics # Exit statuses OK, WARNING, CRITICAL, UNKNOWN = 0, 1, 2, 3 -if BASE.metadata.schema: - schema = BASE.metadata.schema + '.' -else: - schema = '' - -count_sql = 'SELECT COUNT(*) FROM {schema}updated_dids'.format(schema=schema) +count_sql = select( + func.count() +).select_from( + models.UpdatedDID +) PROM_SERVERS = config_get('monitor', 'prometheus_servers', raise_exception=False, default='') if PROM_SERVERS != '': @@ -42,7 +44,7 @@ if PROM_SERVERS != '': if __name__ == "__main__": try: session = get_session() - result = session.execute(count_sql).fetchone()[0] + result = session.execute(count_sql).scalar_one() probe_metrics.gauge(name='judge.waiting_dids').set(result) registry = CollectorRegistry() From 6a5123a0a15172bff54cbf3f0199bea1dc5ce52d Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:24:05 +0200 Subject: [PATCH 4/7] Common: Simplify configuration handling --- common/check_unevaluated_dids | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index 03043d0..df3dca6 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -22,7 +22,7 @@ import sys from prometheus_client import CollectorRegistry, Gauge, push_to_gateway from sqlalchemy import func, select -from rucio.common.config import config_get +from rucio.common.config import config_get_list from rucio.db.sqla import models from rucio.db.sqla.session import get_session @@ -37,9 +37,7 @@ count_sql = select( models.UpdatedDID ) -PROM_SERVERS = config_get('monitor', 'prometheus_servers', raise_exception=False, default='') -if PROM_SERVERS != '': - PROM_SERVERS = PROM_SERVERS.split(',') +PROM_SERVERS = config_get_list('monitor', 'prometheus_servers', raise_exception=False, default=[]) if __name__ == "__main__": try: @@ -50,12 +48,11 @@ if __name__ == "__main__": registry = CollectorRegistry() Gauge('judge_waiting_dids', '', registry=registry).set(result) - if len(PROM_SERVERS): - for server in PROM_SERVERS: - try: - push_to_gateway(server.strip(), job='check_unevaluated_dids', registry=registry) - except: - continue + for server in PROM_SERVERS: + try: + push_to_gateway(server.strip(), job='check_unevaluated_dids', registry=registry) + except: + continue print(result) except: From bfbf5f70e2b57ec568eb2c4c1f287b02ac0579c0 Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:24:52 +0200 Subject: [PATCH 5/7] Common: Avoid bare except keyword --- common/check_unevaluated_dids | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index df3dca6..e1cf5bd 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -51,10 +51,10 @@ if __name__ == "__main__": for server in PROM_SERVERS: try: push_to_gateway(server.strip(), job='check_unevaluated_dids', registry=registry) - except: + except Exception: continue print(result) - except: + except Exception: sys.exit(UNKNOWN) sys.exit(OK) From 0eb9585686f8501d09be6281c621952d79eb7d67 Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 09:25:14 +0200 Subject: [PATCH 6/7] Common: Use quotes consistently --- common/check_unevaluated_dids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index e1cf5bd..2eb5c1c 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -39,7 +39,7 @@ count_sql = select( PROM_SERVERS = config_get_list('monitor', 'prometheus_servers', raise_exception=False, default=[]) -if __name__ == "__main__": +if __name__ == '__main__': try: session = get_session() result = session.execute(count_sql).scalar_one() From 86663a06093073dad02b0af9215c23de838db563 Mon Sep 17 00:00:00 2001 From: Dimitrios Christidis Date: Fri, 2 Aug 2024 10:08:16 +0200 Subject: [PATCH 7/7] Common: Remove unnecessary use of str.strip() --- common/check_unevaluated_dids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/check_unevaluated_dids b/common/check_unevaluated_dids index 2eb5c1c..0c5517a 100755 --- a/common/check_unevaluated_dids +++ b/common/check_unevaluated_dids @@ -50,7 +50,7 @@ if __name__ == '__main__': for server in PROM_SERVERS: try: - push_to_gateway(server.strip(), job='check_unevaluated_dids', registry=registry) + push_to_gateway(server, job='check_unevaluated_dids', registry=registry) except Exception: continue