Merge ~newell-jensen/maas:lp1828310 into maas:master

Proposed by Newell Jensen
Status: Merged
Approved by: Newell Jensen
Approved revision: 854cd754bc5384cf8f7c8d5243a9fc0accafe598
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~newell-jensen/maas:lp1828310
Merge into: maas:master
Diff against target: 100 lines (+39/-11)
2 files modified
src/metadataserver/api_twisted.py (+5/-4)
src/metadataserver/tests/test_api_twisted.py (+34/-7)
Reviewer Review Type Date Requested Status
Lee Trager (community) Approve
Blake Rouse (community) Approve
Review via email: mp+367703@code.launchpad.net

Commit message

LP: #1828310 -- Only log start and failure messages from cloud-init and curtin.

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) :
review: Needs Information
Revision history for this message
Newell Jensen (newell-jensen) :
Revision history for this message
Blake Rouse (blake-rouse) :
~newell-jensen/maas:lp1828310 updated
0c315aa... by Newell Jensen

Review fixes.

Revision history for this message
Newell Jensen (newell-jensen) wrote :

Updated to use the original tests with 'start'. My previous changes didn't nullify the tests, it just took out the events that were no longer being created, however this shows that the previous tests also work with 'start' and that the events are created.

Revision history for this message
Blake Rouse (blake-rouse) wrote :

Thanks for the fixes.

review: Approve
Revision history for this message
Lee Trager (ltrager) wrote :

Looks good one small suggestion. maasserver.preseed defines CURTIN_INSTALL_LOG as /tmp/install.log. I would use that instead of hard coding it instead we ever need to change the location.

review: Approve
~newell-jensen/maas:lp1828310 updated
854cd75... by Newell Jensen

Replace /tmp/install.log with CURTIN_INSTALL_LOG

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/metadataserver/api_twisted.py b/src/metadataserver/api_twisted.py
index 9b30d89..e1d5ded 100644
--- a/src/metadataserver/api_twisted.py
+++ b/src/metadataserver/api_twisted.py
@@ -306,10 +306,11 @@ class StatusWorkerService(TimerService, object):
306 failed = result in ['FAIL', 'FAILURE']306 failed = result in ['FAIL', 'FAILURE']
307 default_exit_status = 1 if failed else 0307 default_exit_status = 1 if failed else 0
308308
309 # Add this event to the node event log.309 # Add this event to the node event log if 'start' or a 'failure'.
310 add_event_to_node_event_log(310 if event_type == 'start' or failed:
311 node, origin, activity_name, description, event_type, result,311 add_event_to_node_event_log(
312 message['timestamp'])312 node, origin, activity_name, description, event_type, result,
313 message['timestamp'])
313314
314 # Group files together with the ScriptResult they belong.315 # Group files together with the ScriptResult they belong.
315 results = {}316 results = {}
diff --git a/src/metadataserver/tests/test_api_twisted.py b/src/metadataserver/tests/test_api_twisted.py
index 81b6fbf..4c2add2 100644
--- a/src/metadataserver/tests/test_api_twisted.py
+++ b/src/metadataserver/tests/test_api_twisted.py
@@ -376,6 +376,22 @@ class TestStatusWorkerService(MAASServerTestCase):
376 worker = StatusWorkerService(sentinel.dbtasks)376 worker = StatusWorkerService(sentinel.dbtasks)
377 return worker._processMessage(node, payload)377 return worker._processMessage(node, payload)
378378
379 def test_process_message_logs_event_for_start_event_type(self):
380 node = factory.make_Node(
381 status=NODE_STATUS.DEPLOYING, with_empty_script_sets=True)
382 payload = {
383 'event_type': 'start',
384 'origin': 'curtin',
385 'name': 'cmd-install',
386 'description': 'Installation has started.',
387 'timestamp': datetime.utcnow(),
388 }
389 self.processMessage(node, payload)
390 event = Event.objects.last()
391 self.assertEqual(
392 event.description,
393 CURTIN_INSTALL_LOG + " changed status from 'Pending' to 'Running'")
394
379 def test_process_message_returns_false_when_node_deleted(self):395 def test_process_message_returns_false_when_node_deleted(self):
380 node1 = factory.make_Node(status=NODE_STATUS.DEPLOYING)396 node1 = factory.make_Node(status=NODE_STATUS.DEPLOYING)
381 node1.delete()397 node1.delete()
@@ -390,10 +406,15 @@ class TestStatusWorkerService(MAASServerTestCase):
390 self.assertFalse(self.processMessage(node1, payload))406 self.assertFalse(self.processMessage(node1, payload))
391407
392 def test_status_installation_result_does_not_affect_other_node(self):408 def test_status_installation_result_does_not_affect_other_node(self):
393 node1 = factory.make_Node(status=NODE_STATUS.DEPLOYING)409 node1 = factory.make_Node(
410 status=NODE_STATUS.DEPLOYING, with_empty_script_sets=True)
394 node2 = factory.make_Node(status=NODE_STATUS.DEPLOYING)411 node2 = factory.make_Node(status=NODE_STATUS.DEPLOYING)
412 script = factory.make_Script(may_reboot=True)
413 factory.make_ScriptResult(
414 script=script, script_set=node1.current_installation_script_set,
415 status=SCRIPT_STATUS.RUNNING)
395 payload = {416 payload = {
396 'event_type': 'finish',417 'event_type': 'start',
397 'result': 'SUCCESS',418 'result': 'SUCCESS',
398 'origin': 'curtin',419 'origin': 'curtin',
399 'name': 'cmd-install',420 'name': 'cmd-install',
@@ -405,15 +426,21 @@ class TestStatusWorkerService(MAASServerTestCase):
405 NODE_STATUS.DEPLOYING, reload_object(node2).status)426 NODE_STATUS.DEPLOYING, reload_object(node2).status)
406 # Check last node1 event.427 # Check last node1 event.
407 self.assertEqual(428 self.assertEqual(
408 "'curtin' Command Install",429 CURTIN_INSTALL_LOG + " changed status from 'Pending' to 'Running'",
409 Event.objects.filter(node=node1).last().description)430 Event.objects.filter(node=node1).last().description)
410 # There must me no events for node2.431 # There must be no events for node2.
411 self.assertFalse(Event.objects.filter(node=node2).exists())432 self.assertFalse(Event.objects.filter(node=node2).exists())
412433
413 def test_status_installation_success_leaves_node_deploying(self):434 def test_status_installation_success_leaves_node_deploying(self):
414 node = factory.make_Node(interface=True, status=NODE_STATUS.DEPLOYING)435 node = factory.make_Node(
436 interface=True, status=NODE_STATUS.DEPLOYING,
437 with_empty_script_sets=True)
438 script = factory.make_Script(may_reboot=True)
439 factory.make_ScriptResult(
440 script=script, script_set=node.current_installation_script_set,
441 status=SCRIPT_STATUS.RUNNING)
415 payload = {442 payload = {
416 'event_type': 'finish',443 'event_type': 'start',
417 'result': 'SUCCESS',444 'result': 'SUCCESS',
418 'origin': 'curtin',445 'origin': 'curtin',
419 'name': 'cmd-install',446 'name': 'cmd-install',
@@ -424,7 +451,7 @@ class TestStatusWorkerService(MAASServerTestCase):
424 self.assertEqual(NODE_STATUS.DEPLOYING, reload_object(node).status)451 self.assertEqual(NODE_STATUS.DEPLOYING, reload_object(node).status)
425 # Check last node event.452 # Check last node event.
426 self.assertEqual(453 self.assertEqual(
427 "'curtin' Command Install",454 "/tmp/install.log changed status from 'Pending' to 'Running'",
428 Event.objects.filter(node=node).last().description)455 Event.objects.filter(node=node).last().description)
429456
430 def test_status_commissioning_failure_leaves_node_failed(self):457 def test_status_commissioning_failure_leaves_node_failed(self):

Subscribers

People subscribed via source and target branches