-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #238 from unicef-drp/investigate-ephemeral-storage
Investigate ephemeral storage
- Loading branch information
Showing
7 changed files
with
78 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
from .VersionMiddleware import VersionMiddleware | ||
from .version import VersionMiddleware | ||
from .ephemeral import EphemeralMiddleware |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
import subprocess | ||
from sentry_sdk import capture_message, configure_scope | ||
|
||
from core.models import SitePreferences | ||
|
||
|
||
def du(paths): | ||
"""disk usage for each path""" | ||
cmd = ['du', '-sc'] | ||
cmd.extend(paths) | ||
bytes_arr = subprocess.check_output(cmd).splitlines() | ||
return [b.decode('utf-8') for b in bytes_arr] | ||
|
||
|
||
class EphemeralMiddleware: | ||
"""Add Ephemeral information after API call.""" | ||
|
||
def __init__(self, get_response): | ||
self.get_response = get_response | ||
|
||
def __call__(self, request): | ||
response = self.get_response(request) | ||
pref = SitePreferences.preferences() | ||
if not pref.ephemeral_paths: | ||
return response | ||
|
||
resolver_match = getattr(request, 'resolver_match', None) | ||
possible_versions = [] | ||
if resolver_match and resolver_match.namespace: | ||
possible_versions = resolver_match.namespace.split(':') | ||
|
||
# check for layer tiles path | ||
is_layer_tiles = '/layer_tiles/' in request.path | ||
if possible_versions or is_layer_tiles: | ||
with configure_scope() as scope: | ||
sizes = du(pref.ephemeral_paths) | ||
for size in sizes: | ||
splits = size.split() | ||
if len(splits) == 2: | ||
scope.set_extra(splits[1], splits[0]) | ||
capture_message('Ephemeral Storage Event') | ||
return response |
File renamed without changes.
18 changes: 18 additions & 0 deletions
18
django_project/core/migrations/0033_sitepreferences_ephemeral_paths.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Generated by Django 4.0.7 on 2024-10-07 11:44 | ||
|
||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('core', '0032_sitepreferences_login_help_text'), | ||
] | ||
|
||
operations = [ | ||
migrations.AddField( | ||
model_name='sitepreferences', | ||
name='ephemeral_paths', | ||
field=models.JSONField(blank=True, default=list, help_text='List of path to monitor the size and send to sentry.', null=True), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21241e0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Coverage report for
django_project/dashboard
Test suite run success
12 tests passing in 5 suites.
Report generated by 🧪jest coverage report action from 21241e0