swift: optimize metric reporting in detail mode
This only makes one listing request if details are requested. Change-Id: If637230b1d8913f1574f15dc9e93a5ecdac54fad
This commit is contained in:
parent
9bc426d901
commit
4390238970
@ -121,19 +121,23 @@ class SwiftStorage(_carbonara.CarbonaraBasedStorage):
|
|||||||
data)
|
data)
|
||||||
|
|
||||||
def _build_report(self, details):
|
def _build_report(self, details):
|
||||||
headers, files = self.swift.get_container(self.MEASURE_PREFIX,
|
|
||||||
delimiter='/',
|
|
||||||
full_listing=True)
|
|
||||||
metrics = len(files)
|
|
||||||
measures = int(headers.get('x-container-object-count'))
|
|
||||||
metric_details = defaultdict(int)
|
metric_details = defaultdict(int)
|
||||||
if details:
|
if details:
|
||||||
headers, files = self.swift.get_container(self.MEASURE_PREFIX,
|
headers, files = self.swift.get_container(self.MEASURE_PREFIX,
|
||||||
full_listing=True)
|
full_listing=True)
|
||||||
|
metrics = set()
|
||||||
for f in files:
|
for f in files:
|
||||||
metric = f['name'].split('/', 1)[0]
|
metric, metric_files = f['name'].split("/", 1)
|
||||||
metric_details[metric] += 1
|
metric_details[metric] += 1
|
||||||
return metrics, measures, metric_details if details else None
|
metrics.add(metric)
|
||||||
|
nb_metrics = len(metrics)
|
||||||
|
else:
|
||||||
|
headers, files = self.swift.get_container(self.MEASURE_PREFIX,
|
||||||
|
delimiter='/',
|
||||||
|
full_listing=True)
|
||||||
|
nb_metrics = len(files)
|
||||||
|
measures = int(headers.get('x-container-object-count'))
|
||||||
|
return nb_metrics, measures, metric_details if details else None
|
||||||
|
|
||||||
def list_metric_with_measures_to_process(self, size, part, full=False):
|
def list_metric_with_measures_to_process(self, size, part, full=False):
|
||||||
limit = None
|
limit = None
|
||||||
|
Loading…
Reference in New Issue
Block a user