)]}'
{"watcher/datasources/grafana.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"cea66713f83ef3b5040b817537ab8b9b79716ec3","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        except KeyError:"},{"line_number":183,"context_line":"            LOG.error(\"Metric: {0} does not appear in the current Grafana\""},{"line_number":184,"context_line":"                      \"metric map\".format(metric))"},{"line_number":185,"context_line":"            raise exception.NoSuchMetric"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        db \u003d self.METRIC_MAP[metric][\u0027db\u0027]"},{"line_number":188,"context_line":"        project \u003d self.METRIC_MAP[metric][\u0027project\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"bfb3d3c7_0dbf2aaa","line":185,"range":{"start_line":185,"start_character":28,"end_line":185,"end_character":40},"updated":"2019-05-31 07:58:50.000000000","message":"new exception? I can\u0027t find it.","commit_id":"d09d3cc5d30ed82d68fd8ef25c8f92b26e71f245"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"8244e36aa1963a414cfd6b435f41da2e9112c70c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        except KeyError:"},{"line_number":183,"context_line":"            LOG.error(\"Metric: {0} does not appear in the current Grafana\""},{"line_number":184,"context_line":"                      \"metric map\".format(metric))"},{"line_number":185,"context_line":"            raise exception.NoSuchMetric"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        db \u003d self.METRIC_MAP[metric][\u0027db\u0027]"},{"line_number":188,"context_line":"        project \u003d self.METRIC_MAP[metric][\u0027project\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"bfb3d3c7_0efba1c0","line":185,"range":{"start_line":185,"start_character":28,"end_line":185,"end_character":40},"in_reply_to":"bfb3d3c7_0dbf2aaa","updated":"2019-05-31 09:47:09.000000000","message":"It has been removed with the recent merge of https://review.opendev.org/658127 I will rebase and use the new names.","commit_id":"d09d3cc5d30ed82d68fd8ef25c8f92b26e71f245"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"4d9e253644efef80aa5d9940336539f60d86d6a7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        except KeyError:"},{"line_number":183,"context_line":"            LOG.error(\"Metric: {0} does not appear in the current Grafana\""},{"line_number":184,"context_line":"                      \"metric map\".format(metric))"},{"line_number":185,"context_line":"            raise exception.NoSuchMetric"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        db \u003d self.METRIC_MAP[metric][\u0027db\u0027]"},{"line_number":188,"context_line":"        project \u003d self.METRIC_MAP[metric][\u0027project\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"9fb8cfa7_4768d3b7","line":185,"range":{"start_line":185,"start_character":28,"end_line":185,"end_character":40},"in_reply_to":"bfb3d3c7_0efba1c0","updated":"2019-06-12 09:12:04.000000000","message":"Done","commit_id":"d09d3cc5d30ed82d68fd8ef25c8f92b26e71f245"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                    }"},{"line_number":107,"context_line":"            except KeyError as e:"},{"line_number":108,"context_line":"                LOG.error(e)"},{"line_number":109,"context_line":"                pass"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _build_translator_schema(self, metric, db, attribute, query, resource,"},{"line_number":112,"context_line":"                                 resource_type, period, aggregate,"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_7600b135","line":109,"range":{"start_line":109,"start_character":15,"end_line":109,"end_character":20},"updated":"2019-07-08 02:50:34.000000000","message":"This line could be deleted.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                    }"},{"line_number":107,"context_line":"            except KeyError as e:"},{"line_number":108,"context_line":"                LOG.error(e)"},{"line_number":109,"context_line":"                pass"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def _build_translator_schema(self, metric, db, attribute, query, resource,"},{"line_number":112,"context_line":"                                 resource_type, period, aggregate,"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_a487b30f","line":109,"range":{"start_line":109,"start_character":15,"end_line":109,"end_character":20},"in_reply_to":"7faddb67_7600b135","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def _request(self, params, project_id):"},{"line_number":130,"context_line":"        \"\"\"Make the request to the endpoint to retrieve data"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        If the request should fail, determines what error to raise."},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if self.configured is False:"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_b6a3894f","line":132,"range":{"start_line":132,"start_character":23,"end_line":132,"end_character":29},"updated":"2019-07-08 02:50:34.000000000","message":"should is not suitable here.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def _request(self, params, project_id):"},{"line_number":130,"context_line":"        \"\"\"Make the request to the endpoint to retrieve data"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        If the request should fail, determines what error to raise."},{"line_number":133,"context_line":"        \"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if self.configured is False:"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_447eff19","line":132,"range":{"start_line":132,"start_character":23,"end_line":132,"end_character":29},"in_reply_to":"7faddb67_b6a3894f","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if self.configured is False:"},{"line_number":136,"context_line":"            raise exception.DataSourceNotAvailable(self.NAME)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        r \u003d requests.get(self._base_url + str(project_id) + \u0027/query\u0027,"},{"line_number":139,"context_line":"                         params\u003dparams, headers\u003dself._headers)"},{"line_number":140,"context_line":"        if r.status_code \u003d\u003d 200:"},{"line_number":141,"context_line":"            return r"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_568815c5","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":9},"updated":"2019-07-08 02:50:34.000000000","message":"Maybe resp is better.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if self.configured is False:"},{"line_number":136,"context_line":"            raise exception.DataSourceNotAvailable(self.NAME)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        r \u003d requests.get(self._base_url + str(project_id) + \u0027/query\u0027,"},{"line_number":139,"context_line":"                         params\u003dparams, headers\u003dself._headers)"},{"line_number":140,"context_line":"        if r.status_code \u003d\u003d 200:"},{"line_number":141,"context_line":"            return r"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_04780728","line":138,"range":{"start_line":138,"start_character":8,"end_line":138,"end_character":9},"in_reply_to":"7faddb67_568815c5","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    def statistic_aggregation(self, resource\u003dNone, resource_type\u003dNone,"},{"line_number":149,"context_line":"                              meter_name\u003dNone, period\u003d300, aggregate\u003d\u0027mean\u0027,"},{"line_number":150,"context_line":"                              granularity\u003d300):"},{"line_number":151,"context_line":"        \"\"\"Get the value fot the specific metric based on specified parameters"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_368f99cd","line":151,"range":{"start_line":151,"start_character":25,"end_line":151,"end_character":28},"updated":"2019-07-08 02:50:34.000000000","message":"for","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    def statistic_aggregation(self, resource\u003dNone, resource_type\u003dNone,"},{"line_number":149,"context_line":"                              meter_name\u003dNone, period\u003d300, aggregate\u003d\u0027mean\u0027,"},{"line_number":150,"context_line":"                              granularity\u003d300):"},{"line_number":151,"context_line":"        \"\"\"Get the value fot the specific metric based on specified parameters"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_2473c34f","line":151,"range":{"start_line":151,"start_character":25,"end_line":151,"end_character":28},"in_reply_to":"7faddb67_368f99cd","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            self.METRIC_MAP[meter_name]"},{"line_number":157,"context_line":"        except KeyError:"},{"line_number":158,"context_line":"            LOG.error(\"Metric: {0} does not appear in the current Grafana\""},{"line_number":159,"context_line":"                      \"metric map\".format(meter_name))"},{"line_number":160,"context_line":"            raise exception.MetricNotAvailable(metric\u003dmeter_name)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_d6bde568","line":158,"range":{"start_line":158,"start_character":72,"end_line":158,"end_character":73},"updated":"2019-07-08 02:50:34.000000000","message":"space","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            self.METRIC_MAP[meter_name]"},{"line_number":157,"context_line":"        except KeyError:"},{"line_number":158,"context_line":"            LOG.error(\"Metric: {0} does not appear in the current Grafana\""},{"line_number":159,"context_line":"                      \"metric map\".format(meter_name))"},{"line_number":160,"context_line":"            raise exception.MetricNotAvailable(metric\u003dmeter_name)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_8499576f","line":158,"range":{"start_line":158,"start_character":72,"end_line":158,"end_character":73},"in_reply_to":"7faddb67_d6bde568","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        translator_name \u003d self.METRIC_MAP[meter_name][\u0027translator\u0027]"},{"line_number":166,"context_line":"        query \u003d self.METRIC_MAP[meter_name][\u0027query\u0027]"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        if aggregate \u003d\u003d \u0027avg\u0027:"},{"line_number":169,"context_line":"            aggregate \u003d \u0027mean\u0027"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        data \u003d self._build_translator_schema("}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_f6c261e9","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":30},"updated":"2019-07-08 02:50:34.000000000","message":"I suggest to add a comment here to explain why this conversion is needed.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        translator_name \u003d self.METRIC_MAP[meter_name][\u0027translator\u0027]"},{"line_number":166,"context_line":"        query \u003d self.METRIC_MAP[meter_name][\u0027query\u0027]"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        if aggregate \u003d\u003d \u0027avg\u0027:"},{"line_number":169,"context_line":"            aggregate \u003d \u0027mean\u0027"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        data \u003d self._build_translator_schema("}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_64c77b47","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":30},"in_reply_to":"7faddb67_f6c261e9","updated":"2019-07-09 14:22:11.000000000","message":"Can be removed avg is no longer a valid value for the aggregate parameter.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        kwargs \u003d {k: v for k, v in raw_kwargs.items() if k and v}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        r \u003d self.query_retry(self._request, **kwargs)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        result \u003d translator.extract_result(r.content)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_b6bce969","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":9},"updated":"2019-07-08 02:50:34.000000000","message":"ditto.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        kwargs \u003d {k: v for k, v in raw_kwargs.items() if k and v}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        r \u003d self.query_retry(self._request, **kwargs)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        result \u003d translator.extract_result(r.content)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_e4e04bcf","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":9},"in_reply_to":"7faddb67_b6bce969","updated":"2019-07-09 14:22:11.000000000","message":"Done","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"}],"watcher/datasources/grafana_translator/base.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"cea66713f83ef3b5040b817537ab8b9b79716ec3","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for key, value in reference_data.items():"},{"line_number":80,"context_line":"            if value is None and key not in optionals:"},{"line_number":81,"context_line":"                raise exception.InvalidParameter(parameter\u003dkey,"},{"line_number":82,"context_line":"                                                 parameter_type\u003d\u0027not None\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        if reference_data[\u0027resource_type\u0027] not in self.RESOURCE_TYPES:"},{"line_number":85,"context_line":"            raise exception.InvalidParameter(parameter\u003d\u0027resource_type\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"bfb3d3c7_1253c53a","line":82,"range":{"start_line":82,"start_character":49,"end_line":82,"end_character":73},"updated":"2019-05-31 07:58:50.000000000","message":"It\u0027s confusing, I think it\u0027s should be value,\nsuch as msg_fmt\u003d\u0027The value %(value) of %(parameter) is invalid\u0027\nInvalidParameter(value\u003dNone, parameter\u003dkey)","commit_id":"d09d3cc5d30ed82d68fd8ef25c8f92b26e71f245"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"4d9e253644efef80aa5d9940336539f60d86d6a7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for key, value in reference_data.items():"},{"line_number":80,"context_line":"            if value is None and key not in optionals:"},{"line_number":81,"context_line":"                raise exception.InvalidParameter(parameter\u003dkey,"},{"line_number":82,"context_line":"                                                 parameter_type\u003d\u0027not None\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        if reference_data[\u0027resource_type\u0027] not in self.RESOURCE_TYPES:"},{"line_number":85,"context_line":"            raise exception.InvalidParameter(parameter\u003d\u0027resource_type\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9fb8cfa7_4772137d","line":82,"range":{"start_line":82,"start_character":49,"end_line":82,"end_character":73},"in_reply_to":"bfb3d3c7_1253c53a","updated":"2019-06-12 09:12:04.000000000","message":"Done","commit_id":"d09d3cc5d30ed82d68fd8ef25c8f92b26e71f245"}],"watcher/datasources/grafana_translator/influxdb.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7898924bed954bd85f9fe7af8aa56ff1e783a4af","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def extract_result(self, raw_results):"},{"line_number":73,"context_line":"        \"\"\"\"\"\""},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            result \u003d jsonutils.loads(raw_results)"},{"line_number":76,"context_line":"            result \u003d result[\u0027results\u0027][0][\u0027series\u0027][0]"},{"line_number":77,"context_line":"            index_aggregate \u003d result[\u0027columns\u0027].index(self._data[\u0027aggregate\u0027])"},{"line_number":78,"context_line":"            return result[\u0027values\u0027][0][index_aggregate]"}],"source_content_type":"text/x-python","patch_set":30,"id":"9fb8cfa7_ce0b808b","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":18},"updated":"2019-06-27 09:29:47.000000000","message":"could you give a response example or reference link?","commit_id":"bb6dfb484a69d4a4f456874f5c4ef77ad5fe6fd1"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"b251474009d1a89a85bfd715aab0cf55aabee185","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def extract_result(self, raw_results):"},{"line_number":73,"context_line":"        \"\"\"\"\"\""},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            result \u003d jsonutils.loads(raw_results)"},{"line_number":76,"context_line":"            result \u003d result[\u0027results\u0027][0][\u0027series\u0027][0]"},{"line_number":77,"context_line":"            index_aggregate \u003d result[\u0027columns\u0027].index(self._data[\u0027aggregate\u0027])"},{"line_number":78,"context_line":"            return result[\u0027values\u0027][0][index_aggregate]"}],"source_content_type":"text/x-python","patch_set":30,"id":"9fb8cfa7_644db139","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":18},"in_reply_to":"9fb8cfa7_ce0b808b","updated":"2019-06-29 06:05:50.000000000","message":"Lets try reference the documentation as much as possible and use that as a single point of reference that we can keep up to date.","commit_id":"bb6dfb484a69d4a4f456874f5c4ef77ad5fe6fd1"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def build_params(self):"},{"line_number":39,"context_line":"        \"\"\"\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        d \u003d self._data"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        retention_period \u003d None"},{"line_number":44,"context_line":"        available_periods \u003d CONF.grafana_translators.retention_periods.items()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_f667c124","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":9},"updated":"2019-07-08 02:50:34.000000000","message":"data","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def build_params(self):"},{"line_number":39,"context_line":"        \"\"\"\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        d \u003d self._data"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        retention_period \u003d None"},{"line_number":44,"context_line":"        available_periods \u003d CONF.grafana_translators.retention_periods.items()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_0449e7ce","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":9},"in_reply_to":"7faddb67_f667c124","updated":"2019-07-09 14:22:11.000000000","message":"I think changing this to data will impact readability but done.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"}],"watcher/tests/datasources/grafana_translators/test_base.py":[{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestBaseGrafanaTranslator, self).setUp()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_validate_data(self):"},{"line_number":69,"context_line":"        \"\"\"Initialize InfluxDBGrafanaTranslator and check data validation\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        t_base_translator \u003d base_translator.BaseGrafanaTranslator("}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_963a0de5","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":26},"updated":"2019-07-08 02:50:34.000000000","message":"IMO, test_validate_data_success maybe better if we use test_validate_data_error.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"723a99b3b5afb5780e5cba8ab73492107a555815","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestBaseGrafanaTranslator, self).setUp()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_validate_data(self):"},{"line_number":69,"context_line":"        \"\"\"Initialize InfluxDBGrafanaTranslator and check data validation\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        t_base_translator \u003d base_translator.BaseGrafanaTranslator("}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_f1500461","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":26},"in_reply_to":"7faddb67_84eab772","updated":"2019-07-10 01:11:16.000000000","message":"I agree with you. Thanks.","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"89677af2599fc3f0ef73d1deebc48c16834a3220","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestBaseGrafanaTranslator, self).setUp()"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_validate_data(self):"},{"line_number":69,"context_line":"        \"\"\"Initialize InfluxDBGrafanaTranslator and check data validation\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        t_base_translator \u003d base_translator.BaseGrafanaTranslator("}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_84eab772","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":26},"in_reply_to":"7faddb67_963a0de5","updated":"2019-07-09 14:22:11.000000000","message":"In almost if not all tests in Watcher\u0027s codebase the tests do not have _success appended if they are for the working case. \n\nI think with would not make sense to start doing it now unless we change all the tests names in Watcher codebase so that it would be consistent. \n\nIn test_manager a case is called test_get_backend and not test_get_backend_success for example. Similarly in test_monasca_helper a case is called test_monasca_statistic_aggregation and not test_monasca_statistic_aggregation_success","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"}],"watcher/tests/datasources/test_grafana_helper.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"dfd11535a60ec94e382d1c48bd0a8a3c727aa009","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        result \u003d t_grafana.statistic_aggregation("},{"line_number":221,"context_line":"            self.m_compute_node, \u0027compute_node\u0027, \u0027host_cpu_usage\u0027, 60)"},{"line_number":222,"context_line":"        self.assertEqual(result, 67.3550078657577)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(grafana.GrafanaHelper, \u0027_request\u0027)"},{"line_number":225,"context_line":"    def test_get_host_cpu_usage(self, m_request):"},{"line_number":226,"context_line":"        m_request.return_value.content \u003d \"{ \\\"results\\\": [{ \\\"series\\\": [{ \" \\"}],"source_content_type":"text/x-python","patch_set":31,"id":"9fb8cfa7_8a5787ca","line":223,"updated":"2019-07-01 06:04:10.000000000","message":"It\u0027s better to add unit tests for all methods, such as get_host_ram_usage, get_host_outlet_temperature, get_host_inlet_temperature and so on.","commit_id":"0d1314376ca7b61b3830bc23741a17e67795a3fc"},{"author":{"_account_id":29911,"name":"Dantali0n","email":"info@dantalion.nl","username":"Dantali0n"},"change_message_id":"d638819b0ea881c872750169aab90fa18bca4ead","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        result \u003d t_grafana.statistic_aggregation("},{"line_number":221,"context_line":"            self.m_compute_node, \u0027compute_node\u0027, \u0027host_cpu_usage\u0027, 60)"},{"line_number":222,"context_line":"        self.assertEqual(result, 67.3550078657577)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(grafana.GrafanaHelper, \u0027_request\u0027)"},{"line_number":225,"context_line":"    def test_get_host_cpu_usage(self, m_request):"},{"line_number":226,"context_line":"        m_request.return_value.content \u003d \"{ \\\"results\\\": [{ \\\"series\\\": [{ \" \\"}],"source_content_type":"text/x-python","patch_set":31,"id":"9fb8cfa7_b0351a47","line":223,"in_reply_to":"9fb8cfa7_8a5787ca","updated":"2019-07-01 09:04:31.000000000","message":"Done","commit_id":"0d1314376ca7b61b3830bc23741a17e67795a3fc"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"fd6cea9f73b1580fdb09b84bfee4fcf83851882f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            human_id\u003d\u0027example.hostname\u0027"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_configured(self):"},{"line_number":86,"context_line":"        \"\"\"Initialize GrafanaHelper and check if configured is true\"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        t_grafana \u003d grafana.GrafanaHelper(osc\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":34,"id":"7faddb67_9613ed66","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":23},"updated":"2019-07-08 02:50:34.000000000","message":"test_configured_ok or test_configured_success","commit_id":"1752f6c42f1881118004b8cdd96004a5a6fdd9b3"}]}
