Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions cloudinit/reporting/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,15 @@ class ReportEventStack(object):
:param result_on_exception:
The result value to set if an exception is caught. default
value is FAIL.

:param post_files:
Can hold filepaths of files that are to get posted/created
regarding a given event. Something like success or failure information
in a given log file. For each filepath, if it's a valid regular file
it will get: read & encoded as base64 at the close of the event.
Default value, if None, is an empty list.
"""

def __init__(self, name, description, message=None, parent=None,
reporting_enabled=None, result_on_exception=status.FAIL,
post_files=None):
Expand Down
18 changes: 18 additions & 0 deletions tests/unittests/test_reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ def test_as_dict(self):


class TestFinishReportingEvent(TestCase):

def test_as_has_result(self):
result = events.status.SUCCESS
name, desc = 'test_name', 'test_desc'
Expand All @@ -121,6 +122,23 @@ def test_as_has_result(self):
self.assertTrue('result' in ret)
self.assertEqual(ret['result'], result)

def test_has_result_with_optional_post_files(self):
result = events.status.SUCCESS
name, desc, files = 'test_name', 'test_desc', [
'/really/fake/path/install.log']
event = events.FinishReportingEvent(
name, desc, result, post_files=files)
ret = event.as_dict()
self.assertTrue('result' in ret)
self.assertTrue('files' in ret)
self.assertEqual(ret['result'], result)
posted_install_log = ret['files'][0]
self.assertTrue('path' in posted_install_log)
self.assertTrue('content' in posted_install_log)
self.assertTrue('encoding' in posted_install_log)
self.assertEqual(posted_install_log['path'], files[0])
self.assertEqual(posted_install_log['encoding'], 'base64')


class TestBaseReportingHandler(TestCase):

Expand Down
1 change: 1 addition & 0 deletions tools/.github-cla-signers
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ emmanuelthome
esposem
giggsoff
hamalq
irishgordo
izzyleung
johnsonshi
jordimassaguerpla
Expand Down