(fix) Fix builddata API issue

The builddata API was passing a kwarg
as a parameter causing a failure accessing
database.

Also update the log extraction to improve
description in the builddata

Change-Id: I01b4cbb14eea5c513a164818160fb10a693c4696
This commit is contained in:
Scott Hussey 2018-07-31 13:21:39 -05:00
parent 246775da42
commit 7b6af1bdc9
2 changed files with 18 additions and 16 deletions

View File

@ -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

View File

@ -52,14 +52,15 @@ 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:
if r.get_decoded_data():
bd = objects.BuildData(
node_name=node.name,
task_id=self.task.task_id,
collected_date=r.updated,
generator=data_gen,
generator="{}:{}".format(stage, r.name),
data_format='text/plain',
data_element=r.get_decoded_data())
self.state_manager.post_build_data(bd)
@ -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()