)]}'
{"ceilometer/publisher/http.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if not self.target:"},{"line_number":58,"context_line":"            LOG.error(_(\u0027The path for the http publisher is required\u0027))"},{"line_number":59,"context_line":"            return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        # Handling other configuration options in the query string"},{"line_number":62,"context_line":"        if parsed_url.query:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_a4467f78","line":59,"updated":"2016-03-10 09:28:12.000000000","message":"I think we should rather raise here, and log the error upper in the stack level.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if not self.target:"},{"line_number":58,"context_line":"            LOG.error(_(\u0027The path for the http publisher is required\u0027))"},{"line_number":59,"context_line":"            return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        # Handling other configuration options in the query string"},{"line_number":62,"context_line":"        if parsed_url.query:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_d2fb7645","line":59,"in_reply_to":"5aef4532_a4467f78","updated":"2016-03-10 16:22:52.000000000","message":"Will raise an exception.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            self.timeout \u003d 1000"},{"line_number":68,"context_line":"            self.retry_count \u003d 2"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027HttpPublisher is initialized successfully!\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_c43aabe6","line":70,"updated":"2016-03-10 09:28:12.000000000","message":"maybe set for which url at least :)","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            self.timeout \u003d 1000"},{"line_number":68,"context_line":"            self.retry_count \u003d 2"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027HttpPublisher is initialized successfully!\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_529e4607","line":70,"in_reply_to":"5aef4532_c43aabe6","updated":"2016-03-10 16:22:52.000000000","message":"Will add the target url.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027HttpPublisher is initialized successfully!\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"},{"line_number":74,"context_line":"            return int(params.get(name)[0])"},{"line_number":75,"context_line":"        except (ValueError, TypeError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_6753d917","line":72,"updated":"2016-03-10 09:28:12.000000000","message":"This is a @staticmethod","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027HttpPublisher is initialized successfully!\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"},{"line_number":74,"context_line":"            return int(params.get(name)[0])"},{"line_number":75,"context_line":"        except (ValueError, TypeError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_52b5a67b","line":72,"in_reply_to":"5aef4532_6753d917","updated":"2016-03-10 16:22:52.000000000","message":"Will make it static.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"},{"line_number":74,"context_line":"            return int(params.get(name)[0])"},{"line_number":75,"context_line":"        except (ValueError, TypeError):"},{"line_number":76,"context_line":"            return default_value"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_e73889d5","line":74,"range":{"start_line":74,"start_character":40,"end_line":74,"end_character":41},"updated":"2016-03-10 09:28:12.000000000","message":"We use -1 rather than 0 in this kind of parsing a rule.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _get_param(self, params, name, default_value):"},{"line_number":73,"context_line":"        try:"},{"line_number":74,"context_line":"            return int(params.get(name)[0])"},{"line_number":75,"context_line":"        except (ValueError, TypeError):"},{"line_number":76,"context_line":"            return default_value"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_92b3ae97","line":74,"range":{"start_line":74,"start_character":40,"end_line":74,"end_character":41},"in_reply_to":"5aef4532_e73889d5","updated":"2016-03-10 16:22:52.000000000","message":"OK.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _do_post(self, data):"},{"line_number":79,"context_line":"        if self.target:"},{"line_number":80,"context_line":"            for item in data:"},{"line_number":81,"context_line":"                LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 %"},{"line_number":82,"context_line":"                          json.dumps(item.as_dict()))"},{"line_number":83,"context_line":"                for x in range(0, self.retry_count):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_a414bf4c","line":80,"updated":"2016-03-10 09:28:12.000000000","message":"Wouldn\u0027t it be a good idea to batch it by default?\n\nIt\u0027d be more efficient likely.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _do_post(self, data):"},{"line_number":79,"context_line":"        if self.target:"},{"line_number":80,"context_line":"            for item in data:"},{"line_number":81,"context_line":"                LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 %"},{"line_number":82,"context_line":"                          json.dumps(item.as_dict()))"},{"line_number":83,"context_line":"                for x in range(0, self.retry_count):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b2522a33","line":80,"in_reply_to":"5aef4532_a414bf4c","updated":"2016-03-10 16:22:52.000000000","message":"Will add an option to pact all together or send individual message. Some end point may not be able to handle array of messages (thinking existing endpoints).","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 %"},{"line_number":82,"context_line":"                          json.dumps(item.as_dict()))"},{"line_number":83,"context_line":"                for x in range(0, self.retry_count):"},{"line_number":84,"context_line":"                    res \u003d requests.post(self.target,"},{"line_number":85,"context_line":"                                        data\u003djson.dumps(item.as_dict()),"},{"line_number":86,"context_line":"                                        headers\u003dself.headers,"},{"line_number":87,"context_line":"                                        timeout\u003dself.timeout)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_e766c9eb","line":84,"updated":"2016-03-10 09:28:12.000000000","message":"I\u0027m pretty sure requests as a mechanism for retrying already that you can specify in your post() call.\n\n(otherwise we use the retrying library for such tasks)","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 %"},{"line_number":82,"context_line":"                          json.dumps(item.as_dict()))"},{"line_number":83,"context_line":"                for x in range(0, self.retry_count):"},{"line_number":84,"context_line":"                    res \u003d requests.post(self.target,"},{"line_number":85,"context_line":"                                        data\u003djson.dumps(item.as_dict()),"},{"line_number":86,"context_line":"                                        headers\u003dself.headers,"},{"line_number":87,"context_line":"                                        timeout\u003dself.timeout)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_1d020f0a","line":84,"in_reply_to":"5aef4532_e766c9eb","updated":"2016-03-10 16:22:52.000000000","message":"Will look at the option for doing it.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e1704778d9e05e2fee4273b9795a9dec30da8c51","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":99,"context_line":"        :param samples: Samples from pipeline after transformation"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        self._do_post(samples)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def publish_events(self, context, events):"},{"line_number":104,"context_line":"        \"\"\"Send an event message for publishing"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_471dfd64","line":101,"updated":"2016-03-10 09:28:12.000000000","message":"Are samples and events different enough that we\u0027re sure we don\u0027t need to encapsulate a bit more here?","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"8658ad2a5f7c2dc44f261b0681d1559946ebdd9f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":99,"context_line":"        :param samples: Samples from pipeline after transformation"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        self._do_post(samples)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def publish_events(self, context, events):"},{"line_number":104,"context_line":"        \"\"\"Send an event message for publishing"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_5d7bf77a","line":101,"in_reply_to":"5aef4532_471dfd64","updated":"2016-03-10 16:22:52.000000000","message":"Think that the sample and event are distinct enough so that the endpoint may be able to handle. Or can add options to make it only send events, or samples or both.","commit_id":"c4c75b87f6d46d7b23525ff139e08ebc55661dd8"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests.adapters import HTTPAdapter"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":"from six.moves.urllib import parse as urlparse"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_4e3b15ec","line":17,"updated":"2016-03-11 15:49:00.000000000","message":"requests should be grouped in middle grouping.\n\nand you just import module instead of class","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, parsed_url):"},{"line_number":57,"context_line":"        super(HttpPublisher, self).__init__(parsed_url)"},{"line_number":58,"context_line":"        self.target \u003d parsed_url.geturl()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if not self.target:"},{"line_number":61,"context_line":"            raise HttpPublisherException(\u0027The path for the http publisher \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_8803540f","line":58,"updated":"2016-03-11 15:49:00.000000000","message":"this includes the query params (timeout and max_retries if present) and it probably shouldn\u0027t","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        super(HttpPublisher, self).__init__(parsed_url)"},{"line_number":58,"context_line":"        self.target \u003d parsed_url.geturl()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if not self.target:"},{"line_number":61,"context_line":"            raise HttpPublisherException(\u0027The path for the http publisher \u0027"},{"line_number":62,"context_line":"                                         \u0027is required\u0027)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_cebe05ff","line":60,"updated":"2016-03-11 15:49:00.000000000","message":"this will always pass or it will throw an exception at an earlier point","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":71,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            self.timeout \u003d 1000"},{"line_number":74,"context_line":"            self.max_retries \u003d 2"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        LOG.debug(\u0027HttpPublisher for endpoint %s is initialized!\u0027 %"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ae69f98d","line":73,"updated":"2016-03-11 15:49:00.000000000","message":"it seems weird we have two places to define same defaults","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.timeout \u003d 1000"},{"line_number":74,"context_line":"            self.max_retries \u003d 2"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        LOG.debug(\u0027HttpPublisher for endpoint %s is initialized!\u0027 %"},{"line_number":77,"context_line":"                  self.target)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_ae03b90e","line":76,"updated":"2016-03-11 15:49:00.000000000","message":"debug(_(","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        try:"},{"line_number":82,"context_line":"            return int(params.get(name)[-1])"},{"line_number":83,"context_line":"        except (ValueError, TypeError):"},{"line_number":84,"context_line":"            return default_value"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _do_post(self, data):"},{"line_number":87,"context_line":"        session \u003d requests.Session()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_d71cdb79","line":84,"updated":"2016-03-11 15:49:00.000000000","message":"should log that you\u0027re defaulting and ignoring original","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        session.mount(self.target, HTTPAdapter(max_retries\u003dself.max_retries))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        content \u003d \u0027,\u0027.join([json.dumps(item.as_dict()) for item in data])"},{"line_number":91,"context_line":"        content \u003d \u0027[\u0027 + content + \u0027]\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 % content)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_d16224d8","line":91,"updated":"2016-03-11 15:49:00.000000000","message":"this doesn\u0027t seem to be json.","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        content \u003d \u0027,\u0027.join([json.dumps(item.as_dict()) for item in data])"},{"line_number":91,"context_line":"        content \u003d \u0027[\u0027 + content + \u0027]\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        LOG.debug(\u0027Data to be posted by HttpPublisher: %s\u0027 % content)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        res \u003d session.post(self.target, data\u003dcontent, headers\u003dself.headers,"},{"line_number":96,"context_line":"                           timeout\u003dself.timeout)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_11ff6c02","line":93,"updated":"2016-03-11 15:49:00.000000000","message":"debug(_(","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        res \u003d session.post(self.target, data\u003dcontent, headers\u003dself.headers,"},{"line_number":96,"context_line":"                           timeout\u003dself.timeout)"},{"line_number":97,"context_line":"        if res.status_code \u003e\u003d 300:"},{"line_number":98,"context_line":"            LOG.error(_(\u0027Data post failed with status code %s\u0027) %"},{"line_number":99,"context_line":"                      res.status_code)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def publish_samples(self, context, samples):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_4eddd541","line":98,"updated":"2016-03-11 15:49:00.000000000","message":"error(_LE(","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6235fbdab04dff149ee246371c90da469f1dea93","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":113,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":"        self._do_post(events)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afc51ec_6e1d310f","line":115,"updated":"2016-03-11 15:49:00.000000000","message":"we post samples and events to exact same URL and expect consumers to know what the payload is?","commit_id":"ccddeb5d0510483e0cadc542e748262719366bb4"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"3f8dc6b6d3ea52dd9d92743052425ae3221778af","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests import adapters"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_3a5b3189","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"updated":"2016-03-14 04:08:19.000000000","message":"it seems better to use \"from oslo_serialization import jsonutils\"","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"746ae9cf2bba612f21de0a2d9ed08e37e4629213","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests import adapters"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_1da008f4","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"updated":"2016-03-12 03:38:12.000000000","message":"please left a blank line.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"04ad3bd7f7edcb2d349b4fa4af33a650dda11a80","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests import adapters"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_558fdccb","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"in_reply_to":"3afc51ec_3a5b3189","updated":"2016-03-14 12:43:22.000000000","message":"liusheng, do not really think having a more product specific dependency is a good thing. Any reason that you think jsonutil is better than json? doing that seems just an increase of dependency chains. I would not pull in oslo stuff unless it is absolutely necessary.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"c57bcd591425892b7536a6a8378338516b15dfab","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests import adapters"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_8645b9b4","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"in_reply_to":"3afc51ec_43228302","updated":"2016-03-14 14:07:00.000000000","message":"Julien, cool, cool. will make that change. Thanks.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0ee69a4b832e64696923378134a613d918e12170","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"import requests"},{"line_number":17,"context_line":"from requests import adapters"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_43228302","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"in_reply_to":"3afc51ec_558fdccb","updated":"2016-03-14 13:52:16.000000000","message":"jsonutils knows how to serialize a wide variety of object that json does not know (datetime, sets…) so it\u0027s a good idea to use it – it\u0027s already widely used in Ceilometer so don\u0027t worry about the dependencies","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"3f8dc6b6d3ea52dd9d92743052425ae3221778af","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            return int(params.get(name)[-1])"},{"line_number":90,"context_line":"        except (ValueError, TypeError):"},{"line_number":91,"context_line":"            LOG.debug(_(\u0027Default value %(value)s is used for %(name)s\u0027) %"},{"line_number":92,"context_line":"                      {\u0027value\u0027: default_value, \u0027name\u0027: name})"},{"line_number":93,"context_line":"            return default_value"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_5a50bd5e","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":24},"updated":"2016-03-14 04:08:19.000000000","message":"DEBUG level log don\u0027t need translation","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"64824f71d2651d8b8ab1808bdaf490c4a21356c5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            return int(params.get(name)[-1])"},{"line_number":90,"context_line":"        except (ValueError, TypeError):"},{"line_number":91,"context_line":"            LOG.debug(_(\u0027Default value %(value)s is used for %(name)s\u0027) %"},{"line_number":92,"context_line":"                      {\u0027value\u0027: default_value, \u0027name\u0027: name})"},{"line_number":93,"context_line":"            return default_value"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_d8c08ce3","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":24},"in_reply_to":"3afc51ec_35a4d0a4","updated":"2016-03-15 14:53:58.000000000","message":"yeah, i misspoke. liusheng is correct.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"04ad3bd7f7edcb2d349b4fa4af33a650dda11a80","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            return int(params.get(name)[-1])"},{"line_number":90,"context_line":"        except (ValueError, TypeError):"},{"line_number":91,"context_line":"            LOG.debug(_(\u0027Default value %(value)s is used for %(name)s\u0027) %"},{"line_number":92,"context_line":"                      {\u0027value\u0027: default_value, \u0027name\u0027: name})"},{"line_number":93,"context_line":"            return default_value"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_35a4d0a4","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":24},"in_reply_to":"3afc51ec_5a50bd5e","updated":"2016-03-14 12:43:22.000000000","message":"liusheng, I concated Gordon who indicated even debug messages should be translated but with a lower priority. That policy does not seem to be inline with other projects, I am not sure at this point. I originally did not have it marked as for translation.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"3f8dc6b6d3ea52dd9d92743052425ae3221778af","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        content \u003d \u0027,\u0027.join([json.dumps(item.as_dict()) for item in data])"},{"line_number":101,"context_line":"        content \u003d \u0027[\u0027 + content + \u0027]\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        LOG.debug(_(\u0027Data to be posted by HttpPublisher: %s\u0027) % content)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        res \u003d session.post(self.target, data\u003dcontent, headers\u003dself.headers,"},{"line_number":106,"context_line":"                           timeout\u003dself.timeout)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_da984d1e","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":20},"updated":"2016-03-14 04:08:19.000000000","message":"ditto, and, I don\u0027t think it is good to log all the data payload.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"04ad3bd7f7edcb2d349b4fa4af33a650dda11a80","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        content \u003d \u0027,\u0027.join([json.dumps(item.as_dict()) for item in data])"},{"line_number":101,"context_line":"        content \u003d \u0027[\u0027 + content + \u0027]\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        LOG.debug(_(\u0027Data to be posted by HttpPublisher: %s\u0027) % content)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        res \u003d session.post(self.target, data\u003dcontent, headers\u003dself.headers,"},{"line_number":106,"context_line":"                           timeout\u003dself.timeout)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afc51ec_1569d425","line":103,"range":{"start_line":103,"start_character":8,"end_line":103,"end_character":20},"in_reply_to":"3afc51ec_da984d1e","updated":"2016-03-14 12:43:22.000000000","message":"This is for debug uses. Not sure about the translation, but when configuration a production system, it is very important to see the actual messages being posted before your production goes alive. This is really needed, I am speaking from the experiences configuring similar things for production.","commit_id":"9b00516fc5a2765eee44a361264e606651e10351"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_serialization import jsonutils"},{"line_number":17,"context_line":"import requests"},{"line_number":18,"context_line":"from requests import adapters"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log"},{"line_number":21,"context_line":"from six.moves.urllib import parse as urlparse"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_ccc2db84","line":19,"updated":"2016-03-18 14:32:01.000000000","message":"this blank line is not needed, they both are third par module","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            publishers:"},{"line_number":51,"context_line":"                - http://host:80/path?timeout\u003d1000\u0026max_retries\u003d2"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    To use this publisher for events, the raw message needs to be present in"},{"line_number":54,"context_line":"    the event. To enable that, ceilometer.conf file will need to have a"},{"line_number":55,"context_line":"    section like the following:"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_4cd9ab56","line":53,"range":{"start_line":53,"start_character":66,"end_line":53,"end_character":73},"updated":"2016-03-18 14:32:01.000000000","message":"s/represent/represented/","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            publishers:"},{"line_number":51,"context_line":"                - http://host:80/path?timeout\u003d1000\u0026max_retries\u003d2"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    To use this publisher for events, the raw message needs to be present in"},{"line_number":54,"context_line":"    the event. To enable that, ceilometer.conf file will need to have a"},{"line_number":55,"context_line":"    section like the following:"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_c2c9ffad","line":53,"range":{"start_line":53,"start_character":66,"end_line":53,"end_character":73},"in_reply_to":"1af94dfe_4cd9ab56","updated":"2016-03-18 14:48:51.000000000","message":"raw message must be present in the message body. Why should \nit be represented?","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"          - name: event_sink"},{"line_number":64,"context_line":"            transformers:"},{"line_number":65,"context_line":"            triggers:"},{"line_number":66,"context_line":"            publishers:"},{"line_number":67,"context_line":"                - http://host:80/path?timeout\u003d1000\u0026max_retries\u003d2"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_ccae5b2d","line":65,"range":{"start_line":65,"start_character":12,"end_line":65,"end_character":20},"updated":"2016-03-18 14:32:01.000000000","message":"I cannot find any use of this field, is it really required?","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"          - name: event_sink"},{"line_number":64,"context_line":"            transformers:"},{"line_number":65,"context_line":"            triggers:"},{"line_number":66,"context_line":"            publishers:"},{"line_number":67,"context_line":"                - http://host:80/path?timeout\u003d1000\u0026max_retries\u003d2"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_820897db","line":65,"range":{"start_line":65,"start_character":12,"end_line":65,"end_character":20},"in_reply_to":"1af94dfe_ccae5b2d","updated":"2016-03-18 14:48:51.000000000","message":"Only publishers is in the interest.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deb043d12e81518f8cecaf6d1694221710d7e18d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.target \u003d parsed_url.geturl()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if not parsed_url.hostname:"},{"line_number":77,"context_line":"            raise HttpPublisherException(\u0027The hostname of an endpoint for \u0027"},{"line_number":78,"context_line":"                                         \u0027HttpPublisher is required\u0027)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # missing port and numeric port are OK, but non-numeric"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_c66bdc1c","line":77,"range":{"start_line":77,"start_character":18,"end_line":77,"end_character":40},"updated":"2016-03-18 12:38:30.000000000","message":"Not sure it\u0027s worth to have a custom exception type. Just go with ValueError.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"17fdd95b45e907a880d4cf042a9accb2638f5844","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.target \u003d parsed_url.geturl()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if not parsed_url.hostname:"},{"line_number":77,"context_line":"            raise HttpPublisherException(\u0027The hostname of an endpoint for \u0027"},{"line_number":78,"context_line":"                                         \u0027HttpPublisher is required\u0027)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # missing port and numeric port are OK, but non-numeric"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_d2db927a","line":77,"range":{"start_line":77,"start_character":18,"end_line":77,"end_character":40},"in_reply_to":"1af94dfe_c66bdc1c","updated":"2016-03-18 13:34:07.000000000","message":"Will use ValueError. Thanks.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deb043d12e81518f8cecaf6d1694221710d7e18d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # missing port and numeric port are OK, but non-numeric"},{"line_number":81,"context_line":"        # port from the url string is not OK."},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            parsed_url.port"},{"line_number":84,"context_line":"        except ValueError:"},{"line_number":85,"context_line":"            raise HttpPublisherException(\u0027The port is invalid.\u0027)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_4666ac51","line":83,"updated":"2016-03-18 12:38:30.000000000","message":"Why do you raise if missing port is ok? I don\u0027t understand the code w.r.t the comment.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"17fdd95b45e907a880d4cf042a9accb2638f5844","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # missing port and numeric port are OK, but non-numeric"},{"line_number":81,"context_line":"        # port from the url string is not OK."},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            parsed_url.port"},{"line_number":84,"context_line":"        except ValueError:"},{"line_number":85,"context_line":"            raise HttpPublisherException(\u0027The port is invalid.\u0027)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_925aaaf0","line":83,"in_reply_to":"1af94dfe_4666ac51","updated":"2016-03-18 13:34:07.000000000","message":"missing port 80, like http://myhost/something, parsed_url.port is none. that is missing. I can use default port in the comment.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e03fdd2dc265c448bf2e5c2c56512044f3e511cb","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # missing port and numeric port are OK, but non-numeric"},{"line_number":81,"context_line":"        # port from the url string is not OK."},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            parsed_url.port"},{"line_number":84,"context_line":"        except ValueError:"},{"line_number":85,"context_line":"            raise HttpPublisherException(\u0027The port is invalid.\u0027)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_9d43db12","line":83,"in_reply_to":"1af94dfe_925aaaf0","updated":"2016-03-18 13:45:02.000000000","message":"Ok, so I don\u0027t understand when this will raise ValueError actually?","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"1d6c4f7e5f7e24a35498a6d0c75d03376d35cb16","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_2a440c19","line":92,"updated":"2016-03-18 09:33:58.000000000","message":"Why not using self instead of HttpPublisher ?, it\u0027s more readable.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_8c98ce1d","line":92,"range":{"start_line":92,"start_character":71,"end_line":92,"end_character":75},"updated":"2016-03-18 14:32:01.000000000","message":"are you sure to timeout 1000 seconds by default?","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"a43f9ae682d148b8cc12b220d4b7b602546433fd","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_c243bf6a","line":92,"range":{"start_line":92,"start_character":71,"end_line":92,"end_character":75},"in_reply_to":"1af94dfe_221543e4","updated":"2016-03-18 14:54:44.000000000","message":"checked the doc, the timeout is in seconds, not milliseconds, will change it to 1.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deb043d12e81518f8cecaf6d1694221710d7e18d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_a634d049","line":92,"in_reply_to":"1af94dfe_2a440c19","updated":"2016-03-18 12:38:30.000000000","message":"I guess that\u0027s because most people don\u0027t think you can use self with a staticmethod while you can :)","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"17fdd95b45e907a880d4cf042a9accb2638f5844","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_7208beda","line":92,"in_reply_to":"1af94dfe_2a440c19","updated":"2016-03-18 13:34:07.000000000","message":"Will use self.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Handling other configuration options in the query string"},{"line_number":90,"context_line":"        if parsed_url.query:"},{"line_number":91,"context_line":"            params \u003d urlparse.parse_qs(parsed_url.query)"},{"line_number":92,"context_line":"            self.timeout \u003d HttpPublisher._get_param(params, \u0027timeout\u0027, 1000)"},{"line_number":93,"context_line":"            self.max_retries \u003d HttpPublisher._get_param(params,"},{"line_number":94,"context_line":"                                                        \u0027max_retries\u0027, 2)"},{"line_number":95,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_221543e4","line":92,"range":{"start_line":92,"start_character":71,"end_line":92,"end_character":75},"in_reply_to":"1af94dfe_8c98ce1d","updated":"2016-03-18 14:48:51.000000000","message":"I made 1000 milliseconds as the default. One can change it\nto any number they prefer.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"1d6c4f7e5f7e24a35498a6d0c75d03376d35cb16","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":140,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        data \u003d [evt.as_dict().get(\u0027raw\u0027).get(\u0027payload\u0027)"},{"line_number":143,"context_line":"                for evt in events if evt.as_dict().get(\u0027raw\u0027, {})."},{"line_number":144,"context_line":"                get(\u0027payload\u0027)]"},{"line_number":145,"context_line":"        self._do_post(data)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_8ae9e0e8","line":142,"updated":"2016-03-18 09:33:58.000000000","message":"Using get() can return None, it\u0027s preferable to use [] when the dict must have the value, raised exception in case of the dict in incomplete will be more comprehensible than \u0027NoneType\u0027 object has no attribute \u0027get\u0027.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"17fdd95b45e907a880d4cf042a9accb2638f5844","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":140,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        data \u003d [evt.as_dict().get(\u0027raw\u0027).get(\u0027payload\u0027)"},{"line_number":143,"context_line":"                for evt in events if evt.as_dict().get(\u0027raw\u0027, {})."},{"line_number":144,"context_line":"                get(\u0027payload\u0027)]"},{"line_number":145,"context_line":"        self._do_post(data)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_722f1e3f","line":142,"in_reply_to":"1af94dfe_8ae9e0e8","updated":"2016-03-18 13:34:07.000000000","message":"will use [] in this case. the later if has checked prevents the NoneType.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":140,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        data \u003d [evt.as_dict().get(\u0027raw\u0027).get(\u0027payload\u0027)"},{"line_number":143,"context_line":"                for evt in events if evt.as_dict().get(\u0027raw\u0027, {})."},{"line_number":144,"context_line":"                get(\u0027payload\u0027)]"},{"line_number":145,"context_line":"        self._do_post(data)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_8c1bae80","line":144,"range":{"start_line":142,"start_character":8,"end_line":144,"end_character":31},"updated":"2016-03-18 14:32:01.000000000","message":"filter then map?\nor you can write simple loop to avoid the a bit complex expression\n\nand data is empty should be considered, because you are filtering out something, they could be all filtered out","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        :param context: Execution context from the service or RPC call"},{"line_number":140,"context_line":"        :param events: events from pipeline after transformation"},{"line_number":141,"context_line":"        \"\"\""},{"line_number":142,"context_line":"        data \u003d [evt.as_dict().get(\u0027raw\u0027).get(\u0027payload\u0027)"},{"line_number":143,"context_line":"                for evt in events if evt.as_dict().get(\u0027raw\u0027, {})."},{"line_number":144,"context_line":"                get(\u0027payload\u0027)]"},{"line_number":145,"context_line":"        self._do_post(data)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_229a636e","line":144,"range":{"start_line":142,"start_character":8,"end_line":144,"end_character":31},"in_reply_to":"1af94dfe_8c1bae80","updated":"2016-03-18 14:48:51.000000000","message":"do not think this is a complex expression. Very typical of\npython I would say.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"}],"ceilometer/tests/unit/publisher/test_http.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"\"\"\"Tests for ceilometer/publisher/direct.py"},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import datetime"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_ef118453","line":15,"range":{"start_line":15,"start_character":34,"end_line":15,"end_character":40},"updated":"2016-03-18 14:32:01.000000000","message":"do you mean http?","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"\"\"\"Tests for ceilometer/publisher/direct.py"},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import datetime"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_42768f3e","line":15,"range":{"start_line":15,"start_character":34,"end_line":15,"end_character":40},"in_reply_to":"1af94dfe_ef118453","updated":"2016-03-18 14:48:51.000000000","message":"good catch. copy/paste, will change that.","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import datetime"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"from requests import Session"},{"line_number":21,"context_line":"import uuid"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslotest import base"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_af701ca5","line":20,"range":{"start_line":19,"start_character":0,"end_line":20,"end_character":28},"updated":"2016-03-18 14:32:01.000000000","message":"I think they should be in third party group","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        publisher \u003d http.HttpPublisher(parsed_url)"},{"line_number":90,"context_line":"        # By default, timeout and retry_count should be set to 1000 and 2"},{"line_number":91,"context_line":"        # respectively"},{"line_number":92,"context_line":"        self.assertEqual(publisher.timeout, 1000)"},{"line_number":93,"context_line":"        self.assertEqual(publisher.max_retries, 2)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":96,"context_line":"                                       \u0027timeout\u003d19\u0026max_retries\u003d4\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_4fbeb8ff","line":93,"range":{"start_line":92,"start_character":8,"end_line":93,"end_character":50},"updated":"2016-03-18 14:32:01.000000000","message":"assertEqual(expected, observed)","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        publisher \u003d http.HttpPublisher(parsed_url)"},{"line_number":90,"context_line":"        # By default, timeout and retry_count should be set to 1000 and 2"},{"line_number":91,"context_line":"        # respectively"},{"line_number":92,"context_line":"        self.assertEqual(publisher.timeout, 1000)"},{"line_number":93,"context_line":"        self.assertEqual(publisher.max_retries, 2)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":96,"context_line":"                                       \u0027timeout\u003d19\u0026max_retries\u003d4\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_22a8a376","line":93,"range":{"start_line":92,"start_character":8,"end_line":93,"end_character":50},"in_reply_to":"1af94dfe_4fbeb8ff","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":96,"context_line":"                                       \u0027timeout\u003d19\u0026max_retries\u003d4\u0027)"},{"line_number":97,"context_line":"        publisher \u003d http.HttpPublisher(parsed_url)"},{"line_number":98,"context_line":"        self.assertEqual(publisher.timeout, 19)"},{"line_number":99,"context_line":"        self.assertEqual(publisher.max_retries, 4)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":102,"context_line":"                                       \u0027timeout\u003d19\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_0f4f9037","line":99,"range":{"start_line":98,"start_character":8,"end_line":99,"end_character":49},"updated":"2016-03-18 14:32:01.000000000","message":"ditto","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":96,"context_line":"                                       \u0027timeout\u003d19\u0026max_retries\u003d4\u0027)"},{"line_number":97,"context_line":"        publisher \u003d http.HttpPublisher(parsed_url)"},{"line_number":98,"context_line":"        self.assertEqual(publisher.timeout, 19)"},{"line_number":99,"context_line":"        self.assertEqual(publisher.max_retries, 4)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        parsed_url \u003d urlparse.urlparse(\u0027http://localhost:90/path1?\u0027"},{"line_number":102,"context_line":"                                       \u0027timeout\u003d19\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_62bc6bbb","line":99,"range":{"start_line":98,"start_character":8,"end_line":99,"end_character":49},"in_reply_to":"1af94dfe_0f4f9037","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":122,"context_line":"            publisher.publish_samples(None, self.sample_data)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":125,"context_line":"        self.assertFalse(thelog.error.called)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        res.status_code \u003d 401"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_8f08c0db","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":45},"updated":"2016-03-18 14:32:01.000000000","message":"ditto","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":122,"context_line":"            publisher.publish_samples(None, self.sample_data)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":125,"context_line":"        self.assertFalse(thelog.error.called)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        res.status_code \u003d 401"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_02ce4762","line":124,"range":{"start_line":124,"start_character":8,"end_line":124,"end_character":45},"in_reply_to":"1af94dfe_8f08c0db","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":129,"context_line":"            publisher.publish_samples(None, self.sample_data)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":132,"context_line":"        self.assertTrue(thelog.error.called)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @mock.patch(\u0027ceilometer.publisher.http.LOG\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_af113c06","line":131,"range":{"start_line":131,"start_character":8,"end_line":131,"end_character":45},"updated":"2016-03-18 14:32:01.000000000","message":"ditto","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":129,"context_line":"            publisher.publish_samples(None, self.sample_data)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":132,"context_line":"        self.assertTrue(thelog.error.called)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @mock.patch(\u0027ceilometer.publisher.http.LOG\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_82e097ce","line":131,"range":{"start_line":131,"start_character":8,"end_line":131,"end_character":45},"in_reply_to":"1af94dfe_af113c06","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":143,"context_line":"            publisher.publish_events(None, self.event_data)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":146,"context_line":"        self.assertFalse(thelog.error.called)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        res.status_code \u003d 401"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_cf25a85c","line":145,"range":{"start_line":145,"start_character":8,"end_line":145,"end_character":45},"updated":"2016-03-18 14:32:01.000000000","message":"ditto","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":143,"context_line":"            publisher.publish_events(None, self.event_data)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":146,"context_line":"        self.assertFalse(thelog.error.called)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        res.status_code \u003d 401"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_62e3cbd9","line":145,"range":{"start_line":145,"start_character":8,"end_line":145,"end_character":45},"in_reply_to":"1af94dfe_cf25a85c","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"03a4b614ab6168971fd6e3776d21591132726c08","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":150,"context_line":"            publisher.publish_samples(None, self.event_data)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":153,"context_line":"        self.assertTrue(thelog.error.called)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_ef1ea40a","line":152,"range":{"start_line":152,"start_character":8,"end_line":152,"end_character":45},"updated":"2016-03-18 14:32:01.000000000","message":"ditto","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5e0562e9fafdc33fc7b9fed77364e25689540945","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        with mock.patch.object(Session, \u0027post\u0027, return_value\u003dres) as m_req:"},{"line_number":150,"context_line":"            publisher.publish_samples(None, self.event_data)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        self.assertEqual(m_req.call_count, 1)"},{"line_number":153,"context_line":"        self.assertTrue(thelog.error.called)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1af94dfe_c2e61fe7","line":152,"range":{"start_line":152,"start_character":8,"end_line":152,"end_character":45},"in_reply_to":"1af94dfe_ef1ea40a","updated":"2016-03-18 14:48:51.000000000","message":"Done","commit_id":"408379705dbde8b128d3e37007b56ecaa698fbb8"}]}
