Ejemplo n.º 1
0
 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())
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 def test_registry_starts_out_empty(self):
     self.assertEqual({}, DictRegistry().registered_items)
Ejemplo n.º 5
0
                    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
Ejemplo n.º 6
0
        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)
Ejemplo n.º 7
0
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)