Skip to content

Commit 3a58841

Browse files
committed
Added route to watch used storage and max storage
1 parent 9a5e998 commit 3a58841

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

app/mongo_odm.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from gridfs import GridFSBucket, NoFile
1212
from pymodm import connect
1313
from pymodm.connection import _get_db
14-
from pymodm.errors import ValidationError
14+
from pymodm.errors import ValidationError, DoesNotExist
1515
from pymodm.files import GridFSStorage
1616
from pymongo import ReturnDocument
1717
from pymongo.errors import CollectionInvalid
@@ -81,7 +81,7 @@ def get_file(self, file_id):
8181
def _get_or_create_storage_meta(self):
8282
try:
8383
return StorageMeta.objects.get({})
84-
except StorageMeta.DoesNotExist:
84+
except DoesNotExist:
8585
meta = StorageMeta(used_size=0).save()
8686
return meta
8787

@@ -99,7 +99,7 @@ def update_storage_size(self, deltasize):
9999
meta.save()
100100

101101
def check_storage_limit(self, new_file_size):
102-
max_size = int(Config.c.constants.storage_max_size_bytes)*1024*1024
102+
max_size = int(Config.c.constants.storage_max_size_mbytes)*1024*1024
103103
current_size = self.get_used_storage_size()
104104
if current_size + new_file_size > max_size:
105105
logger.warning('current_size = {}, new file size = {}'.format(current_size, new_file_size))

app/routes/capacity.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from flask import Blueprint, render_template
2+
from app.mongo_odm import DBManager
3+
from app.config import Config
4+
from app.root_logger import get_root_logger
5+
from app.lti_session_passback.auth_checkers import is_admin
6+
7+
logger = get_root_logger()
8+
9+
routes_capacity = Blueprint(
10+
'routes_capacity', __name__, url_prefix='/capacity')
11+
12+
@routes_capacity.route('/', methods=['GET'])
13+
def storage_capacity():
14+
if not is_admin():
15+
return {}, 404
16+
current_size = DBManager().get_used_storage_size()
17+
max_size = int(Config.c.constants.storage_max_size_mbytes)*1024*1024
18+
ratio = current_size / max_size
19+
return render_template(
20+
'capacity.html',
21+
size=round(current_size / 1, 2),
22+
max_size=round(max_size / 1, 2),
23+
ratio=round(ratio * 100, 1)
24+
)
25+

app/templates/capacity.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{% extends 'base.html' %}
2+
3+
{% block content %}
4+
<div class="container mt-4">
5+
<div class="card">
6+
<div class="card-body">
7+
<h4 class="card-title">Загруженность Базы Данных</h4>
8+
<p><strong>Использовано:</strong> {{ size }} байт</p>
9+
<p><strong>Максимум:</strong> {{ max_size }} байт</p>
10+
<p><strong>Заполнено:</strong> {{ ratio }}%</p>
11+
<div class="progress">
12+
<div class="progress-bar" role="progressbar" style="width: {{ ratio }}%;" aria-valuenow="{{ ratio }}" aria-valuemin="0" aria-valuemax="100">
13+
{{ ratio }}
14+
</div>
15+
</div>
16+
</div>
17+
</div>
18+
</div>
19+
{% endblock %}

app/web_speech_trainer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from app.routes.presentations import routes_presentations
3131
from app.routes.trainings import routes_trainings
3232
from app.routes.version import routes_version
33+
from app.routes.capacity import routes_capacity
3334
from app.status import PassBackStatus, TrainingStatus
3435
from app.training_manager import TrainingManager
3536
from app.utils import ALLOWED_EXTENSIONS, DEFAULT_EXTENSION
@@ -53,6 +54,7 @@
5354
app.register_blueprint(routes_presentations)
5455
app.register_blueprint(routes_trainings)
5556
app.register_blueprint(routes_version)
57+
app.register_blueprint(routes_capacity)
5658

5759
logger = get_root_logger(service_name='web')
5860

app_conf/config.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ lti_consumer_key=secretconsumerkey
55
lti_consumer_secret=supersecretconsumersecret
66
version_file=VERSION.json
77
backup_path=../dump/database-dump/
8-
storage_max_size_bytes=5000
8+
storage_max_size_mbytes=20000
99

1010
[mongodb]
1111
url=mongodb://db:27017/

0 commit comments

Comments
 (0)