in src/services/report_service.py [0:0]
def get_job_report(self, job: Job, detailed=None, customer=None,
cloud=None, tenant=None, region=None, instance_id=None):
_LOG.debug(f'Describing job storage')
job_storage = self.get_job_storage(job=job)
job_results = self.storage_service.download_job_results(
storage=job_storage,
job_id=job.id,
customer=customer,
cloud=cloud,
tenant=tenant,
region=region,
)
_LOG.debug(f'Job results: {job_results}')
if instance_id:
_LOG.debug(f'Filtering job results by instance id: {instance_id}')
job_results = [item for item in job_results
if item.get('instance_id') == instance_id]
if detailed:
_LOG.debug(f'Returning detailed results')
return job_results
_LOG.debug(f'Reformatting job results')
reformatted = []
for instance_data in job_results:
instance_data = {k: v for k, v in instance_data.items()
if k in RESULT_INSTANCE_ATTRIBUTES}
recommendation = instance_data.pop(REPORT_RECOMMENDATION_ATTR, None)
recommendation = {k:v for k, v in recommendation.items()
if k in RECOMMENDATION_ATTRIBUTES}
if not recommendation or not isinstance(recommendation, dict):
return
sizes = recommendation.get('recommended_shapes', [])
size_names = [item['name'] for item in sizes]
recommendation['recommended_shapes'] = size_names
schedule = recommendation.get('schedule')
readable_schedules = [self.get_readable_schedule(item)
for item in schedule]
readable_schedules = [schedule for schedule in readable_schedules
if schedule]
recommendation['schedule'] = readable_schedules
instance_data.update(recommendation)
_LOG.debug(f'Instance recommendation \'{instance_data}\'')
reformatted.append(instance_data)
_LOG.debug(f'Reformatted job results: \'{job_results}\'')
return reformatted