)]}'
{"ceilometer/agent/plugin_base.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c8348aacf4b85d44be34d14f7fddeeb4614a47f4","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            ]"},{"line_number":183,"context_line":"            for notifier in self.transporter:"},{"line_number":184,"context_line":"                notifier.sample(context.to_dict(),"},{"line_number":185,"context_line":"                                event_type\u003d\u0027pipeline.sample\u0027,"},{"line_number":186,"context_line":"                                payload\u003dmeters)"},{"line_number":187,"context_line":"        else:"},{"line_number":188,"context_line":"            with self.transporter.publisher(context) as p:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ff2a8ee5","line":185,"updated":"2015-01-15 06:08:36.000000000","message":"why change the event_type?","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            ]"},{"line_number":183,"context_line":"            for notifier in self.transporter:"},{"line_number":184,"context_line":"                notifier.sample(context.to_dict(),"},{"line_number":185,"context_line":"                                event_type\u003d\u0027pipeline.sample\u0027,"},{"line_number":186,"context_line":"                                payload\u003dmeters)"},{"line_number":187,"context_line":"        else:"},{"line_number":188,"context_line":"            with self.transporter.publisher(context) as p:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_72cf97b3","line":185,"in_reply_to":"3a961159_ff2a8ee5","updated":"2015-01-15 23:34:28.000000000","message":"i originally was debating publishing to the same queue but it made more sense to republish to different ipc queues.\n\ni\u0027ll revert this.","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"}],"ceilometer/event/endpoint.py":[{"author":{"_account_id":7049,"name":"Kai Qiang Wu(Kennan)","email":"wkq5325@gmail.com","username":"Kennan"},"change_message_id":"534b94830d5644374be99a793f5fc74de7376929","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":47,"context_line":"        \"\"\"Convert message to Ceilometer Event."}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_3bb16001","line":44,"updated":"2015-01-16 02:47:07.000000000","message":"seems above, if hasattr, requeue is False,  is the comment wrong ?","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"84e74bad59dd01c25d0c1ff3bc7a0aee2c482f4e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":47,"context_line":"        \"\"\"Convert message to Ceilometer Event."}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_367055a7","line":44,"in_reply_to":"3a961159_0f70a9a6","updated":"2015-01-19 14:39:02.000000000","message":"what Dina said. :)","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"9249e471a6c933d670f35b1de8f2ddcaa6a16bdd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":47,"context_line":"        \"\"\"Convert message to Ceilometer Event."}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_0f70a9a6","line":44,"in_reply_to":"3a961159_3bb16001","updated":"2015-01-19 10:08:20.000000000","message":"Gordon\u0027s note seems to be valid. \"publisher in place\" -\u003e \"no requeue\", \"no publisher\" -\u003e \"requeue\"","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"2fb65095ceb82fc37c306c8216888a728f13a639","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.event_converter \u003d event_converter.setup_events("},{"line_number":39,"context_line":"            extension.ExtensionManager("},{"line_number":40,"context_line":"                namespace\u003d\u0027ceilometer.event.trait_plugin\u0027))"},{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_9ba3a64e","line":41,"updated":"2015-01-29 10:53:18.000000000","message":"Could you please provide some more details about this scenario? What transporter may be here with no publisher?\nAnd why do we need to deal with an object whose goal is only to requeue?","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6be2a99a4707709844cb6d88fb5014f4bd503dde","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.event_converter \u003d event_converter.setup_events("},{"line_number":39,"context_line":"            extension.ExtensionManager("},{"line_number":40,"context_line":"                namespace\u003d\u0027ceilometer.event.trait_plugin\u0027))"},{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_25fc933e","line":41,"in_reply_to":"da86d52c_d481af4b","updated":"2015-02-02 03:48:51.000000000","message":"yep. we basically requeue so we can properly send samples/events to right pipeline (if not, the transformers will miss datapoints if you have multiple agents since they could be processed by different agents.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"aee7554ee014b7b3e38c4b46a8dcde94736765a4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.event_converter \u003d event_converter.setup_events("},{"line_number":39,"context_line":"            extension.ExtensionManager("},{"line_number":40,"context_line":"                namespace\u003d\u0027ceilometer.event.trait_plugin\u0027))"},{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_eb35a2f7","line":41,"in_reply_to":"fa81d914_9ba3a64e","updated":"2015-01-29 21:42:54.000000000","message":"this is similar to the existing. sample pipeline. basically when coordinated notification agents are enabled, it is a two step process:\n\nthe first set of listeners will read in notifications and the transporter will be a notifier which pushes the message to a pipeline endpoint(s).\n\nalternatively, if you don\u0027t have coordination enabled, the transporter will be a pipeline and it will process things as it does in juno (round robin... grabbing off queue)","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"0dc5cb802fbb0ef6591c0cbbc18f3c7d5405dd17","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.event_converter \u003d event_converter.setup_events("},{"line_number":39,"context_line":"            extension.ExtensionManager("},{"line_number":40,"context_line":"                namespace\u003d\u0027ceilometer.event.trait_plugin\u0027))"},{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_d481af4b","line":41,"in_reply_to":"fa81d914_eb35a2f7","updated":"2015-02-01 21:41:39.000000000","message":"Thanks so much for clarification! I\u0027ve found a comment in notifications.py\n\n\"When running multiple agents, additional queuing sequence is required for inter process communication. Each agent has two listeners: one to listen to the main OpenStack queue and another listener(and notifier) for IPC to divide pipeline sink endpoints\"\n\nAm I right that here and in existing \u0027sample\u0027 code if we have workload_partitioning enabled each Notification agent has two listeners. The \u0027external\u0027 one listens \u0027messaging_urls\u0027 and the corresponding endpoint has requeue\u003dTrue. So a message will be requeued to another topic\u003d\u0027%s-%s\u0027 % (self.NOTIFICATION_IPC, pipe.name)? And after that another listener (with endpoint EventsNotificationEndpoint object with requeue\u003dFalse) will finally publish it? Sorry I\u0027m asking it here but I\u0027d like to get this part of code correctly","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"af107eb2725045a9924c6e4b367936e3143c559c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":47,"context_line":"        \"\"\"Convert message to Ceilometer Event."}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_936f3a92","line":44,"updated":"2015-02-02 13:55:16.000000000","message":"Possibly more readable as ...\n\n  self.requeue \u003d not hasattr(transporter, \u0027publisher\u0027)","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d30751187dbfb6babc4ca5a3804c6bd1d688bdff","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.transporter \u003d transporter"},{"line_number":42,"context_line":"        # NOTE(gordc): if no publisher, this isn\u0027t a PipelineManager and"},{"line_number":43,"context_line":"        # data should be requeued."},{"line_number":44,"context_line":"        self.requeue \u003d False if hasattr(transporter, \u0027publisher\u0027) else True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":47,"context_line":"        \"\"\"Convert message to Ceilometer Event."}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_27364453","line":44,"in_reply_to":"da86d52c_936f3a92","updated":"2015-02-02 14:57:08.000000000","message":"will do","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"}],"ceilometer/event/storage/models.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        return \"\u003cTrait: %s %d %s\u003e\" % (self.name, self.dtype, self.value)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def serialise(self):"},{"line_number":95,"context_line":"        return (self.name, self.dtype, serialise_dt(self.value))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_type_name(self):"},{"line_number":98,"context_line":"        return self.get_name_by_type(self.dtype)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3f37b6ff","line":95,"updated":"2015-01-15 06:18:28.000000000","message":"nit: outside () pair can be removed","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        return \"\u003cTrait: %s %d %s\u003e\" % (self.name, self.dtype, self.value)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def serialise(self):"},{"line_number":95,"context_line":"        return (self.name, self.dtype, serialise_dt(self.value))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_type_name(self):"},{"line_number":98,"context_line":"        return self.get_name_by_type(self.dtype)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_126e5396","line":95,"in_reply_to":"3a961159_3f37b6ff","updated":"2015-01-15 23:34:28.000000000","message":"Done","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"49ada80b8894e900dfc4dfc73f62cc5ea6fe62c6","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from ceilometer.storage import base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def serialise_dt(value):"},{"line_number":21,"context_line":"    \"\"\"Serialises parameter if it is datetime.\"\"\""},{"line_number":22,"context_line":"    return value.isoformat() if hasattr(value, \u0027isoformat\u0027) else value"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_a0cc0264","line":20,"updated":"2015-01-19 12:15:47.000000000","message":"See below.","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"49ada80b8894e900dfc4dfc73f62cc5ea6fe62c6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                (self.message_id, self.event_type, self.generated,"},{"line_number":57,"context_line":"                 \" \".join(trait_list)))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def serialise(self):"},{"line_number":60,"context_line":"        return {\u0027message_id\u0027: self.message_id,"},{"line_number":61,"context_line":"                \u0027event_type\u0027: self.event_type,"},{"line_number":62,"context_line":"                \u0027generated\u0027: serialise_dt(self.generated),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_60e3fad8","line":59,"updated":"2015-01-19 12:15:47.000000000","message":"I\u0027m sure this has come up before, but I don\u0027t know how it has been resolved, so I\u0027ll be the boor to say: The standard appears to be \"serialize\" not \"serialise\". Master currently has 35 serialize and 0 serialise.\n\nI agree that the latter is more elegant looking, but we ought, for the sake of grepping, be consistent.","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"84e74bad59dd01c25d0c1ff3bc7a0aee2c482f4e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                (self.message_id, self.event_type, self.generated,"},{"line_number":57,"context_line":"                 \" \".join(trait_list)))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def serialise(self):"},{"line_number":60,"context_line":"        return {\u0027message_id\u0027: self.message_id,"},{"line_number":61,"context_line":"                \u0027event_type\u0027: self.event_type,"},{"line_number":62,"context_line":"                \u0027generated\u0027: serialise_dt(self.generated),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_b6aa85d1","line":59,"in_reply_to":"3a961159_60e3fad8","updated":"2015-01-19 14:39:02.000000000","message":"... what\u0027s \"serialize\"? :P\n\ni\u0027ll change.","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"}],"ceilometer/notification.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        ack_on_error \u003d cfg.CONF.notification.ack_on_event_error"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        endpoints \u003d []"},{"line_number":151,"context_line":"        if cfg.CONF.notification.store_events:"},{"line_number":152,"context_line":"            endpoints.append("},{"line_number":153,"context_line":"                event_endpoint.EventsNotificationEndpoint(event_transporter))"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_7a678cea","line":151,"updated":"2015-01-15 06:18:28.000000000","message":"since there are so many store_events branch, I\u0027m thinking if we can have two class, one for not_store_events scenario, another for store_events scenario, then the logic can be a bit more clear\n\nbut I\u0027m not sure if this is a good idea...","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        ack_on_error \u003d cfg.CONF.notification.ack_on_event_error"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        endpoints \u003d []"},{"line_number":151,"context_line":"        if cfg.CONF.notification.store_events:"},{"line_number":152,"context_line":"            endpoints.append("},{"line_number":153,"context_line":"                event_endpoint.EventsNotificationEndpoint(event_transporter))"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_d2abeb85","line":151,"in_reply_to":"3a961159_7a678cea","updated":"2015-01-15 23:34:28.000000000","message":"hmm... how would we split it? a lot of the conditionals are in the middle of methods so i think it would end up with a lot of tiny half methods or a lot of duplication no? let me know if you see a better way.","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"2fb65095ceb82fc37c306c8216888a728f13a639","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            topic\u003d\u0027%s-%s\u0027 % (self.NOTIFICATION_IPC, pipe.name))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def start(self):"},{"line_number":90,"context_line":"        super(NotificationService, self).start()"},{"line_number":91,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline()"},{"line_number":92,"context_line":"        if cfg.CONF.notification.store_events:"},{"line_number":93,"context_line":"            self.event_pipeline_manager \u003d pipeline.setup_event_pipeline()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_dbf43ed1","line":90,"updated":"2015-01-29 10:53:18.000000000","message":"nit: it would be better to rename pipeline_manager, setup_pipeline and so on to sample_ pipeline_manager, setup_sample_pipeline. But I\u0027m afraid it would be too big change. Now reading the code it seems that there is a \u0027main, complicated\u0027 pipeline and a \u0027small\u0027 one for events.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"af107eb2725045a9924c6e4b367936e3143c559c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            topic\u003d\u0027%s-%s\u0027 % (self.NOTIFICATION_IPC, pipe.name))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def start(self):"},{"line_number":90,"context_line":"        super(NotificationService, self).start()"},{"line_number":91,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline()"},{"line_number":92,"context_line":"        if cfg.CONF.notification.store_events:"},{"line_number":93,"context_line":"            self.event_pipeline_manager \u003d pipeline.setup_event_pipeline()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_737c8621","line":90,"in_reply_to":"fa81d914_ce00ec03","updated":"2015-02-02 13:55:16.000000000","message":"Agreed.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"aee7554ee014b7b3e38c4b46a8dcde94736765a4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            topic\u003d\u0027%s-%s\u0027 % (self.NOTIFICATION_IPC, pipe.name))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def start(self):"},{"line_number":90,"context_line":"        super(NotificationService, self).start()"},{"line_number":91,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline()"},{"line_number":92,"context_line":"        if cfg.CONF.notification.store_events:"},{"line_number":93,"context_line":"            self.event_pipeline_manager \u003d pipeline.setup_event_pipeline()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_ce00ec03","line":90,"in_reply_to":"fa81d914_dbf43ed1","updated":"2015-01-29 21:42:54.000000000","message":"\"too big change\" was the reason i didn\u0027t bother renaming it in these patches... we can rename after if required.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"}],"ceilometer/pipeline.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":"import yaml"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from ceilometer.event.storage import models as event_util"},{"line_number":29,"context_line":"from ceilometer.i18n import _"},{"line_number":30,"context_line":"from ceilometer.openstack.common import log"},{"line_number":31,"context_line":"from ceilometer import publisher"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9aab58d5","line":28,"updated":"2015-01-15 06:18:28.000000000","message":"why the models module alias with a xxx_util, seems a bit misleading","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":"import yaml"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from ceilometer.event.storage import models as event_util"},{"line_number":29,"context_line":"from ceilometer.i18n import _"},{"line_number":30,"context_line":"from ceilometer.openstack.common import log"},{"line_number":31,"context_line":"from ceilometer import publisher"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_32718f45","line":28,"in_reply_to":"3a961159_9aab58d5","updated":"2015-01-15 23:34:28.000000000","message":"i was copying the same naming scheme as we did for sample. see line 31 or 32. i\u0027ll remove alias","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"class SampleSink(Sink):"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    NAMESPACE \u003d \u0027ceilometer.publisher\u0027"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def _transform_sample(self, start, ctxt, sample):"},{"line_number":415,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_5a7d706c","line":412,"updated":"2015-01-15 06:18:28.000000000","message":"can this be ceilometer.sample.publisher or ceilometer.metering.publisher ?","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"class SampleSink(Sink):"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    NAMESPACE \u003d \u0027ceilometer.publisher\u0027"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def _transform_sample(self, start, ctxt, sample):"},{"line_number":415,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_d2b04bde","line":412,"in_reply_to":"3a961159_5a7d706c","updated":"2015-01-15 23:34:28.000000000","message":"i\u0027d have to change the namespace in setup.cfg as well. is it ok to make that a separate change? unless you know for certain that it isn\u0027t an issue.","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"92d11d9104701f891a958227dbf7e66ae2cf0359","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"class SampleSink(Sink):"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    NAMESPACE \u003d \u0027ceilometer.publisher\u0027"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    def _transform_sample(self, start, ctxt, sample):"},{"line_number":415,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_e931d50b","line":412,"in_reply_to":"3a961159_d2b04bde","updated":"2015-01-16 02:17:13.000000000","message":"not quite an issue, can be done in future if someone interest","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"}],"ceilometer/publisher/messaging.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        ev_list \u003d [utils.message_from_event("},{"line_number":176,"context_line":"            event, cfg.CONF.publisher.metering_secret) for event in events]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        topic \u003d cfg.CONF.publisher_notifier.event_topic"},{"line_number":179,"context_line":"        self.local_queue.append((context, topic, ev_list))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1ad5a842","line":176,"updated":"2015-01-15 06:18:28.000000000","message":"the metering_secret is no longer suitable, consider deprecating it and using another one? publish_secret ?","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        ev_list \u003d [utils.message_from_event("},{"line_number":176,"context_line":"            event, cfg.CONF.publisher.metering_secret) for event in events]"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        topic \u003d cfg.CONF.publisher_notifier.event_topic"},{"line_number":179,"context_line":"        self.local_queue.append((context, topic, ev_list))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_72031776","line":176,"in_reply_to":"3a961159_1ad5a842","updated":"2015-01-15 23:34:28.000000000","message":"sure. i\u0027m going to pull this change into another patch and use direct publisher so there\u0027s less code change and it keeps the current events behaviour... but i\u0027ll address this forked patch.","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"}],"ceilometer/publisher/utils.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def message_from_event(event, secret):"},{"line_number":127,"context_line":"    \"\"\"Make a event message ready to be published or stored."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Returns a serialised model of Event containing a event message"},{"line_number":130,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fa361cb3","line":127,"updated":"2015-01-15 06:18:28.000000000","message":"nit: my grammer is bad, so I cannot sure if there should be \u0027an event\u0027","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def message_from_event(event, secret):"},{"line_number":127,"context_line":"    \"\"\"Make a event message ready to be published or stored."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Returns a serialised model of Event containing a event message"},{"line_number":130,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_b2f9ff83","line":127,"in_reply_to":"3a961159_fa361cb3","updated":"2015-01-15 23:34:28.000000000","message":"yep. that\u0027s proper grammar. will do :)","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4a5b30e443eb669e98a7c62b087e65762cd35ebf","unresolved":false,"context_lines":[{"line_number":126,"context_line":"def message_from_event(event, secret):"},{"line_number":127,"context_line":"    \"\"\"Make a event message ready to be published or stored."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Returns a serialised model of Event containing a event message"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    msg \u003d event.serialise()"},{"line_number":132,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9a47d81c","line":129,"updated":"2015-01-15 06:18:28.000000000","message":"ditto?an event","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4f381dbeb03ea8925844cbd0a43b5c24cab38d4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"def message_from_event(event, secret):"},{"line_number":127,"context_line":"    \"\"\"Make a event message ready to be published or stored."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Returns a serialised model of Event containing a event message"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    msg \u003d event.serialise()"},{"line_number":132,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_12f49385","line":129,"in_reply_to":"3a961159_9a47d81c","updated":"2015-01-15 23:34:28.000000000","message":"Done","commit_id":"63290ea8a88595b4002fadd8e8b16dd00350333f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"af107eb2725045a9924c6e4b367936e3143c559c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    Returns a serialized model of Event containing an event message"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    msg \u003d event.serialize()"},{"line_number":132,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"},{"line_number":133,"context_line":"    return msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_13e34ada","line":132,"updated":"2015-02-02 13:55:16.000000000","message":"Is this re-computed message signature different from the signature of the original message?\n\nIf not, I wonder would it be simpler to just preserve the original signature in the in-memory event?","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d30751187dbfb6babc4ca5a3804c6bd1d688bdff","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    Returns a serialized model of Event containing an event message"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    msg \u003d event.serialize()"},{"line_number":132,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"},{"line_number":133,"context_line":"    return msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_87f53085","line":132,"in_reply_to":"da86d52c_13e34ada","updated":"2015-02-02 14:57:08.000000000","message":"is the suggestion to not compute a signature if it exists? the signature is an internal ceilometer item... i\u0027m not sure we ever compute it twice.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"39536d0cfa03d55085e4a6b30b9253f237a95e7b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    Returns a serialized model of Event containing an event message"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    msg \u003d event.serialize()"},{"line_number":132,"context_line":"    msg[\u0027message_signature\u0027] \u003d compute_signature(msg, secret)"},{"line_number":133,"context_line":"    return msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_d1b0bc8d","line":132,"in_reply_to":"da86d52c_87f53085","updated":"2015-02-02 17:49:56.000000000","message":"A-ha, of course, my bad. Apols for the noise.","commit_id":"8af389ec493a10c5dd553f7dd6c87a097a6d028e"}],"ceilometer/tests/test_notification.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"49ada80b8894e900dfc4dfc73f62cc5ea6fe62c6","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.expected_events \u003d 1"},{"line_number":203,"context_line":"        ev_pipeline_cfg_file \u003d fileutils.write_to_tempfile("},{"line_number":204,"context_line":"            content\u003dev_pipeline, prefix\u003d\"event_pipeline\", suffix\u003d\"yaml\")"},{"line_number":205,"context_line":"        self.CONF.set_override(\"event_pipeline_cfg_file\", ev_pipeline_cfg_file)"},{"line_number":206,"context_line":"        self.CONF.set_override("},{"line_number":207,"context_line":"            \"definitions_cfg_file\","},{"line_number":208,"context_line":"            self.path_get(\u0027etc/ceilometer/event_definitions.yaml\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_004796a4","line":205,"updated":"2015-01-19 12:15:47.000000000","message":"Just for future reference: The amount we have to do this (above) is dumb: We should adjust the pipeline so that we can pass config data directly rather than have it require a file.","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"84e74bad59dd01c25d0c1ff3bc7a0aee2c482f4e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.expected_events \u003d 1"},{"line_number":203,"context_line":"        ev_pipeline_cfg_file \u003d fileutils.write_to_tempfile("},{"line_number":204,"context_line":"            content\u003dev_pipeline, prefix\u003d\"event_pipeline\", suffix\u003d\"yaml\")"},{"line_number":205,"context_line":"        self.CONF.set_override(\"event_pipeline_cfg_file\", ev_pipeline_cfg_file)"},{"line_number":206,"context_line":"        self.CONF.set_override("},{"line_number":207,"context_line":"            \"definitions_cfg_file\","},{"line_number":208,"context_line":"            self.path_get(\u0027etc/ceilometer/event_definitions.yaml\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_166519af","line":205,"in_reply_to":"3a961159_004796a4","updated":"2015-01-19 14:39:02.000000000","message":"i\u0027m going to claim copy/paste and too lazy to create something new. but seems like an ok idea... only issue is that it requires a certain base to remain unchanged or dependencies will make you hate the world.","commit_id":"94110805b7420a02912160f80aea19b84bc48c7d"}]}
