Merge branch 'resource-usage'

This commit is contained in:
Santiago Lamora 2020-02-17 13:29:47 +01:00
commit c2a262ff17
3 changed files with 35 additions and 8 deletions

View file

@ -153,16 +153,37 @@ class DatabaseService(OrchestraModel):
if 'users' in data:
users = [DatabaseUser.new_from_json(user_data) for user_data in data['users']]
# TODO(@slamora) retrieve database usage
usage = {
'usage': 250,
'total': 500,
'unit': 'MB',
'percent': 50,
}
usage = cls.get_usage(data)
return super().new_from_json(data=data, users=users, usage=usage)
@classmethod
def get_usage(self, data):
try:
resources = data['resources']
resource_disk = {}
for r in resources:
if r['name'] == 'disk':
resource_disk = r
break
details = {
'usage': float(resource_disk['used']),
'total': resource_disk['allocated'],
'unit': resource_disk['unit'],
}
except (IndexError, KeyError):
return {}
percent = get_bootstraped_percent(
details['usage'],
details['total']
)
details['percent'] = percent
return details
class Domain(OrchestraModel):
api_name = 'domain'

View file

@ -67,3 +67,6 @@ class GetBootstrapedPercentTest(TestCase):
value = get_bootstraped_percent(-10, 100)
self.assertIn(value, self.BS_WIDTH)
self.assertEqual(value, 0)
def test_invalid_total_is_zero(self):
value = get_bootstraped_percent(25, 0)

View file

@ -4,8 +4,11 @@ def get_bootstraped_percent(value, total):
Useful to set progress bar width using CSS classes (e.g. w-25)
"""
try:
percent = value / total
except ZeroDivisionError:
return 0
percent = value / total
bootstraped = round(percent * 4) * 100 // 4
# handle min and max boundaries