diff --git a/drydock_provisioner/control/tasks.py b/drydock_provisioner/control/tasks.py index fc4d4f2f..086e2d68 100644 --- a/drydock_provisioner/control/tasks.py +++ b/drydock_provisioner/control/tasks.py @@ -398,12 +398,14 @@ class TaskBuilddataResource(StatefulResource): @policy.ApiEnforcer('physical_provisioner:read_build_data') def on_get(self, req, resp, task_id): try: - bd_list = self.state_manager.get_build_data(task_id=task_id) + bd_list = self.state_manager.get_build_data(task_id=uuid.UUID(task_id)) if not bd_list: resp.status = falcon.HTTP_404 return - resp.body = json.dumps(bd_list) + resp.body = json.dumps([bd.to_dict() for bd in bd_list]) except Exception as e: + self.error(req.context, "Unknown error: %s" % (str(e))) resp.body = "Unexpected error." resp.status = falcon.HTTP_500 + return resp.status = falcon.HTTP_200 diff --git a/drydock_provisioner/drivers/node/maasdriver/actions/node.py b/drydock_provisioner/drivers/node/maasdriver/actions/node.py index bac81ca7..05636953 100644 --- a/drydock_provisioner/drivers/node/maasdriver/actions/node.py +++ b/drydock_provisioner/drivers/node/maasdriver/actions/node.py @@ -52,17 +52,18 @@ class BaseMaasAction(BaseAction): self.logger = logging.getLogger( config.config_mgr.conf.logging.nodedriver_logger_name) - def _add_detail_logs(self, node, machine, data_gen, result_type='all'): + def _add_detail_logs(self, node, machine, stage, result_type='all'): result_details = machine.get_task_results(result_type=result_type) for r in result_details: - bd = objects.BuildData( - node_name=node.name, - task_id=self.task.task_id, - collected_date=r.updated, - generator=data_gen, - data_format='text/plain', - data_element=r.get_decoded_data()) - self.state_manager.post_build_data(bd) + if r.get_decoded_data(): + bd = objects.BuildData( + node_name=node.name, + task_id=self.task.task_id, + collected_date=r.updated, + generator="{}:{}".format(stage, r.name), + data_format='text/plain', + data_element=r.get_decoded_data()) + self.state_manager.post_build_data(bd) log_href = "%s/tasks/%s/builddata" % ( get_internal_api_href("v1.0"), str(self.task.task_id)) self.task.result.add_link('detail_logs', log_href) @@ -1013,12 +1014,12 @@ class ConfigureHardware(BaseMaasAction): self._add_detail_logs( n, machine, - 'maas_commission_log', + 'commission', result_type='commissioning') self._add_detail_logs( n, machine, - 'maas_testing_log', + 'testing', result_type='testing') elif machine.status_name in ['Commissioning', 'Testing']: msg = "Located node %s in MaaS, node already being commissioned. Skipping..." % ( @@ -1052,6 +1053,7 @@ class ConfigureHardware(BaseMaasAction): except Exception as ex: msg = "Error commissioning node %s: %s" % (n.name, str(ex)) self.logger.warning(msg) + self.logger.debug("Unhandled exception attempting to commission node.", exc_info=ex) self.task.add_status_msg( msg=msg, error=True, ctx=n.name, ctx_type='node') self.task.failure(focus=n.get_id()) @@ -2172,10 +2174,8 @@ class DeployNode(BaseMaasAction): self.task.add_status_msg( msg=msg, error=True, ctx=n.name, ctx_type='node') self.task.failure(focus=n.get_id()) - self._add_detail_logs( - n, machine, 'maas_deploy_log', result_type='deploy') - + n, machine, 'deploy', result_type='deploy') self.task.set_status(hd_fields.TaskStatus.Complete) self.task.save()