Source code for lavatory.utils.performance
"""Performance comparison"""
import logging
from humanfriendly import format_number, format_size, parse_size
LOG = logging.getLogger(__name__)
[docs]def get_performance_report(repo_name, old_info, new_info):
"""compares retention policy performance, showing old amount of space and new.
Args:
repo_name (str): Name of repository
old_info (dict): Metadata of repository before run
new_info (dict): Metadata of repository after run
"""
old_space = _get_human_friendly_used_space(old_info)
new_space = _get_human_friendly_used_space(new_info)
old_files = old_info["filesCount"]
new_files = new_info["filesCount"]
LOG.info("%s size: %s; reduction: storage %s (%.1f%%), files %s (%.1f%%)", repo_name,
format_size(new_space),
format_size(new_space - old_space),
get_percentage(old_space, new_space),
format_number(new_files - old_files), get_percentage(old_files, new_files))
def _get_human_friendly_used_space(info):
return parse_size(info['usedSpace'].replace(',', ''))
[docs]def get_percentage(old, new):
"""Gets percentage from old and new values
Args:
old (num): old value
new (num): new value
Returns:
number: Percentage, or zero if none
"""
try:
return 100 * (old - new) / old
except ZeroDivisionError:
return 0