示例#1
0
 def __init__(self, namespace, default_discovery=None):
     super(AgentManager, self).__init__()
     default_discovery = default_discovery or []
     self.default_discovery = default_discovery
     self.pollster_manager = self._extensions('poll', namespace)
     self.discovery_manager = self._extensions('discover')
     self.context = context.RequestContext('admin', 'admin', is_admin=True)
    def test_notification_service(self, fake_publisher_cls):
        self.srv.start()

        fake_publisher = fake_publisher_cls.return_value
        fake_publisher.publish_samples.side_effect = \
            lambda *args: self.srv.stop()

        notifier = messaging.get_notifier("compute.vagrant-precise")
        notifier.info(context.RequestContext(), 'compute.instance.create.end',
                      TEST_NOTICE_PAYLOAD)

        self.srv.listeners[0].wait()

        class SamplesMatcher(object):
            def __eq__(self, samples):
                for s in samples:
                    if s.resource_id != "9f9d01b9-4a58-4271-9e27-398b21ab20d1":
                        return False
                return True

        fake_publisher.publish_samples.assert_has_calls([
            mock.call(mock.ANY, SamplesMatcher()),
            mock.call(mock.ANY, SamplesMatcher()),
            mock.call(mock.ANY, SamplesMatcher()),
            mock.call(mock.ANY, SamplesMatcher()),
            mock.call(mock.ANY, SamplesMatcher()),
        ])
示例#3
0
    def __init__(self, extension_manager):
        self.pipeline_manager = pipeline.setup_pipeline(
            transformer.TransformerExtensionManager(
                'ceilometer.transformer', ), )

        self.pollster_manager = extension_manager

        self.context = context.RequestContext('admin', 'admin', is_admin=True)
示例#4
0
 def __init__(self, namespace, default_discovery=None, group_prefix=None):
     super(AgentManager, self).__init__()
     default_discovery = default_discovery or []
     self.default_discovery = default_discovery
     self.pollster_manager = self._extensions('poll', namespace)
     self.discovery_manager = self._extensions('discover')
     self.context = context.RequestContext('admin', 'admin', is_admin=True)
     self.partition_coordinator = coordination.PartitionCoordinator()
     self.group_prefix = ('%s-%s' % (namespace, group_prefix)
                          if group_prefix else namespace)
示例#5
0
    def test_collector_no_mock(self, mylog):
        self.CONF.set_override('udp_address', '', group='collector')
        self.srv.start()
        mylog.info.side_effect = lambda *args: self.srv.stop()

        client = messaging.get_rpc_client(self.transport, version='1.0')
        cclient = client.prepare(topic='metering')
        cclient.cast(context.RequestContext(),
                     'record_metering_data', data=[self.utf8_msg])

        self.srv.rpc_server.wait()
        mylog.info.assert_called_once_with(
            'metering data test for test_run_tasks: 1')
示例#6
0
    def _check_notification_service(self):
        self.srv.start()

        notifier = messaging.get_notifier(self.transport,
                                          "compute.vagrant-precise")
        notifier.info(context.RequestContext(), 'compute.instance.create.end',
                      TEST_NOTICE_PAYLOAD)
        start = timeutils.utcnow()
        while timeutils.delta_seconds(start, timeutils.utcnow()) < 600:
            if len(self.publisher.samples) >= self.expected_samples:
                break
            eventlet.sleep(0)

        self.srv.stop()

        resources = list(set(s.resource_id for s in self.publisher.samples))
        self.assertEqual(self.expected_samples, len(self.publisher.samples))
        self.assertEqual(["9f9d01b9-4a58-4271-9e27-398b21ab20d1"], resources)
示例#7
0
    def test_published_no_mock(self):
        publisher = rpc.RPCPublisher(network_utils.urlsplit('rpc://'))

        endpoint = mock.MagicMock(['record_metering_data'])
        collector = messaging.get_rpc_server(
            self.transport, self.CONF.publisher_rpc.metering_topic, endpoint)
        endpoint.record_metering_data.side_effect = (
            lambda *args, **kwds: collector.stop())

        collector.start()
        eventlet.sleep()
        publisher.publish_samples(context.RequestContext(), self.test_data)
        collector.wait()

        class Matcher(object):
            @staticmethod
            def __eq__(data):
                for i, sample_item in enumerate(data):
                    if sample_item['counter_name'] != self.test_data[i].name:
                        return False
                return True

        endpoint.record_metering_data.assert_called_once_with(mock.ANY,
                                                              data=Matcher())
示例#8
0
    def __init__(self, namespaces, pollster_list, group_prefix=None):
        super(AgentManager, self).__init__()

        def _match(pollster):
            """Find out if pollster name matches to one of the list."""
            return any(fnmatch.fnmatch(pollster.name, pattern) for
                       pattern in pollster_list)

        # features of using coordination and pollster-list are exclusive, and
        # cannot be used at one moment to avoid both samples duplication and
        # samples being lost
        if pollster_list and cfg.CONF.coordination.backend_url:
            raise PollsterListForbidden()

        if type(namespaces) is not list:
            namespaces = [namespaces]

        # we'll have default ['compute', 'central'] here if no namespaces will
        # be passed
        extensions = (self._extensions('poll', namespace).extensions
                      for namespace in namespaces)
        if pollster_list:
            extensions = (itertools.ifilter(_match, exts)
                          for exts in extensions)

        self.extensions = list(itertools.chain(*list(extensions)))

        self.discovery_manager = self._extensions('discover')
        self.context = context.RequestContext('admin', 'admin', is_admin=True)
        self.partition_coordinator = coordination.PartitionCoordinator()

        # Compose coordination group prefix.
        # We'll use namespaces as the basement for this partitioning.
        namespace_prefix = '-'.join(sorted(namespaces))
        self.group_prefix = ('%s-%s' % (namespace_prefix, group_prefix)
                             if group_prefix else namespace_prefix)
示例#9
0
 def start(self):
     super(PeriodicService, self).start()
     admin_context = context.RequestContext('admin', 'admin', is_admin=True)
     self.tg.add_timer(cfg.CONF.periodic_interval,
                       self.manager.periodic_tasks,
                       context=admin_context)
示例#10
0
 def deserialize_context(ctxt):
     return context.RequestContext(ctxt)
示例#11
0
 def setUp(self):
     super(TestImagePollster, self).setUp()
     self.context = context.RequestContext('admin', 'admin', is_admin=True)
     self.manager = manager.AgentManager()
     self.stubs.Set(glance._Base, 'iter_images',
                    self.fake_glance_iter_images)
示例#12
0
    def __init__(self, extension_manager):

        self.pollster_manager = extension_manager

        self.context = context.RequestContext('admin', 'admin', is_admin=True)
示例#13
0
文件: agent.py 项目: dbase/monitoring
    def __init__(self, extension_manager):
        super(AgentManager, self).__init__()

        self.pollster_manager = extension_manager

        self.context = context.RequestContext('admin', 'admin', is_admin=True)