)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"4a097c61b3022534a612b96557bea5a29d5ad443","unresolved":false,"context_lines":[{"line_number":11,"context_line":"data is desired."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I714245e49eb6a6538d9a2d5967d17b82cd47547e"},{"line_number":14,"context_line":"bp: http-dispatcher"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a890539_910a1388","line":14,"updated":"2014-11-18 09:19:49.000000000","message":"could you use here: Implements: blueprint http-dispatcher?\n\nDocs with examples of good practice https://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages","commit_id":"afacd3f97c008a8e9dce8709f1444d856555b611"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"59253679d2996fb81ec7238c59191c5f98c41826","unresolved":false,"context_lines":[{"line_number":11,"context_line":"data is desired."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I714245e49eb6a6538d9a2d5967d17b82cd47547e"},{"line_number":14,"context_line":"bp: http-dispatcher"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5a890539_5ca197f6","line":14,"in_reply_to":"5a890539_910a1388","updated":"2014-11-18 13:30:13.000000000","message":"Sure thing. thx.","commit_id":"afacd3f97c008a8e9dce8709f1444d856555b611"}],"ceilometer/dispatcher/http.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.cadf_only \u003d self.conf.dispatcher_http.cadf_only"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def record_metering_data(self, data):"},{"line_number":61,"context_line":"        if self.target \u003d\u003d \u0027\u0027:"},{"line_number":62,"context_line":"            # if the target was not set, do not do anything"},{"line_number":63,"context_line":"            LOG.error(_(\u0027Dispatcher target was not set, no meter will \u0027"},{"line_number":64,"context_line":"                        \u0027be posted.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7c265fcc","line":61,"updated":"2014-07-28 07:07:55.000000000","message":"maybe it is better to use \"if not self.target:\" :-)","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"1f5a56dbb452e846db5e38555b4bfc7c62f7b655","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.cadf_only \u003d self.conf.dispatcher_http.cadf_only"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def record_metering_data(self, data):"},{"line_number":61,"context_line":"        if self.target \u003d\u003d \u0027\u0027:"},{"line_number":62,"context_line":"            # if the target was not set, do not do anything"},{"line_number":63,"context_line":"            LOG.error(_(\u0027Dispatcher target was not set, no meter will \u0027"},{"line_number":64,"context_line":"                        \u0027be posted.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_23bb7c10","line":61,"in_reply_to":"baada198_7c265fcc","updated":"2014-07-30 12:05:10.000000000","message":"this is a configuration option, it will be something or empty as default. which does not include None if that is what you imply.","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            return"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        # We may have receive only one counter on the wire"},{"line_number":68,"context_line":"        if not isinstance(data, list):"},{"line_number":69,"context_line":"            data \u003d [data]"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        for meter in data:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_97e94c1c","line":68,"updated":"2014-07-28 07:07:55.000000000","message":"can the data be *None* or others null value? if so, the for statements will raise error, just guess :)\n\nso maybe it better to use\"if not isinstance(data, list) and not data:\"","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            data \u003d [data]"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        for meter in data:"},{"line_number":72,"context_line":"            LOG.debug(_("},{"line_number":73,"context_line":"                \u0027metering data %(counter_name)s \u0027"},{"line_number":74,"context_line":"                \u0027for %(resource_id)s @ %(timestamp)s: %(counter_volume)s\u0027)"},{"line_number":75,"context_line":"                % ({\u0027counter_name\u0027: meter[\u0027counter_name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_77faf8ba","line":72,"updated":"2014-07-28 07:07:55.000000000","message":"this log recording may lead to a mass of log message in log file for a mass of metering data, so I personally think this is unnecessary. like record_metering_data()in impl_sqlalchemy.py","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"1f5a56dbb452e846db5e38555b4bfc7c62f7b655","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            data \u003d [data]"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        for meter in data:"},{"line_number":72,"context_line":"            LOG.debug(_("},{"line_number":73,"context_line":"                \u0027metering data %(counter_name)s \u0027"},{"line_number":74,"context_line":"                \u0027for %(resource_id)s @ %(timestamp)s: %(counter_volume)s\u0027)"},{"line_number":75,"context_line":"                % ({\u0027counter_name\u0027: meter[\u0027counter_name\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_43fb10be","line":72,"in_reply_to":"baada198_77faf8ba","updated":"2014-07-30 12:05:10.000000000","message":"this is for debug and of course, you want to see a lot of information. You are mixing up logging mode.","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":92,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":95,"context_line":"                        if metadata:"},{"line_number":96,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":97,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_77e838df","line":94,"updated":"2014-07-28 07:07:55.000000000","message":"\"None\" is reluctant","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"1f5a56dbb452e846db5e38555b4bfc7c62f7b655","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":92,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":95,"context_line":"                        if metadata:"},{"line_number":96,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":97,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a30ceced","line":94,"in_reply_to":"baada198_77e838df","updated":"2014-07-30 12:05:10.000000000","message":"more of a coding style to indicate if there isn\u0027t anything, None is returned.\nit is more readable.","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"d0b5d78ce6c1ef6160c2589e92e6590faf427d3c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":92,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":95,"context_line":"                        if metadata:"},{"line_number":96,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":97,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_f78288c5","line":94,"in_reply_to":"baada198_77e838df","updated":"2014-07-28 07:09:35.000000000","message":"s/reluctant/redundant/","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":95,"context_line":"                        if metadata:"},{"line_number":96,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":97,"context_line":"                        else:"},{"line_number":98,"context_line":"                            req_data \u003d None"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_57edf4ee","line":96,"updated":"2014-07-28 07:07:55.000000000","message":"\"None\" is reluctant","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"d0b5d78ce6c1ef6160c2589e92e6590faf427d3c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":95,"context_line":"                        if metadata:"},{"line_number":96,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":97,"context_line":"                        else:"},{"line_number":98,"context_line":"                            req_data \u003d None"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d77f44dd","line":96,"in_reply_to":"baada198_57edf4ee","updated":"2014-07-28 07:09:35.000000000","message":"s/reluctant/redundant/","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Author: Tong Li \u003clitong01@us.ibm.com\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_5c8b5b68","line":1,"updated":"2014-08-04 10:47:50.000000000","message":"do you need this empty line for some reason?","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class HttpDispatcher(dispatcher.Base):"},{"line_number":50,"context_line":"    \u0027\u0027\u0027Dispatcher class for posting metering data into a http target."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    To enable this dispatcher, the following section needs to be present in"},{"line_number":53,"context_line":"    ceilometer.conf file"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9194fce8","line":50,"updated":"2014-08-04 10:47:50.000000000","message":"single \u0027\u0027\u0027 has been deprecated for a while ago, please use double ones -  \"\"\"\nI see that\u0027s used in other dispatchers, but that\u0027s wrong. Also the message is not correct really - we need dispatchers \u003d http *option* set and dispatcher_http *section* presented","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if self.target \u003d\u003d \u0027\u0027:"},{"line_number":66,"context_line":"            # if the target was not set, do not do anything"},{"line_number":67,"context_line":"            LOG.error(_(\u0027Dispatcher target was not set, no meter will \u0027"},{"line_number":68,"context_line":"                        \u0027be posted.\u0027))"},{"line_number":69,"context_line":"            return"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # We may have receive only one counter on the wire"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_11762cd8","line":68,"updated":"2014-08-04 10:47:50.000000000","message":"probably some instruction like \"Please set target option in the [dispatcher_http] section of the configuration file\" will be good here as well","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":96,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":99,"context_line":"                        if metadata:"},{"line_number":100,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":101,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_1c400334","line":98,"updated":"2014-08-04 10:47:50.000000000","message":"actually you may make this block (lines 98-102) simpler using not None default value:\n\nreq_data \u003d meter.get(\u0027resource_metadata\u0027, {}).get(\u0027request\u0027, None)","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"824da87fe83ad61bc626da4231195b778b29e1ba","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":96,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":99,"context_line":"                        if metadata:"},{"line_number":100,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":101,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_e24a62ab","line":98,"in_reply_to":"baada198_1c400334","updated":"2014-11-19 19:30:13.000000000","message":"Done","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                LOG.warning(_("},{"line_number":121,"context_line":"                    \u0027message signature invalid, discarding message: %r\u0027),"},{"line_number":122,"context_line":"                    meter)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def record_events(self, events):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_dc776b8c","line":121,"updated":"2014-08-04 10:47:50.000000000","message":"any reason to use repr %r instead of str %s?","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"824da87fe83ad61bc626da4231195b778b29e1ba","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                LOG.warning(_("},{"line_number":121,"context_line":"                    \u0027message signature invalid, discarding message: %r\u0027),"},{"line_number":122,"context_line":"                    meter)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def record_events(self, events):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_a2505a5f","line":121,"in_reply_to":"baada198_dc776b8c","updated":"2014-11-19 19:30:13.000000000","message":"%s will insert the presentation string representation of the object (i.e. str(o))\n%r will insert the canonical string representation of the object (i.e. repr(o))","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1a77e7c6952ff3e19755f5b7dd61b491980d0c40","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    To enable this dispatcher, the following section needs to be present in"},{"line_number":52,"context_line":"    ceilometer.conf file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    dispatchers \u003d http"},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":"    def __init__(self, conf):"},{"line_number":57,"context_line":"        super(HttpDispatcher, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_9493e35a","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":15},"updated":"2014-08-05 07:36:25.000000000","message":"as said in previous patch set comment - the doctoring is not correct actually. I\u0027ll look correct in this way:\n\nTo enable this dispatcher, the following option needs to be set in\n    ceilometer.conf file\n\n    dispatchers \u003d http\n\nTo set this dispatcher specific options please present [dispatcher_http] section with the needed options.","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    To enable this dispatcher, the following section needs to be present in"},{"line_number":52,"context_line":"    ceilometer.conf file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    dispatchers \u003d http"},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":"    def __init__(self, conf):"},{"line_number":57,"context_line":"        super(HttpDispatcher, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_0e67b4b9","line":54,"in_reply_to":"baada198_1246fca7","updated":"2014-08-05 14:58:52.000000000","message":"thank you for the time you spent on changing these several lines","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"fdfb9554560ec502f66ebf01bc0f29dee79668d4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    To enable this dispatcher, the following section needs to be present in"},{"line_number":52,"context_line":"    ceilometer.conf file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    dispatchers \u003d http"},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":"    def __init__(self, conf):"},{"line_number":57,"context_line":"        super(HttpDispatcher, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_1246fca7","line":54,"in_reply_to":"baada198_9493e35a","updated":"2014-08-05 12:17:21.000000000","message":"Done","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    \u0027resource_id\u0027: meter[\u0027resource_id\u0027],"},{"line_number":81,"context_line":"                    \u0027timestamp\u0027: meter.get(\u0027timestamp\u0027, \u0027NO TIMESTAMP\u0027),"},{"line_number":82,"context_line":"                    \u0027counter_volume\u0027: meter[\u0027counter_volume\u0027]}))"},{"line_number":83,"context_line":"            if publisher_utils.verify_signature("},{"line_number":84,"context_line":"                    meter,"},{"line_number":85,"context_line":"                    self.conf.publisher.metering_secret):"},{"line_number":86,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_6ea110a8","line":83,"range":{"start_line":83,"start_character":12,"end_line":83,"end_character":14},"updated":"2014-08-05 14:58:52.000000000","message":"ok, let\u0027s speak here about the styling this as well: you have lo-omg \u0027if\u0027 section and shote \u0027else\u0027. In this case smth like\n\nfor \u003c...\u003e:\n  if not \u003cthat expr\u003e:\n    continue\n\n\nwill look definitely better","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1a77e7c6952ff3e19755f5b7dd61b491980d0c40","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":96,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":99,"context_line":"                        if metadata:"},{"line_number":100,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":101,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_14b993eb","line":98,"range":{"start_line":98,"start_character":24,"end_line":98,"end_character":32},"updated":"2014-08-05 07:36:25.000000000","message":"don\u0027t you love the variant I suggested in the previous patch set? :)","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"fdfb9554560ec502f66ebf01bc0f29dee79668d4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":96,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":99,"context_line":"                        if metadata:"},{"line_number":100,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":101,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_32e94083","line":98,"in_reply_to":"baada198_14b993eb","updated":"2014-08-05 12:17:21.000000000","message":"No, I do not. it is actually the wrong way to do things. metadata gets used\nagain. doing what you suggested not only make the line too long but also\nmaking access the data twice, not efficient.","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                            meter[\u0027timestamp\u0027] \u003d ("},{"line_number":96,"context_line":"                                timeutils.normalize_time(ts))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"                        metadata \u003d meter.get(\u0027resource_metadata\u0027, None)"},{"line_number":99,"context_line":"                        if metadata:"},{"line_number":100,"context_line":"                            req_data \u003d metadata.get(\u0027request\u0027, None)"},{"line_number":101,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8e3ca494","line":98,"in_reply_to":"baada198_32e94083","updated":"2014-08-05 14:58:52.000000000","message":"what I propose makes this more readable and that\u0027s it - your wish not to use double data access to the variable in the ceilometer *python* code, *without real threads*, with lots of backends performance problems, etc. makes this situation actually funny","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                      data\u003dmeter,"},{"line_number":114,"context_line":"                                      headers\u003dself.headers,"},{"line_number":115,"context_line":"                                      timeout\u003dself.max_wait)"},{"line_number":116,"context_line":"                except Exception as err:"},{"line_number":117,"context_line":"                    LOG.exception(_(\u0027Failed to record metering data: %s\u0027),"},{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2ee9d8e3","line":116,"updated":"2014-08-05 14:58:52.000000000","message":"also you\u0027re catching Exception that\u0027s too broad and stylish deprecated thing","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1a77e7c6952ff3e19755f5b7dd61b491980d0c40","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                LOG.warning(_("},{"line_number":121,"context_line":"                    \u0027message signature invalid, discarding message: %r\u0027),"},{"line_number":122,"context_line":"                    meter)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def record_events(self, events):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_547dcb1c","line":121,"range":{"start_line":121,"start_character":68,"end_line":121,"end_character":70},"updated":"2014-08-05 07:36:25.000000000","message":"will ask one more time here: any reason to use repr %r instead of str %s?","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"fdfb9554560ec502f66ebf01bc0f29dee79668d4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                LOG.warning(_("},{"line_number":121,"context_line":"                    \u0027message signature invalid, discarding message: %r\u0027),"},{"line_number":122,"context_line":"                    meter)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def record_events(self, events):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_d280049f","line":121,"in_reply_to":"baada198_547dcb1c","updated":"2014-08-05 12:17:21.000000000","message":"I suggest you goolge it to learn this stuff. If you do not want to, please click\nthis link.\nhttp://stackoverflow.com/questions/6005159/when-to-use-r-instead-of-s-in-python","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                  err)"},{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                LOG.warning(_("},{"line_number":121,"context_line":"                    \u0027message signature invalid, discarding message: %r\u0027),"},{"line_number":122,"context_line":"                    meter)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def record_events(self, events):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2e88f86a","line":121,"in_reply_to":"baada198_d280049f","updated":"2014-08-05 14:58:52.000000000","message":"okay, so in this concrete case that actually means nothing (as %s and %r for dict is doing actually the same - repr). And you just want to confuse translators who\u0027ll provide i18n for this message?","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"79ed063ae5621a353c94fbdf7fa3f3de7b892d85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Tong Li \u003clitong01@us.ibm.com\u003e"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_80f36f6c","line":1,"updated":"2014-08-13 14:18:36.000000000","message":"Please, change year in copyright to 2014","commit_id":"e66dcc15e0c6be9e896aaab9ddbc3cfc3f14d8a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"f0ddd8447468bdbb242e81a65035b30473f40e51","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    \u0027counter_volume\u0027: meter[\u0027counter_volume\u0027]}))"},{"line_number":89,"context_line":"            if publisher_utils.verify_signature("},{"line_number":90,"context_line":"                    meter,"},{"line_number":91,"context_line":"                    self.conf.publisher.metering_secret):"},{"line_number":92,"context_line":"                try:"},{"line_number":93,"context_line":"                    if self.cadf_only:"},{"line_number":94,"context_line":"                        # Only cadf messages are being wanted."}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_ae3b28e9","line":91,"updated":"2014-08-05 15:09:00.000000000","message":"btw, that\u0027s a good practice to use conf only in the init method, not in the handler to keep conf consistent everywhere. u may move this metering_secret extraction there","commit_id":"e66dcc15e0c6be9e896aaab9ddbc3cfc3f14d8a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"f0ddd8447468bdbb242e81a65035b30473f40e51","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":111,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":112,"context_line":"                            requests.post(self.target,"},{"line_number":113,"context_line":"                                          data\u003ddata,"},{"line_number":114,"context_line":"                                          headers\u003dself.headers,"},{"line_number":115,"context_line":"                                          timeout\u003dself.max_wait)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_6e183084","line":112,"updated":"2014-08-05 15:09:00.000000000","message":"if you\u0027ll use what I proposed with \u0027continue\u0027 in the previous patch set you\u0027ll have only one *post* call","commit_id":"e66dcc15e0c6be9e896aaab9ddbc3cfc3f14d8a4"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"c146deec64a6ed46bd47dbb0f7a31c904f52d506","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                            req_data \u003d None"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":112,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":113,"context_line":"                        else:"},{"line_number":114,"context_line":"                            continue"},{"line_number":115,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_24502d0a","line":112,"updated":"2014-11-18 15:25:40.000000000","message":"Which notifications currently include the \u0027CADF_EVENT\u0027 field?\n\nIs it only the keystone notifications?","commit_id":"20b3bb49d33c7ec81f893a587d7e5deda4cf10fe"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"56e3004474b641b9e3cace0297a20088aac722c9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                            req_data \u003d None"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":112,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":113,"context_line":"                        else:"},{"line_number":114,"context_line":"                            continue"},{"line_number":115,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_faff9eff","line":112,"in_reply_to":"5a890539_24502d0a","updated":"2014-11-18 16:47:16.000000000","message":"That is what the pycadf middle ware and the library will put in the\nrequest. For this to work, pycadf middle ware (audit) needs to be in the nova (or any other products) pipeline.","commit_id":"20b3bb49d33c7ec81f893a587d7e5deda4cf10fe"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"c146deec64a6ed46bd47dbb0f7a31c904f52d506","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    requests.post(self.target,"},{"line_number":119,"context_line":"                                  data\u003dmeter,"},{"line_number":120,"context_line":"                                  headers\u003dself.headers,"},{"line_number":121,"context_line":"                                  timeout\u003dself.max_wait)"},{"line_number":122,"context_line":"                except Exception as err:"},{"line_number":123,"context_line":"                    LOG.exception(_(\u0027Failed to record metering data: %s\u0027),"},{"line_number":124,"context_line":"                                  err)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_24bd8dd8","line":121,"updated":"2014-11-18 15:25:40.000000000","message":"I\u0027m wondering about the post being done asynchronously to avoid tied up the oslo.messaging executor thread consuming the metering message - would that make sense?","commit_id":"20b3bb49d33c7ec81f893a587d7e5deda4cf10fe"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"56e3004474b641b9e3cace0297a20088aac722c9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                    requests.post(self.target,"},{"line_number":119,"context_line":"                                  data\u003dmeter,"},{"line_number":120,"context_line":"                                  headers\u003dself.headers,"},{"line_number":121,"context_line":"                                  timeout\u003dself.max_wait)"},{"line_number":122,"context_line":"                except Exception as err:"},{"line_number":123,"context_line":"                    LOG.exception(_(\u0027Failed to record metering data: %s\u0027),"},{"line_number":124,"context_line":"                                  err)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_b53c4930","line":121,"in_reply_to":"5a890539_24bd8dd8","updated":"2014-11-18 16:47:16.000000000","message":"it does, requests does not seem to support asynchronized posts. I will dig.","commit_id":"20b3bb49d33c7ec81f893a587d7e5deda4cf10fe"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":25,"context_line":"from ceilometer.publisher import utils as publisher_utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo.config import cfg"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_46e22602","line":27,"updated":"2014-11-21 12:46:35.000000000","message":"please move this before `import requests`","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":25,"context_line":"from ceilometer.publisher import utils as publisher_utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo.config import cfg"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_76a8af77","line":27,"in_reply_to":"5a890539_46e22602","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"http_dispatcher_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027target\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The target where the http request will be sent to.\u0027"},{"line_number":35,"context_line":"                    \u0027If this is not set, no data will be posted. For \u0027"},{"line_number":36,"context_line":"                    \u0027example: target \u003d http://hostname:1234/path\u0027),"},{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027cadf_only\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_e6b4f2f3","line":34,"updated":"2014-11-21 12:46:35.000000000","message":"a space is needed after the dot(.)","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"http_dispatcher_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027target\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The target where the http request will be sent to.\u0027"},{"line_number":35,"context_line":"                    \u0027If this is not set, no data will be posted. For \u0027"},{"line_number":36,"context_line":"                    \u0027example: target \u003d http://hostname:1234/path\u0027),"},{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027cadf_only\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_56ad7387","line":34,"in_reply_to":"5a890539_e6b4f2f3","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                    \u0027example: target \u003d http://hostname:1234/path\u0027),"},{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027cadf_only\u0027,"},{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag which indicate if only cadf message should be \u0027"},{"line_number":40,"context_line":"                     \u0027posted. (Otherwise, all meters will be posted.)\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_wait\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_4690664e","line":39,"updated":"2014-11-21 12:46:35.000000000","message":"s/indicate/indicates/ ?","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                    \u0027example: target \u003d http://hostname:1234/path\u0027),"},{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027cadf_only\u0027,"},{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag which indicate if only cadf message should be \u0027"},{"line_number":40,"context_line":"                     \u0027posted. (Otherwise, all meters will be posted.)\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_wait\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_16a3eb9e","line":39,"in_reply_to":"5a890539_4690664e","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag which indicate if only cadf message should be \u0027"},{"line_number":40,"context_line":"                     \u0027posted. (Otherwise, all meters will be posted.)\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_wait\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"},{"line_number":43,"context_line":"               help\u003d\u0027The max time in second to wait for a request.\u0027),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_3172b67c","line":41,"updated":"2014-11-21 12:46:35.000000000","message":"why not use name `timeout` directly? it is natural","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag which indicate if only cadf message should be \u0027"},{"line_number":40,"context_line":"                     \u0027posted. (Otherwise, all meters will be posted.)\u0027),"},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027max_wait\u0027,"},{"line_number":42,"context_line":"               default\u003d5,"},{"line_number":43,"context_line":"               help\u003d\u0027The max time in second to wait for a request.\u0027),"},{"line_number":44,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_d68323ca","line":41,"in_reply_to":"5a890539_3172b67c","updated":"2014-11-21 13:58:48.000000000","message":"preference I think. not a big deal, can change to timeout.","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\"Dispatcher class for posting metering data into a http target."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    To enable this dispatcher, the following option needs to be present in"},{"line_number":53,"context_line":"        ceilometer.conf file"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        dispatchers \u003d http"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_b18f8622","line":53,"updated":"2014-11-21 12:46:35.000000000","message":"why indent \"ceilometer.conf\"","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\"Dispatcher class for posting metering data into a http target."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    To enable this dispatcher, the following option needs to be present in"},{"line_number":53,"context_line":"        ceilometer.conf file"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        dispatchers \u003d http"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_d699636f","line":53,"in_reply_to":"5a890539_b18f8622","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def __init__(self, conf):"},{"line_number":64,"context_line":"        super(HttpDispatcher, self).__init__(conf)"},{"line_number":65,"context_line":"        self.headers \u003d {\u0027Content-type\u0027: \u0027application/json\u0027}"},{"line_number":66,"context_line":"        self.max_wait \u003d self.conf.dispatcher_http.max_wait"},{"line_number":67,"context_line":"        self.target \u003d self.conf.dispatcher_http.target"},{"line_number":68,"context_line":"        self.cadf_only \u003d self.conf.dispatcher_http.cadf_only"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_71db5e1b","line":66,"updated":"2014-11-21 12:46:35.000000000","message":"nit: we can directly use cfg.CONF, why need object variables?","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def __init__(self, conf):"},{"line_number":64,"context_line":"        super(HttpDispatcher, self).__init__(conf)"},{"line_number":65,"context_line":"        self.headers \u003d {\u0027Content-type\u0027: \u0027application/json\u0027}"},{"line_number":66,"context_line":"        self.max_wait \u003d self.conf.dispatcher_http.max_wait"},{"line_number":67,"context_line":"        self.target \u003d self.conf.dispatcher_http.target"},{"line_number":68,"context_line":"        self.cadf_only \u003d self.conf.dispatcher_http.cadf_only"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_5676533f","line":66,"in_reply_to":"5a890539_71db5e1b","updated":"2014-11-21 13:58:48.000000000","message":"easier reference and less query.","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                        # Convert the timestamp to a datetime instance."},{"line_number":97,"context_line":"                        # Storage engines are responsible for converting"},{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027, None)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_60b9c52d","line":99,"updated":"2014-11-21 12:46:35.000000000","message":"s/get(\u0027timestamp\u0027, None)/get(\u0027timestamp\u0027)/","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                        # Convert the timestamp to a datetime instance."},{"line_number":97,"context_line":"                        # Storage engines are responsible for converting"},{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027, None)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_16ca0b4f","line":99,"in_reply_to":"5a890539_60b9c52d","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027, None)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_20cedd83","line":101,"updated":"2014-11-21 12:46:35.000000000","message":"so, where do we use this attribute?","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027, None)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_76c34f57","line":101,"in_reply_to":"5a890539_20cedd83","updated":"2014-11-21 13:58:48.000000000","message":"it gets sent in the http post.","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"},{"line_number":105,"context_line":"                                             {}).get(\u0027request\u0027, None)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":108,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_7177de02","line":105,"updated":"2014-11-21 12:46:35.000000000","message":"s/get(\u0027request\u0027. None)/get(\u0027request\u0027)/","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"},{"line_number":105,"context_line":"                                             {}).get(\u0027request\u0027, None)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":108,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_96ba7bdf","line":105,"in_reply_to":"5a890539_7177de02","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"2ddf957d9a18b961eba7360f5bffebdd847b7af4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import requests"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ceilometer import dispatcher"},{"line_number":23,"context_line":"from ceilometer.openstack.common.gettextutils import _  # noqa"},{"line_number":24,"context_line":"from ceilometer.openstack.common import log"},{"line_number":25,"context_line":"from ceilometer.openstack.common import timeutils"},{"line_number":26,"context_line":"from ceilometer.publisher import utils as publisher_utils"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_a3064ecc","line":23,"updated":"2014-11-21 17:04:35.000000000","message":"the noqa is not needed, since we already add this module to import_exceptions, see https://github.com/openstack/ceilometer/blob/master/tox.ini#L78","commit_id":"b8003f6de88f3e4b3ce4a18356a95ea23f71c4a7"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"92951ba116aca32e2d6a92458e9273ca967fa233","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_e5477f75","line":101,"updated":"2014-11-21 16:29:08.000000000","message":"so this is in the block of if self.cadf_only, and this block has two branch: if \u0027CADF_ENEVT\u0027 in req_data, then only req_data[\u0027CADF_EVENT\u0027] will be sent; or nothing will be sent, the loop is break by continue. So why are you thinking the timestamp field in this `if self.cadf_only` will be sent?","commit_id":"b8003f6de88f3e4b3ce4a18356a95ea23f71c4a7"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"9240115b7fcbeab00f535081d003d729a96098ea","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                        # that value to something they can store."},{"line_number":99,"context_line":"                        ts \u003d meter.get(\u0027timestamp\u0027)"},{"line_number":100,"context_line":"                        if ts:"},{"line_number":101,"context_line":"                            meter[\u0027timestamp\u0027] \u003d timeutils.normalize_time("},{"line_number":102,"context_line":"                                timeutils.parse_isotime(ts))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_e0576c58","line":101,"in_reply_to":"5a890539_e5477f75","updated":"2014-11-21 16:46:03.000000000","message":"ZhiQiang, I do not think it gets used. I will remove it.","commit_id":"b8003f6de88f3e4b3ce4a18356a95ea23f71c4a7"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"a79c930c9f4fcc40092ceeb62c96d8be15e8252b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"},{"line_number":96,"context_line":"                                             {}).get(\u0027request\u0027)"},{"line_number":97,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":98,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":99,"context_line":"                        else:"},{"line_number":100,"context_line":"                            continue"},{"line_number":101,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_09ecc528","line":98,"updated":"2014-12-01 17:22:20.000000000","message":"Why do we need json.dumps here?","commit_id":"b0dea8dd730cb71fd5c434adf726e863ed70dc9e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1abb846998db435417f879d344b7b889e86c71aa","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"},{"line_number":96,"context_line":"                                             {}).get(\u0027request\u0027)"},{"line_number":97,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":98,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":99,"context_line":"                        else:"},{"line_number":100,"context_line":"                            continue"},{"line_number":101,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_fdcf33b1","line":98,"in_reply_to":"5a890539_09ecc528","updated":"2014-12-01 19:21:32.000000000","message":"i don\u0027t think we do... seems like we\u0027d be dumping twice.","commit_id":"b0dea8dd730cb71fd5c434adf726e863ed70dc9e"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"b5a97260c73dc294fb5dd4568e40e4e3ca278847","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                        req_data \u003d meter.get(\u0027resource_metadata\u0027,"},{"line_number":96,"context_line":"                                             {}).get(\u0027request\u0027)"},{"line_number":97,"context_line":"                        if req_data and \u0027CADF_EVENT\u0027 in req_data:"},{"line_number":98,"context_line":"                            data \u003d json.dumps(req_data[\u0027CADF_EVENT\u0027])"},{"line_number":99,"context_line":"                        else:"},{"line_number":100,"context_line":"                            continue"},{"line_number":101,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_5dae8799","line":98,"in_reply_to":"5a890539_09ecc528","updated":"2014-12-01 19:21:03.000000000","message":"should not. sigh!. missed that. will change it.","commit_id":"b0dea8dd730cb71fd5c434adf726e863ed70dc9e"}],"ceilometer/tests/dispatcher/test_http.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Author: Tong Li \u003clitong01@us.ibm.com\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9ce89317","line":1,"updated":"2014-08-04 10:47:50.000000000","message":"do you need this empty line for some reason?","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.CONF \u003d self.useFixture(config.Config()).conf"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_http_dispatcher_config_options(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.CONF.dispatcher_http.target \u003d \u0027fake\u0027"},{"line_number":36,"context_line":"        self.CONF.dispatcher_http.max_wait \u003d 2"},{"line_number":37,"context_line":"        self.CONF.dispatcher_http.cadf_only \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_bcd2b758","line":34,"updated":"2014-08-04 10:47:50.000000000","message":"why did you leave this empty line here?","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"1a77e7c6952ff3e19755f5b7dd61b491980d0c40","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.CONF \u003d self.useFixture(config.Config()).conf"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_http_dispatcher_config_options(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.CONF.dispatcher_http.target \u003d \u0027fake\u0027"},{"line_number":36,"context_line":"        self.CONF.dispatcher_http.max_wait \u003d 2"},{"line_number":37,"context_line":"        self.CONF.dispatcher_http.cadf_only \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_74800ff6","line":34,"updated":"2014-08-05 07:36:25.000000000","message":"why did you leave this empty line here?","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"fdfb9554560ec502f66ebf01bc0f29dee79668d4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.CONF \u003d self.useFixture(config.Config()).conf"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_http_dispatcher_config_options(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.CONF.dispatcher_http.target \u003d \u0027fake\u0027"},{"line_number":36,"context_line":"        self.CONF.dispatcher_http.max_wait \u003d 2"},{"line_number":37,"context_line":"        self.CONF.dispatcher_http.cadf_only \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b271d0e1","line":34,"in_reply_to":"baada198_74800ff6","updated":"2014-08-05 12:17:21.000000000","message":"will remove. pep8 is happy with whatever.","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7fc3d69d7b71a6495500904f8128e44515af557d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.CONF \u003d self.useFixture(config.Config()).conf"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_http_dispatcher_config_options(self):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.CONF.dispatcher_http.target \u003d \u0027fake\u0027"},{"line_number":36,"context_line":"        self.CONF.dispatcher_http.max_wait \u003d 2"},{"line_number":37,"context_line":"        self.CONF.dispatcher_http.cadf_only \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2efb98bf","line":34,"in_reply_to":"baada198_b271d0e1","updated":"2014-08-05 14:58:52.000000000","message":"/me feeling happy now too, thank you sir","commit_id":"9d4c841c885b8f027889219e709142294edbe08f"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"79ed063ae5621a353c94fbdf7fa3f3de7b892d85","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Copyright 2013 IBM Corp"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Author: Tong Li \u003clitong01@us.ibm.com\u003e"},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e00c2b47","line":2,"updated":"2014-08-13 14:18:36.000000000","message":"Please, delete empty line at the file beginning and change year at copyright to 2014","commit_id":"e66dcc15e0c6be9e896aaab9ddbc3cfc3f14d8a4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            dispatcher.record_metering_data(msg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # Since the meter does not have metadata or CADF_EVENT, the method"},{"line_number":134,"context_line":"        # call count should be zero"},{"line_number":135,"context_line":"        self.assertEqual(1, post.call_count)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_http_dispatcher_with_none_cadf_event(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_e60f92df","line":134,"updated":"2014-11-21 12:46:35.000000000","message":"..... C\u0026P error, s/zero/one\n\nSince there are so many copy and paste, a common help method should be used, and we pass arguments (3, or 4) to customize test","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            dispatcher.record_metering_data(msg)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # Since the meter does not have metadata or CADF_EVENT, the method"},{"line_number":134,"context_line":"        # call count should be zero"},{"line_number":135,"context_line":"        self.assertEqual(1, post.call_count)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_http_dispatcher_with_none_cadf_event(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_d6e7a3e2","line":134,"in_reply_to":"5a890539_e60f92df","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            dispatcher.record_metering_data(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        # Since the meter does not have metadata or CADF_EVENT, the method"},{"line_number":159,"context_line":"        # call count should be zero"},{"line_number":160,"context_line":"        self.assertEqual(1, post.call_count)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_26f99ac8","line":159,"updated":"2014-11-21 12:46:35.000000000","message":"ditto","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            dispatcher.record_metering_data(msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        # Since the meter does not have metadata or CADF_EVENT, the method"},{"line_number":159,"context_line":"        # call count should be zero"},{"line_number":160,"context_line":"        self.assertEqual(1, post.call_count)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_36cc6761","line":159,"in_reply_to":"5a890539_26f99ac8","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"}],"doc/source/install/manual.rst":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"95dfad9d6fbef95a64215cf3853aca5358c2a32c","unresolved":false,"context_lines":[{"line_number":610,"context_line":"parameters. Please see available configuration parameters at the beginning of"},{"line_number":611,"context_line":"each dispatcher file."},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"To check if any of the dispatchers is available in your system, you can"},{"line_number":614,"context_line":"inspect the Ceilometer egg entry_points.txt file, you should normally see text"},{"line_number":615,"context_line":"like the following::"},{"line_number":616,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"baada198_173ffc25","line":613,"updated":"2014-07-28 07:07:55.000000000","message":"not \"available\" means others deployment error? In my experiences, if this patch merged this dispatcher will always be recorded in the the entry_points, so this paragraph is necessary, but I am not sure, please correct me if I was wrong :)","commit_id":"6f01a8e223327e46a6d26a6c3740eeb6d10ec40e"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"Ceilometer ships three dispatchers currently. They are database, file and"},{"line_number":607,"context_line":"http dispatcher. As the names imply, database dispatcher sends metering data"},{"line_number":608,"context_line":"to a database, File dispatcher logs meters into a file, http dispatcher posts"},{"line_number":609,"context_line":"the meters onto a http target. Each dispatcher can have its own configuration"},{"line_number":610,"context_line":"parameters. Please see available configuration parameters at the beginning of"},{"line_number":611,"context_line":"each dispatcher file."}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_dc3ccb94","line":608,"range":{"start_line":608,"start_character":14,"end_line":608,"end_character":15},"updated":"2014-08-04 10:47:50.000000000","message":"any reason for the capital letter of \"File\"?","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":649,"context_line":"   file \u003d ceilometer.dispatcher.file:FileDispatcher"},{"line_number":650,"context_line":"   http \u003d ceilometer.dispatcher.http:HttpDispatcher"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"To configure one or multiple dispatchers for ceilometer, find the Ceilometer"},{"line_number":653,"context_line":"configuration file ceilometer.conf which is normally located at /etc/ceilometer"},{"line_number":654,"context_line":"directory and make changes accordingly. Your configureation file can be in a"},{"line_number":655,"context_line":"different directory."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_e6f31208","line":652,"updated":"2014-11-21 12:46:35.000000000","message":"s/ceilometer/Ceilometer/ \nCapitalize it","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":649,"context_line":"   file \u003d ceilometer.dispatcher.file:FileDispatcher"},{"line_number":650,"context_line":"   http \u003d ceilometer.dispatcher.http:HttpDispatcher"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"To configure one or multiple dispatchers for ceilometer, find the Ceilometer"},{"line_number":653,"context_line":"configuration file ceilometer.conf which is normally located at /etc/ceilometer"},{"line_number":654,"context_line":"directory and make changes accordingly. Your configureation file can be in a"},{"line_number":655,"context_line":"different directory."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_16f84b7b","line":652,"in_reply_to":"5a890539_e6f31208","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a79a011675ce9b6baf6d0948aba0ffb22d070b","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"To configure one or multiple dispatchers for ceilometer, find the Ceilometer"},{"line_number":653,"context_line":"configuration file ceilometer.conf which is normally located at /etc/ceilometer"},{"line_number":654,"context_line":"directory and make changes accordingly. Your configureation file can be in a"},{"line_number":655,"context_line":"different directory."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"To use multiple dispatchers on a Ceilometer collector service, add multiple"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_a6e90a1c","line":654,"updated":"2014-11-21 12:46:35.000000000","message":"s/configureation/configuration/","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"21c66904d8dd215d24b0e8560a62dce51f2c22b7","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"To configure one or multiple dispatchers for ceilometer, find the Ceilometer"},{"line_number":653,"context_line":"configuration file ceilometer.conf which is normally located at /etc/ceilometer"},{"line_number":654,"context_line":"directory and make changes accordingly. Your configureation file can be in a"},{"line_number":655,"context_line":"different directory."},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"To use multiple dispatchers on a Ceilometer collector service, add multiple"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a890539_56f2d39a","line":654,"in_reply_to":"5a890539_a6e90a1c","updated":"2014-11-21 13:58:48.000000000","message":"Done","commit_id":"94ce51ff1e6e8bdbdd6bdb093db102042f231360"}],"setup.cfg":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    http.response \u003d ceilometer.middleware:HTTPResponse"},{"line_number":67,"context_line":"    stack_crud \u003d ceilometer.orchestration.notifications:StackCRUD"},{"line_number":68,"context_line":"    profiler \u003d ceilometer.profiler.notifications:ProfilerNotifications"},{"line_number":69,"context_line":"    hardware.ipmi.temperature \u003d ceilometer.hardware.notifications.ipmi:TemperatureSensorNotification"},{"line_number":70,"context_line":"    hardware.ipmi.voltage \u003d ceilometer.hardware.notifications.ipmi:VoltageSensorNotification"},{"line_number":71,"context_line":"    hardware.ipmi.current \u003d ceilometer.hardware.notifications.ipmi:CurrentSensorNotification"},{"line_number":72,"context_line":"    hardware.ipmi.fan \u003d ceilometer.hardware.notifications.ipmi:FanSensorNotification"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_1ce64316","side":"PARENT","line":69,"updated":"2014-08-04 10:47:50.000000000","message":"why this block is removed here?","commit_id":"c638d043b1845c1c6e7b0e8b50f921494d9cdf5c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":74,"context_line":"ceilometer.discover \u003d"},{"line_number":75,"context_line":"    local_instances \u003d ceilometer.compute.discovery:InstanceDiscovery"},{"line_number":76,"context_line":"    lb_pools \u003d ceilometer.network.services.discovery:LBPoolsDiscovery"},{"line_number":77,"context_line":"    lb_vips \u003d ceilometer.network.services.discovery:LBVipsDiscovery"},{"line_number":78,"context_line":"    lb_members \u003d ceilometer.network.services.discovery:LBMembersDiscovery"},{"line_number":79,"context_line":"    lb_health_probes \u003d ceilometer.network.services.discovery:LBHealthMonitorsDiscovery"},{"line_number":80,"context_line":"    vpn_services    \u003d ceilometer.network.services.discovery:VPNServicesDiscovery"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_3ce147fc","side":"PARENT","line":77,"updated":"2014-08-04 10:47:50.000000000","message":"ditto","commit_id":"c638d043b1845c1c6e7b0e8b50f921494d9cdf5c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    network.services.lb.outgoing.bytes \u003d ceilometer.network.services.lbaas:LBBytesOutPollster"},{"line_number":159,"context_line":"    network.services.vpn \u003d ceilometer.network.services.vpnaas:VPNServicesPollster"},{"line_number":160,"context_line":"    network.services.vpn.connections \u003d ceilometer.network.services.vpnaas:IPSecConnectionsPollster"},{"line_number":161,"context_line":"    network.services.firewall \u003d ceilometer.network.services.fwaas:FirewallPollster"},{"line_number":162,"context_line":"    network.services.firewall.policy \u003d ceilometer.network.services.fwaas:FirewallPolicyPollster"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_7ce73f0f","side":"PARENT","line":161,"updated":"2014-08-04 10:47:50.000000000","message":"ditto","commit_id":"c638d043b1845c1c6e7b0e8b50f921494d9cdf5c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"ceilometer.alarm.storage \u003d"},{"line_number":148,"context_line":"    log \u003d ceilometer.storage.impl_log:Connection"},{"line_number":149,"context_line":"    mongodb \u003d ceilometer.alarm.storage.impl_mongodb:Connection"},{"line_number":150,"context_line":"    mysql \u003d ceilometer.storage.impl_sqlalchemy:Connection"},{"line_number":151,"context_line":"    postgresql \u003d ceilometer.storage.impl_sqlalchemy:Connection"},{"line_number":152,"context_line":"    sqlite \u003d ceilometer.storage.impl_sqlalchemy:Connection"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_1c948342","line":149,"updated":"2014-08-04 10:47:50.000000000","message":"please do not touch this section! it was changed in previous changes by Mehdi! I guess you have tests failures because of something you done with setup.cfg file","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"25518833eb46a5a1c76008f7d9675b002de15213","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    swift \u003d ceilometer.objectstore.swift_middleware:filter_factory"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"console_scripts \u003d"},{"line_number":207,"context_line":"    ceilometer-api \u003d ceilometer.cli:api"},{"line_number":208,"context_line":"    ceilometer-agent-central \u003d ceilometer.cli:agent_central"},{"line_number":209,"context_line":"    ceilometer-agent-compute \u003d ceilometer.cli:agent_compute"},{"line_number":210,"context_line":"    ceilometer-agent-notification \u003d ceilometer.cli:agent_notification"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_3c76a73f","line":207,"updated":"2014-08-04 10:47:50.000000000","message":"do not change this section as well! this is the result of Nejc\u0027s change","commit_id":"f88125e183d900b4dc32b8835799707ff679be90"}]}
