def test_keys_cannot_be_replaced(self): registry = DictRegistry() item_key = 'test_key' registry.register_item(item_key, mock.Mock()) self.assertRaises(ValueError, registry.register_item, item_key, mock.Mock())
def test_added_item_included_in_output(self): registry = DictRegistry() item_key, item_to_register = 'test_key', mock.Mock() registry.register_item(item_key, item_to_register) self.assertEqual({item_key: item_to_register}, registry.registered_items)
def test_modifying_registered_items_isnt_exposed_to_other_callers(self): registry = DictRegistry() registry.registered_items['test_item'] = mock.Mock() self.assertEqual({}, registry.registered_items)
def test_registry_starts_out_empty(self): self.assertEqual({}, DictRegistry().registered_items)
self._append_kvp_item(encoded_data) except (OSError, IOError) as e: LOG.warning("failed posting events to kvp, %s", e) finally: for _ in range(items_from_queue): self.q.task_done() # when main process exits, q.get() will through EOFError # indicating we should exit this thread. except EOFError: return # since the saving to the kvp pool can be a time costing task # if the kvp pool already contains a chunk of data, # so defer it to another thread. def publish_event(self, event): if not self._event_types or event.event_type in self._event_types: self.q.put(event) def flush(self): LOG.debug('HyperVReportingHandler flushing remaining events') self.q.join() available_handlers = DictRegistry() available_handlers.register_item('log', LogHandler) available_handlers.register_item('print', PrintHandler) available_handlers.register_item('webhook', WebHookHandler) available_handlers.register_item('hyperv', HyperVKvpReportingHandler) # vi: ts=4 expandtab
if value not in status: raise ValueError("'%s' not a valid result" % value) self._result = value @property def message(self): if self._message is not None: return self._message return self.description @message.setter def message(self, value): self._message = value def _finish_info(self, exc): # return tuple of description, and value if exc: return (self.result_on_exception, self.message) return self._childrens_finish_info() def __exit__(self, exc_type, exc_value, traceback): (result, msg) = self._finish_info(exc_value) if self.parent: self.parent.children[self.name] = (result, msg) if self.reporting_enabled: report_finish_event(self.fullname, msg, result) instantiated_handler_registry = DictRegistry() update_configuration(DEFAULT_CONFIG)
import abc import logging from cloudinit.registry import DictRegistry FINISH_EVENT_TYPE = 'finish' START_EVENT_TYPE = 'start' DEFAULT_CONFIG = { 'logging': { 'type': 'log' }, } instantiated_handler_registry = DictRegistry() available_handlers = DictRegistry() class ReportingEvent(object): """Encapsulation of event formatting.""" def __init__(self, event_type, name, description): self.event_type = event_type self.name = name self.description = description def as_string(self): """The event represented as a string.""" return '{0}: {1}: {2}'.format(self.event_type, self.name, self.description)