oarepo-runtime 1.5.64__py3-none-any.whl → 1.5.65__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- oarepo_runtime/info/check.py +96 -0
- oarepo_runtime/tasks.py +6 -0
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/RECORD +8 -6
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/entry_points.txt +2 -0
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.5.64.dist-info → oarepo_runtime-1.5.65.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
import json, random
|
2
|
+
from flask import Response, Blueprint
|
3
|
+
from flask import current_app as flask_current_app
|
4
|
+
from invenio_db import db # sql alchemy session
|
5
|
+
from invenio_cache import current_cache # redis
|
6
|
+
import redis
|
7
|
+
from invenio_search import current_search_client # opensearch
|
8
|
+
from celery import current_app as celery_current_app, shared_task
|
9
|
+
|
10
|
+
|
11
|
+
def check_db_connection():
|
12
|
+
if not has_database_connection():
|
13
|
+
return "DB connection failed"
|
14
|
+
else:
|
15
|
+
return "ok"
|
16
|
+
|
17
|
+
def has_database_connection():
|
18
|
+
try:
|
19
|
+
db.session.begin()
|
20
|
+
db.session.execute("select * from alembic_version").scalar()
|
21
|
+
return True
|
22
|
+
except:
|
23
|
+
return False
|
24
|
+
finally:
|
25
|
+
db.session.rollback()
|
26
|
+
|
27
|
+
def check_cache_connection():
|
28
|
+
try:
|
29
|
+
rand = random.randint(1, 1000)
|
30
|
+
if current_cache.set('mykey', str(rand)):
|
31
|
+
val = current_cache.get('mykey')
|
32
|
+
if val == str(rand):
|
33
|
+
return "ok"
|
34
|
+
else:
|
35
|
+
return "Cache returned unexpected value."
|
36
|
+
else:
|
37
|
+
return "Failed to set cache key."
|
38
|
+
except redis.exceptions.ConnectionError as e:
|
39
|
+
if isinstance(e.__cause__, ConnectionRefusedError):
|
40
|
+
return "Cache connection error"
|
41
|
+
return "Cache exception"
|
42
|
+
except Exception as other:
|
43
|
+
return str(other)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
# https://github.com/celery/celery/issues/4283
|
48
|
+
def check_message_queue():
|
49
|
+
from kombu.exceptions import OperationalError
|
50
|
+
try:
|
51
|
+
#celery_current_app.autodiscover_tasks(['oarepo_runtime.info'])
|
52
|
+
ping_task = celery_current_app.send_task('ping')
|
53
|
+
if ping_task.get(timeout=2) == 'pong':
|
54
|
+
return "ok"
|
55
|
+
except OperationalError as e:
|
56
|
+
if isinstance(e.__cause__, ConnectionRefusedError):
|
57
|
+
return "RabbitMQ connection refused"
|
58
|
+
return "Other RabbitMQ-related error"
|
59
|
+
except Exception as other:
|
60
|
+
return str(other)
|
61
|
+
|
62
|
+
|
63
|
+
def check_opensearch():
|
64
|
+
try:
|
65
|
+
is_available = current_search_client.ping()
|
66
|
+
if is_available:
|
67
|
+
return "ok"
|
68
|
+
else:
|
69
|
+
return "OpenSearch is not available"
|
70
|
+
except Exception as e:
|
71
|
+
return str(e)
|
72
|
+
|
73
|
+
|
74
|
+
blueprint = Blueprint("repository-check", __name__, url_prefix="/.well-known")
|
75
|
+
|
76
|
+
@blueprint.route("/check")
|
77
|
+
def check_connections() -> Response:
|
78
|
+
"""
|
79
|
+
Function to check all necessary connections (database, redis, rabbitmq, opensearch)
|
80
|
+
Return Response 200 if everything is OK or Response 500 with json and all failed tests
|
81
|
+
"""
|
82
|
+
check_list = {}
|
83
|
+
with flask_current_app.app_context():
|
84
|
+
check_list['db'] = check_db_connection()
|
85
|
+
check_list['cache'] = check_cache_connection()
|
86
|
+
check_list['mq'] = check_message_queue()
|
87
|
+
check_list['opensearch'] = check_opensearch()
|
88
|
+
|
89
|
+
failed_checks = {key: value for key, value in check_list.items() if value != 'ok'}
|
90
|
+
|
91
|
+
if failed_checks:
|
92
|
+
return Response(json.dumps(failed_checks), status=500, content_type='application/json')
|
93
|
+
|
94
|
+
return Response(json.dumps(check_list), status=200, content_type='application/json') # good
|
95
|
+
|
96
|
+
|
oarepo_runtime/tasks.py
ADDED
@@ -3,6 +3,7 @@ oarepo_runtime/ext.py,sha256=zatf-tujtuP1Flo34p_5GJ38yKxzkAz0ENBjljapPlA,2373
|
|
3
3
|
oarepo_runtime/ext_config.py,sha256=NiXqgag3QJABf06r5NiDYjd9AvoYoRY9UWiplo8Vcg4,2056
|
4
4
|
oarepo_runtime/profile.py,sha256=QzrQoZncjoN74ZZnpkEKakNk08KCzBU7m6y42RN8AMY,1637
|
5
5
|
oarepo_runtime/proxies.py,sha256=NN_WNj1xuKc-OveoZmzvTFlUonNjSmLIGsv_JUcHGls,285
|
6
|
+
oarepo_runtime/tasks.py,sha256=AciXN1fUq6tzfzNSICh1S6XoHGWiuH76bUqXyzTsOPU,140
|
6
7
|
oarepo_runtime/uow.py,sha256=iyF3R2oCPSVUu38GXoxZallgRD-619q1fWTb8sSaeyQ,4412
|
7
8
|
oarepo_runtime/cli/__init__.py,sha256=daAODgUAB9Nb0O0Kg8vSgJIPKJm92EHMTRuoKwxBCug,373
|
8
9
|
oarepo_runtime/cli/assets.py,sha256=Yrg9O2dXmrOGH87_3SNxmgrgyt2w4ZzkvQQJVTmLZjk,3634
|
@@ -41,6 +42,7 @@ oarepo_runtime/datastreams/writers/validation_errors.py,sha256=wOCXdniR6so_4Expd
|
|
41
42
|
oarepo_runtime/datastreams/writers/yaml.py,sha256=XchUJHQ58E2Mfgs8elImXbL38jFtI8Hfoye6yaR0gKI,1482
|
42
43
|
oarepo_runtime/i18n/__init__.py,sha256=h0knW_HwiyIt5TBHfdGqN7_BBYfpz1Fw6zhVy0C28fM,111
|
43
44
|
oarepo_runtime/info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
oarepo_runtime/info/check.py,sha256=WWAqMIBmc7veQKflRBe97_PoDsvJ1DrDrJuTDNeGDaI,3076
|
44
46
|
oarepo_runtime/info/views.py,sha256=UkLGzf6Vo8GLutfzJW3IAyq9sdPexICUFAvz903autY,11829
|
45
47
|
oarepo_runtime/records/__init__.py,sha256=3vzRsAPxl4d5QOnGyls-vUg4E6PunmR4ACObtacMAIQ,1038
|
46
48
|
oarepo_runtime/records/dumpers/__init__.py,sha256=OmzNhLdMNKibmCksnj9eTX9xPBG30dziiK3j3bAAp3k,233
|
@@ -119,9 +121,9 @@ oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
119
121
|
oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
|
120
122
|
oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
|
121
123
|
tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
|
-
oarepo_runtime-1.5.
|
123
|
-
oarepo_runtime-1.5.
|
124
|
-
oarepo_runtime-1.5.
|
125
|
-
oarepo_runtime-1.5.
|
126
|
-
oarepo_runtime-1.5.
|
127
|
-
oarepo_runtime-1.5.
|
124
|
+
oarepo_runtime-1.5.65.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
125
|
+
oarepo_runtime-1.5.65.dist-info/METADATA,sha256=ZgBG9WKIQEODgFiYua5ZpiwmylRyGKmT2tIXq7mQDGo,4720
|
126
|
+
oarepo_runtime-1.5.65.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
127
|
+
oarepo_runtime-1.5.65.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
|
128
|
+
oarepo_runtime-1.5.65.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
|
129
|
+
oarepo_runtime-1.5.65.dist-info/RECORD,,
|
@@ -5,7 +5,9 @@ oarepo_runtime = oarepo_runtime.ext:OARepoRuntime
|
|
5
5
|
oarepo_runtime = oarepo_runtime.ext:OARepoRuntime
|
6
6
|
|
7
7
|
[invenio_base.blueprints]
|
8
|
+
oarepo_runtime_check = oarepo_runtime.info.check:blueprint
|
8
9
|
oarepo_runtime_info = oarepo_runtime.info.views:create_wellknown_blueprint
|
9
10
|
|
10
11
|
[invenio_celery.tasks]
|
12
|
+
oarepo_runtime_check = oarepo_runtime.tasks
|
11
13
|
oarepo_runtime_datastreams = oarepo_runtime.datastreams
|
File without changes
|
File without changes
|
File without changes
|