)]}'
{"ceilometer/network/statistics/__init__.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0c18efa0ae0c209d6883ace4859a92c44f7abf81","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    @staticmethod"},{"line_number":60,"context_line":"    def get_driver(scheme):"},{"line_number":61,"context_line":"        if scheme not in _Base.drivers:"},{"line_number":62,"context_line":"            _Base.drivers[scheme] \u003d _driver.DriverManager(_Base.NAMESPACE,"},{"line_number":63,"context_line":"                                                          scheme).driver()"},{"line_number":64,"context_line":"        return _Base.drivers[scheme]"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8pc%3D","line":62,"updated":"2014-03-11 04:36:04.000000000","message":"thanks for making this update!","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bc04515f327d24367db89055276a4a7223f66ee4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return parts, params"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @staticmethod"},{"line_number":60,"context_line":"    def get_driver(scheme):"},{"line_number":61,"context_line":"        if scheme not in _Base.drivers:"},{"line_number":62,"context_line":"            _Base.drivers[scheme] \u003d _driver.DriverManager(_Base.NAMESPACE,"},{"line_number":63,"context_line":"                                                          scheme).driver()"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAVn%2F%2B6tI%3D","line":60,"updated":"2014-03-11 10:06:23.000000000","message":"This should not be static if you _Base, you should rely on self actually. That\u0027s not a big deal though.","commit_id":"08cb9a36517456e66fd41e8d220b05ce814ddce6"}],"ceilometer/network/statistics/opendaylight/__init__.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"a474e4677896cf9d0ee4fdc1376dabb6c3c9c845","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class OpenDayLightDriver(driver.Driver):"},{"line_number":31,"context_line":"    \"\"\"Driver of network info collector from OpenDaylight."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    This driver uses resources in \"pipline.yaml\"."},{"line_number":34,"context_line":"    Resource requires below conditions:"},{"line_number":35,"context_line":"    * resource is url"},{"line_number":36,"context_line":"    * scheme is \"opendaylight\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2Fj4s%3D","line":33,"updated":"2014-02-12 10:57:08.000000000","message":"I think it\u0027s typo and there should be pipeline.yaml","commit_id":"14480cc477a8b3cb0662951a073218f5954722e4"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d881f387b892fc87da49c28926bf7b74d7a10b55","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class OpenDayLightDriver(driver.Driver):"},{"line_number":31,"context_line":"    \"\"\"Driver of network info collector from OpenDaylight."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    This driver uses resources in \"pipline.yaml\"."},{"line_number":34,"context_line":"    Resource requires below conditions:"},{"line_number":35,"context_line":"    * resource is url"},{"line_number":36,"context_line":"    * scheme is \"opendaylight\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUX%2F%2FUmE%3D","line":33,"in_reply_to":"AAAAUX%2F%2Fj4s%3D","updated":"2014-02-14 00:02:18.000000000","message":"Done","commit_id":"14480cc477a8b3cb0662951a073218f5954722e4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            http://127.0.0.1:8080/controller/nb/v2/statistics/default/flow"},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_my_resource(self, resource):"},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BVI%3D","line":63,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            http://127.0.0.1:8080/controller/nb/v2/statistics/default/flow"},{"line_number":61,"context_line":"    \"\"\""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_my_resource(self, resource):"},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F9Eg%3D","line":63,"in_reply_to":"AAAAVn%2F%2F%2BVI%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_my_resource(self, resource):"},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            # This is not url"},{"line_number":68,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BKc%3D","line":65,"updated":"2014-03-03 03:54:46.000000000","message":"Could we use openstack.common.network_utils.urlsplit here instead?","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _parse_my_resource(self, resource):"},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            # This is not url"},{"line_number":68,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0NU%3D","line":65,"in_reply_to":"AAAAVn%2F%2F%2BKc%3D","updated":"2014-03-04 07:20:59.000000000","message":"Thank you.\nIt is so helpful.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            # This is not url"},{"line_number":68,"context_line":"            return None"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BT4%3D","line":67,"updated":"2014-03-03 03:54:46.000000000","message":"Do we plan to support resource definition to be anything other than string? If not, I prefer let the exception to be caught by the central agent manager. Or at least we should log something here.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            parse_url \u003d url_parse.urlparse(resource)"},{"line_number":66,"context_line":"        except Exception:"},{"line_number":67,"context_line":"            # This is not url"},{"line_number":68,"context_line":"            return None"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fzw0%3D","line":67,"in_reply_to":"AAAAVn%2F%2F%2BT4%3D","updated":"2014-03-04 07:20:59.000000000","message":"I thought the urlparse will raise exception in some case even if resource is string.\nThis try-except is unneccessary.\nI removed it.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"},{"line_number":71,"context_line":"            # Scheme is not \u0027opendaylight\u0027"},{"line_number":72,"context_line":"            return None"},{"line_number":73,"context_line":"        http_url_parts \u003d url_parse.ParseResult(\u0027http\u0027,"},{"line_number":74,"context_line":"                                               parse_url.netloc,"},{"line_number":75,"context_line":"                                               parse_url.path,"},{"line_number":76,"context_line":"                                               parse_url.params,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BKM%3D","line":73,"updated":"2014-03-03 03:54:46.000000000","message":"Why bother to recreate and reparse here again? How about directly return the tuples from parse_url?","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"},{"line_number":71,"context_line":"            # Scheme is not \u0027opendaylight\u0027"},{"line_number":72,"context_line":"            return None"},{"line_number":73,"context_line":"        http_url_parts \u003d url_parse.ParseResult(\u0027http\u0027,"},{"line_number":74,"context_line":"                                               parse_url.netloc,"},{"line_number":75,"context_line":"                                               parse_url.path,"},{"line_number":76,"context_line":"                                               parse_url.params,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F9E4%3D","line":73,"in_reply_to":"AAAAVn%2F%2F%2BKM%3D","updated":"2014-03-04 07:20:59.000000000","message":"Because \"urls_parse.urlparse\" doesn\u0027t parse a query in url when a scheme is not \u0027http\u0027 or \u0027https\u0027.\nBut \"network_utils.urlsplit\" do it.\nthe reparse will been unnecessary by \"netowrk_utils\".","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            return cache[\u0027opendaylight\u0027]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        data \u003d {}"},{"line_number":88,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        params \u003d url_parse.parse_qs(parse_url.query)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BPI%3D","line":88,"updated":"2014-03-03 03:54:46.000000000","message":"Does this means the cache is always empty? I think you should put this near the end of this method.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            return cache[\u0027opendaylight\u0027]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        data \u003d {}"},{"line_number":88,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        params \u003d url_parse.parse_qs(parse_url.query)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F9Eo%3D","line":88,"in_reply_to":"AAAAVn%2F%2F%2BPI%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        method_name \u003d \u0027_\u0027 + meter_name.replace(\u0027.\u0027, \u0027_\u0027)"},{"line_number":199,"context_line":"        return getattr(self, method_name, None)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _get_int_sample(self, key, statistic, resource_id, resource_meta):"},{"line_number":202,"context_line":"        if key not in statistic:"},{"line_number":203,"context_line":"            return None"},{"line_number":204,"context_line":"        return (int(statistic[key]), resource_id, resource_meta)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BSY%3D","line":201,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        method_name \u003d \u0027_\u0027 + meter_name.replace(\u0027.\u0027, \u0027_\u0027)"},{"line_number":199,"context_line":"        return getattr(self, method_name, None)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def _get_int_sample(self, key, statistic, resource_id, resource_meta):"},{"line_number":202,"context_line":"        if key not in statistic:"},{"line_number":203,"context_line":"            return None"},{"line_number":204,"context_line":"        return (int(statistic[key]), resource_id, resource_meta)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0JM%3D","line":201,"in_reply_to":"AAAAVn%2F%2F%2BSY%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            return None"},{"line_number":204,"context_line":"        return (int(statistic[key]), resource_id, resource_meta)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _get_properties(self, properties, prefix\u003d\u0027properties\u0027):"},{"line_number":207,"context_line":"        resource_meta \u003d {}"},{"line_number":208,"context_line":"        if properties is not None:"},{"line_number":209,"context_line":"            for k, v in six.iteritems(properties):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BSI%3D","line":206,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            return None"},{"line_number":204,"context_line":"        return (int(statistic[key]), resource_id, resource_meta)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def _get_properties(self, properties, prefix\u003d\u0027properties\u0027):"},{"line_number":207,"context_line":"        resource_meta \u003d {}"},{"line_number":208,"context_line":"        if properties is not None:"},{"line_number":209,"context_line":"            for k, v in six.iteritems(properties):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0JA%3D","line":206,"in_reply_to":"AAAAVn%2F%2F%2BSI%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BP4%3D","line":307,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"30062f40b808764c7af711cb57269103fcb831ec","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVX%2F%2Fu9w%3D","line":307,"updated":"2014-03-03 19:15:45.000000000","message":"what\u0027s the data param for? it\u0027s never used in any of these functions.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2Fzuk%3D","line":307,"in_reply_to":"AAAAVX%2F%2Fu9w%3D","updated":"2014-03-04 07:20:59.000000000","message":"I removed unneccessary data.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def _switch_port_transmit_packets(self, statistic, resource_id,"},{"line_number":312,"context_line":"                                      resource_meta, data):"},{"line_number":313,"context_line":"        return self._get_int_sample(\u0027transmitPackets\u0027,"},{"line_number":314,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BPw%3D","line":312,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def _switch_port_transmit_packets(self, statistic, resource_id,"},{"line_number":312,"context_line":"                                      resource_meta, data):"},{"line_number":313,"context_line":"        return self._get_int_sample(\u0027transmitPackets\u0027,"},{"line_number":314,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FyfA%3D","line":312,"in_reply_to":"AAAAVn%2F%2F%2BPw%3D","updated":"2014-03-04 07:20:59.000000000","message":"Is this necessary?\nThis method uses self._get_int_sample.\nShould I use OpenDayLightDriver._get_int_sample?","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        return self._get_int_sample(\u0027matchedCount\u0027,"},{"line_number":391,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _tree_dict_to_flat(self, name, value):"},{"line_number":394,"context_line":"        if name is not None:"},{"line_number":395,"context_line":"            prefix \u003d name + \u0027_\u0027"},{"line_number":396,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BPs%3D","line":393,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"30062f40b808764c7af711cb57269103fcb831ec","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        return self._get_int_sample(\u0027matchedCount\u0027,"},{"line_number":391,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _tree_dict_to_flat(self, name, value):"},{"line_number":394,"context_line":"        if name is not None:"},{"line_number":395,"context_line":"            prefix \u003d name + \u0027_\u0027"},{"line_number":396,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F278%3D","line":393,"updated":"2014-03-03 19:15:45.000000000","message":"lets reuse utils.dict_to_keyval if possible.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":390,"context_line":"        return self._get_int_sample(\u0027matchedCount\u0027,"},{"line_number":391,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def _tree_dict_to_flat(self, name, value):"},{"line_number":394,"context_line":"        if name is not None:"},{"line_number":395,"context_line":"            prefix \u003d name + \u0027_\u0027"},{"line_number":396,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0Cg%3D","line":393,"in_reply_to":"AAAAVn%2F%2F278%3D","updated":"2014-03-04 07:20:59.000000000","message":"Thank you.\nIt is great.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                                resource_meta,"},{"line_number":424,"context_line":"                                data)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    def _switch_flow(self, statistic, resource_id, resource_meta, data):"},{"line_number":427,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"    def _switch_flow_duration_seconds(self, statistic, resource_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BPo%3D","line":426,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                                resource_meta,"},{"line_number":424,"context_line":"                                data)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    def _switch_flow(self, statistic, resource_id, resource_meta, data):"},{"line_number":427,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"    def _switch_flow_duration_seconds(self, statistic, resource_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FzBI%3D","line":426,"in_reply_to":"AAAAVn%2F%2F%2BPo%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8bb0815b31f6005c9df3b4ae0bcc498bdda8af01","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            except Exception:"},{"line_number":142,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":143,"context_line":"                                \u0027NorthBound REST API\u0027))"},{"line_number":144,"context_line":"                pass"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FwwE%3D","line":144,"updated":"2014-03-04 08:58:48.000000000","message":"no need","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            except Exception:"},{"line_number":142,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":143,"context_line":"                                \u0027NorthBound REST API\u0027))"},{"line_number":144,"context_line":"                pass"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fjus%3D","line":144,"in_reply_to":"AAAAVn%2F%2FwwE%3D","updated":"2014-03-05 12:13:39.000000000","message":"Done","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8bb0815b31f6005c9df3b4ae0bcc498bdda8af01","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        for switch in data[\u0027switch\u0027][\u0027nodeProperties\u0027]:"},{"line_number":218,"context_line":"            yield extractor(switch, switch[\u0027node\u0027][\u0027id\u0027], {})"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _switch(self, statistic, resource_id, resource_meta):"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        resource_meta.update(self._get_properties(statistic.get(\u0027properties\u0027)))"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fwvw%3D","line":220,"updated":"2014-03-04 08:58:48.000000000","message":"@staticmethod","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        for switch in data[\u0027switch\u0027][\u0027nodeProperties\u0027]:"},{"line_number":218,"context_line":"            yield extractor(switch, switch[\u0027node\u0027][\u0027id\u0027], {})"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _switch(self, statistic, resource_id, resource_meta):"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        resource_meta.update(self._get_properties(statistic.get(\u0027properties\u0027)))"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fjug%3D","line":220,"in_reply_to":"AAAAVn%2F%2Fwvw%3D","updated":"2014-03-05 12:13:39.000000000","message":"Done","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8bb0815b31f6005c9df3b4ae0bcc498bdda8af01","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                yield extractor(statistic, port_statistic[\u0027node\u0027][\u0027id\u0027],"},{"line_number":232,"context_line":"                                resource_meta, data)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _switch_port(self, statistic, resource_id, resource_meta, data):"},{"line_number":235,"context_line":"        my_node_id \u003d resource_id"},{"line_number":236,"context_line":"        my_port_id \u003d statistic[\u0027nodeConnector\u0027][\u0027id\u0027]"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fwu8%3D","line":234,"updated":"2014-03-04 08:58:48.000000000","message":"@staticmethod?","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                yield extractor(statistic, port_statistic[\u0027node\u0027][\u0027id\u0027],"},{"line_number":232,"context_line":"                                resource_meta, data)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _switch_port(self, statistic, resource_id, resource_meta, data):"},{"line_number":235,"context_line":"        my_node_id \u003d resource_id"},{"line_number":236,"context_line":"        my_port_id \u003d statistic[\u0027nodeConnector\u0027][\u0027id\u0027]"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fjuk%3D","line":234,"in_reply_to":"AAAAVn%2F%2Fwu8%3D","updated":"2014-03-05 12:13:39.000000000","message":"Done","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"fbc29291fbfa39defb0d1aab195631797c29a9c2","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fqxc%3D","line":306,"updated":"2014-03-04 19:01:21.000000000","message":"seems to me that these methods can be collapsed into one method.\nseems to be very tedious to me. seems that only thing different is\nthe key used to get stuff.","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FkPI%3D","line":306,"in_reply_to":"AAAAVn%2F%2Fqxc%3D","updated":"2014-03-05 12:13:39.000000000","message":"I tried it.\nbut sorry, I could not find other way. \nthe code becomes complicated when applying my idea.","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1e149485c64fd4d15f8c1a054a6ea1cd4e17f70d","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FrKg%3D","line":307,"updated":"2014-03-04 18:27:13.000000000","message":"remove data from these functions as well.","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def _switch_port_receive_packets(self, statistic, resource_id,"},{"line_number":307,"context_line":"                                     resource_meta, data):"},{"line_number":308,"context_line":"        return self._get_int_sample(\u0027receivePackets\u0027,"},{"line_number":309,"context_line":"                                    statistic, resource_id, resource_meta)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2FkK0%3D","line":307,"in_reply_to":"AAAAVn%2F%2FrKg%3D","updated":"2014-03-05 12:13:39.000000000","message":"_switch_port and _switch_port_**** are called by _iter_port.\nand _switch_porit needs the data.\nif the data will be removed from _switch_port_****, _iter_port must verifies whether method argument is including the data.\n\nI feel existing unused parameter is bit good than the verification.\n\nIs the verification better than unused parameter?","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from six import moves"},{"line_number":18,"context_line":"from six.moves.urllib import parse as url_parse"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLP0%3D","line":16,"updated":"2014-03-07 21:03:35.000000000","message":"i\u0027d prefer if this code wasn\u0027t under __init__.py\n\nmaybe under a pollster.py?","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from six import moves"},{"line_number":18,"context_line":"from six.moves.urllib import parse as url_parse"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHf0%3D","line":16,"in_reply_to":"AAAAVn%2F%2FLP0%3D","updated":"2014-03-09 17:09:45.000000000","message":"I will fix it. but I feel this is not pollster.\nI will create driver.py.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            value \u003d v[\u0027value\u0027]"},{"line_number":38,"context_line":"            key \u003d prefix + \u0027_\u0027 + k"},{"line_number":39,"context_line":"            if \u0027name\u0027 in v:"},{"line_number":40,"context_line":"                key +\u003d \"_\" + v[\u0027name\u0027]"},{"line_number":41,"context_line":"            resource_meta[key] \u003d value"},{"line_number":42,"context_line":"    return resource_meta"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FMWI%3D","line":40,"updated":"2014-03-07 21:03:35.000000000","message":"(nit) use single quote around underscore just so we\u0027re consistent","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            value \u003d v[\u0027value\u0027]"},{"line_number":38,"context_line":"            key \u003d prefix + \u0027_\u0027 + k"},{"line_number":39,"context_line":"            if \u0027name\u0027 in v:"},{"line_number":40,"context_line":"                key +\u003d \"_\" + v[\u0027name\u0027]"},{"line_number":41,"context_line":"            resource_meta[key] \u003d value"},{"line_number":42,"context_line":"    return resource_meta"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHfw%3D","line":40,"in_reply_to":"AAAAVn%2F%2FMWI%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    * scheme is \"opendaylight\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    This driver has parameters."},{"line_number":60,"context_line":"    The parameters are specified in query."},{"line_number":61,"context_line":"    Supported parameters are below things:"},{"line_number":62,"context_line":"    * scheme:"},{"line_number":63,"context_line":"        The scheme of request url to OpenDaylight REST API endpoint."}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FMSw%3D","line":60,"updated":"2014-03-07 21:03:35.000000000","message":"replace with \u0027This driver can be configured via query parameters.\u0027","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    * scheme is \"opendaylight\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    This driver has parameters."},{"line_number":60,"context_line":"    The parameters are specified in query."},{"line_number":61,"context_line":"    Supported parameters are below things:"},{"line_number":62,"context_line":"    * scheme:"},{"line_number":63,"context_line":"        The scheme of request url to OpenDaylight REST API endpoint."}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHfM%3D","line":60,"in_reply_to":"AAAAVn%2F%2FMSw%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    This driver has parameters."},{"line_number":60,"context_line":"    The parameters are specified in query."},{"line_number":61,"context_line":"    Supported parameters are below things:"},{"line_number":62,"context_line":"    * scheme:"},{"line_number":63,"context_line":"        The scheme of request url to OpenDaylight REST API endpoint."},{"line_number":64,"context_line":"        (default http)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FMVE%3D","line":61,"updated":"2014-03-07 21:03:35.000000000","message":"s/Supported parameters are below things/Supported parameters:/","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    This driver has parameters."},{"line_number":60,"context_line":"    The parameters are specified in query."},{"line_number":61,"context_line":"    Supported parameters are below things:"},{"line_number":62,"context_line":"    * scheme:"},{"line_number":63,"context_line":"        The scheme of request url to OpenDaylight REST API endpoint."},{"line_number":64,"context_line":"        (default http)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHfk%3D","line":61,"in_reply_to":"AAAAVn%2F%2FMVE%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    e.g."},{"line_number":77,"context_line":"        opendaylight://127.0.0.1:8080/controller/nb/v2?container_name\u003ddefault\u0026"},{"line_number":78,"context_line":"            container_name\u003degg\u0026auth\u003dbasic\u0026user\u003dadmin\u0026password\u003dadmin\u0026scheme\u003dhttp"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        In this case, the driver send request to below URL:"},{"line_number":81,"context_line":"            http://127.0.0.1:8080/controller/nb/v2/statistics/default/flow"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FMUc%3D","line":78,"updated":"2014-03-07 21:03:35.000000000","message":"two container_names in example","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    e.g."},{"line_number":77,"context_line":"        opendaylight://127.0.0.1:8080/controller/nb/v2?container_name\u003ddefault\u0026"},{"line_number":78,"context_line":"            container_name\u003degg\u0026auth\u003dbasic\u0026user\u003dadmin\u0026password\u003dadmin\u0026scheme\u003dhttp"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        In this case, the driver send request to below URL:"},{"line_number":81,"context_line":"            http://127.0.0.1:8080/controller/nb/v2/statistics/default/flow"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHfg%3D","line":78,"in_reply_to":"AAAAVn%2F%2FMUc%3D","updated":"2014-03-09 17:09:45.000000000","message":"when multi container_name is included in parameter, this driver collects from each container.\nin this case, the driver collects from default container and egg container.\nI will fix below example.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @staticmethod"},{"line_number":85,"context_line":"    def _parse_my_resource(resource):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        parse_url \u003d network_utils.urlsplit(resource)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLsI%3D","line":86,"updated":"2014-03-07 21:03:35.000000000","message":"i feel like should be done at a higher level... seems somewhat late to be checking whether we should be using this driver or not as we\u0027re already inside the driver","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @staticmethod"},{"line_number":85,"context_line":"    def _parse_my_resource(resource):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        parse_url \u003d network_utils.urlsplit(resource)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        if parse_url.scheme !\u003d \u0027opendaylight\u0027:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHWI%3D","line":86,"in_reply_to":"AAAAVn%2F%2FLsI%3D","updated":"2014-03-09 17:09:45.000000000","message":"Sorry, I haven\u0027t idea.\nthe resource is passed in argument in get_sample_data.\nI feel this method is called early on get_sample_data.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        params \u003d url_parse.parse_qs(parse_url.query)"},{"line_number":94,"context_line":"        scheme \u003d params.get(\u0027scheme\u0027, [\u0027http\u0027])[0]"},{"line_number":95,"context_line":"        parts \u003d urlutils.SplitResult(scheme,"},{"line_number":96,"context_line":"                                     parse_url.netloc,"},{"line_number":97,"context_line":"                                     parse_url.path,"},{"line_number":98,"context_line":"                                     None,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLs4%3D","line":95,"updated":"2014-03-07 21:03:35.000000000","message":"py3kcompat doesn\u0027t exist anymore...\nhttps://bugs.launchpad.net/oslo.messaging/+bug/1280033","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        params \u003d url_parse.parse_qs(parse_url.query)"},{"line_number":94,"context_line":"        scheme \u003d params.get(\u0027scheme\u0027, [\u0027http\u0027])[0]"},{"line_number":95,"context_line":"        parts \u003d urlutils.SplitResult(scheme,"},{"line_number":96,"context_line":"                                     parse_url.netloc,"},{"line_number":97,"context_line":"                                     parse_url.path,"},{"line_number":98,"context_line":"                                     None,"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHfI%3D","line":95,"in_reply_to":"AAAAVn%2F%2FLs4%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @staticmethod"},{"line_number":103,"context_line":"    def _prepare_cache(endpoint, params, cache):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if \u0027opendaylight\u0027 in cache:"},{"line_number":106,"context_line":"            return cache[\u0027opendaylight\u0027]"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLq8%3D","line":105,"updated":"2014-03-07 21:03:35.000000000","message":"can we set opendaylight as a variable somewhere.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    @staticmethod"},{"line_number":103,"context_line":"    def _prepare_cache(endpoint, params, cache):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if \u0027opendaylight\u0027 in cache:"},{"line_number":106,"context_line":"            return cache[\u0027opendaylight\u0027]"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHXY%3D","line":105,"in_reply_to":"AAAAVn%2F%2FLq8%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        container_names \u003d params.get(\u0027container_name\u0027, [\u0027default\u0027])"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        odl_params \u003d {}"},{"line_number":113,"context_line":"        if \u0027auth\u0027 in params:"},{"line_number":114,"context_line":"            odl_params[\u0027auth\u0027] \u003d params[\u0027auth\u0027][0]"},{"line_number":115,"context_line":"            odl_params[\u0027user\u0027] \u003d params[\u0027user\u0027][0]"},{"line_number":116,"context_line":"            odl_params[\u0027password\u0027] \u003d params[\u0027password\u0027][0]"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLoM%3D","line":113,"updated":"2014-03-07 21:03:35.000000000","message":"why do we only check if auth in params and not user, password?","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        container_names \u003d params.get(\u0027container_name\u0027, [\u0027default\u0027])"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        odl_params \u003d {}"},{"line_number":113,"context_line":"        if \u0027auth\u0027 in params:"},{"line_number":114,"context_line":"            odl_params[\u0027auth\u0027] \u003d params[\u0027auth\u0027][0]"},{"line_number":115,"context_line":"            odl_params[\u0027user\u0027] \u003d params[\u0027user\u0027][0]"},{"line_number":116,"context_line":"            odl_params[\u0027password\u0027] \u003d params[\u0027password\u0027][0]"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHW4%3D","line":113,"in_reply_to":"AAAAVn%2F%2FLoM%3D","updated":"2014-03-09 17:09:45.000000000","message":"I will fix as the same as auth.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a21cd163174253a9f2ab506576dbda2454478e80","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                # get switch informations"},{"line_number":140,"context_line":"                container_data[\u0027switch\u0027] \u003d cs.switch_manager.get_nodes("},{"line_number":141,"context_line":"                    container_name)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"                # get and optimize user links"},{"line_number":144,"context_line":"                user_links_raw \u003d cs.topology.get_user_links(container_name)"},{"line_number":145,"context_line":"                user_links \u003d []"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGyc%3D","line":142,"updated":"2014-03-09 17:16:51.000000000","message":"Could you please provide an example what\u0027s going on here? Smth like \"link before optimization\" \u003d\u003e \"link after optimization\"","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d15be8394ef3eddbcee83bb7e7396e73a75262fc","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                # get switch informations"},{"line_number":140,"context_line":"                container_data[\u0027switch\u0027] \u003d cs.switch_manager.get_nodes("},{"line_number":141,"context_line":"                    container_name)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"                # get and optimize user links"},{"line_number":144,"context_line":"                user_links_raw \u003d cs.topology.get_user_links(container_name)"},{"line_number":145,"context_line":"                user_links \u003d []"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FF08%3D","line":142,"in_reply_to":"AAAAVn%2F%2FGyc%3D","updated":"2014-03-10 01:01:10.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a21cd163174253a9f2ab506576dbda2454478e80","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                container_data[\u0027timestamp\u0027] \u003d timeutils.isotime()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                data[container_name] \u003d container_data"},{"line_number":170,"context_line":"            except Exception:"},{"line_number":171,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":172,"context_line":"                                \u0027NorthBound REST API\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGwg%3D","line":169,"updated":"2014-03-09 17:16:51.000000000","message":"So if you were not able to get data using odl you just caught any exception and return empty (or almost empty) data to user? Are you sure that it\u0027s correct? And besides you put this to cache","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d15be8394ef3eddbcee83bb7e7396e73a75262fc","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                container_data[\u0027timestamp\u0027] \u003d timeutils.isotime()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                data[container_name] \u003d container_data"},{"line_number":170,"context_line":"            except Exception:"},{"line_number":171,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":172,"context_line":"                                \u0027NorthBound REST API\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FFvA%3D","line":169,"in_reply_to":"AAAAVn%2F%2FGwg%3D","updated":"2014-03-10 01:01:10.000000000","message":"Yes if caught any exception, data is empty.\nIt is correct.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                data[container_name] \u003d container_data"},{"line_number":170,"context_line":"            except Exception:"},{"line_number":171,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":172,"context_line":"                                \u0027NorthBound REST API\u0027))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLZE%3D","line":171,"updated":"2014-03-07 21:03:35.000000000","message":"s/Request is failed to OpenDaylight/Request failed to connect to OpenDaylight/","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                data[container_name] \u003d container_data"},{"line_number":170,"context_line":"            except Exception:"},{"line_number":171,"context_line":"                LOG.exception(_(\u0027Request is failed to OpenDaylight with \u0027"},{"line_number":172,"context_line":"                                \u0027NorthBound REST API\u0027))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        cache[\u0027opendaylight\u0027] \u003d data"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHbU%3D","line":171,"in_reply_to":"AAAAVn%2F%2FLZE%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a21cd163174253a9f2ab506576dbda2454478e80","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_sample_data(self, meter_name, resource, cache):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        extractor \u003d self._get_extractor(meter_name)"},{"line_number":181,"context_line":"        if extractor is None:"},{"line_number":182,"context_line":"            # Not Implemented"},{"line_number":183,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGws%3D","line":180,"updated":"2014-03-09 17:16:51.000000000","message":"What does \u0027Not implemented\u0027 mean? As far as I understood it means that we are not able to find a way to get meter with odl driver? So it is not implemented in odl api? In this case maybe we may have smth like set of meters that we can obtain by odl. Please correct me if I miss smth here","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d15be8394ef3eddbcee83bb7e7396e73a75262fc","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_sample_data(self, meter_name, resource, cache):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        extractor \u003d self._get_extractor(meter_name)"},{"line_number":181,"context_line":"        if extractor is None:"},{"line_number":182,"context_line":"            # Not Implemented"},{"line_number":183,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FFw8%3D","line":180,"in_reply_to":"AAAAVn%2F%2FGws%3D","updated":"2014-03-10 01:01:10.000000000","message":"\"Not Implemented\" means both.\ncases of both the driver has not way to get meter and odl api has not api will return None.\nin first case, we can collect from odl if we implement it.\nI will fix comment.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a21cd163174253a9f2ab506576dbda2454478e80","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        data \u003d self._prepare_cache(endpoint, params, cache)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        samples \u003d []"},{"line_number":200,"context_line":"        for name, value in six.iteritems(data):"},{"line_number":201,"context_line":"            timestamp \u003d value[\u0027timestamp\u0027]"},{"line_number":202,"context_line":"            for sample in iter(extractor, value):"},{"line_number":203,"context_line":"                if sample is not None:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGwM%3D","line":200,"updated":"2014-03-09 17:16:51.000000000","message":"Just an addition to my comment about _prepare_cache. You put timestamp to data dict at the very end of \u0027try\u0027 section. So your code may fail before timestamp becomes in data dict and you will get KeyError here","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d15be8394ef3eddbcee83bb7e7396e73a75262fc","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        data \u003d self._prepare_cache(endpoint, params, cache)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        samples \u003d []"},{"line_number":200,"context_line":"        for name, value in six.iteritems(data):"},{"line_number":201,"context_line":"            timestamp \u003d value[\u0027timestamp\u0027]"},{"line_number":202,"context_line":"            for sample in iter(extractor, value):"},{"line_number":203,"context_line":"                if sample is not None:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FFvY%3D","line":200,"in_reply_to":"AAAAVn%2F%2FGwM%3D","updated":"2014-03-10 01:01:10.000000000","message":"\"value\" is \"container_data\" in _prepare_cache.\nIf container_data enters the data, container_data contains a timestamp always.\nKeyError is never raised.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a21cd163174253a9f2ab506576dbda2454478e80","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        resource_meta.update(_get_properties(statistic.get(\u0027properties\u0027)))"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    @staticmethod"},{"line_number":240,"context_line":"    def _iter_port(extractor, data):"},{"line_number":241,"context_line":"        for port_statistic in data[\u0027port\u0027][\u0027portStatistics\u0027]:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGvY%3D","line":238,"updated":"2014-03-09 17:16:51.000000000","message":"The code below contains so much \u0027magic words\u0027 that supposed to be in returned dict from odl. Could you please provide a link to docs where all these things are described? I\u0027m a bit confused by this hard-code, what we gonna do if structure changes in next version :)? But I have nothing to suggest now","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"d15be8394ef3eddbcee83bb7e7396e73a75262fc","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        resource_meta.update(_get_properties(statistic.get(\u0027properties\u0027)))"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        return (1, resource_id, resource_meta)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    @staticmethod"},{"line_number":240,"context_line":"    def _iter_port(extractor, data):"},{"line_number":241,"context_line":"        for port_statistic in data[\u0027port\u0027][\u0027portStatistics\u0027]:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FFto%3D","line":238,"in_reply_to":"AAAAVn%2F%2FGvY%3D","updated":"2014-03-10 01:01:10.000000000","message":"used apis are written in BP.\nhttps://blueprints.launchpad.net/ceilometer/+spec/monitoring-network-from-opendaylight\n\nIf structure is changed, maybe we should create new driver.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"}],"ceilometer/network/statistics/opendaylight/client.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.switch_manager \u003d SwitchManagerAPIClient(self)"},{"line_number":160,"context_line":"        self.host_tracker \u003d HostTrackerAPIClient(self)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self._scheme \u003d self._get_scheme(params)"},{"line_number":163,"context_line":"        self._endpoint \u003d self._make_endpont(self._scheme, parse_url)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        self._req_params \u003d self._get_req_params(params)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BGs%3D","line":162,"updated":"2014-03-03 03:54:46.000000000","message":"I think we can skip the processing of scheme if we pass correct scheme into the param parse_url?","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.switch_manager \u003d SwitchManagerAPIClient(self)"},{"line_number":160,"context_line":"        self.host_tracker \u003d HostTrackerAPIClient(self)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        self._scheme \u003d self._get_scheme(params)"},{"line_number":163,"context_line":"        self._endpoint \u003d self._make_endpont(self._scheme, parse_url)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        self._req_params \u003d self._get_req_params(params)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FyAM%3D","line":162,"in_reply_to":"AAAAVn%2F%2F%2BGs%3D","updated":"2014-03-04 07:20:59.000000000","message":"if I want to setting the correct scheme into the param parse_url, the same as this processing of scheme is needed by OpenDayLightDriver.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def _get_scheme(self, params):"},{"line_number":168,"context_line":"        return params.get(\u0027scheme\u0027, [\u0027http\u0027])[0]"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _make_endpont(self, scheme, parse_url):"},{"line_number":171,"context_line":"        parts \u003d url_parse.ParseResult(scheme,"},{"line_number":172,"context_line":"                                      parse_url.netloc,"},{"line_number":173,"context_line":"                                      parse_url.path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BG8%3D","line":170,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def _get_scheme(self, params):"},{"line_number":168,"context_line":"        return params.get(\u0027scheme\u0027, [\u0027http\u0027])[0]"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _make_endpont(self, scheme, parse_url):"},{"line_number":171,"context_line":"        parts \u003d url_parse.ParseResult(scheme,"},{"line_number":172,"context_line":"                                      parse_url.netloc,"},{"line_number":173,"context_line":"                                      parse_url.path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FzpM%3D","line":170,"in_reply_to":"AAAAVn%2F%2F%2BG8%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                      None)"},{"line_number":177,"context_line":"        return url_parse.urlunparse(parts)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _get_req_params(self, params):"},{"line_number":180,"context_line":"        req_params \u003d {"},{"line_number":181,"context_line":"            \u0027headers\u0027: {"},{"line_number":182,"context_line":"                \u0027Accept\u0027: \u0027application/json\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BHA%3D","line":179,"updated":"2014-03-03 03:54:46.000000000","message":"@staticmethod","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                      None)"},{"line_number":177,"context_line":"        return url_parse.urlunparse(parts)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def _get_req_params(self, params):"},{"line_number":180,"context_line":"        req_params \u003d {"},{"line_number":181,"context_line":"            \u0027headers\u0027: {"},{"line_number":182,"context_line":"                \u0027Accept\u0027: \u0027application/json\u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2FzpQ%3D","line":179,"in_reply_to":"AAAAVn%2F%2F%2BHA%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        LOG.debug(\u0027\u0027.join(dump))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _http_request(self, url):"},{"line_number":235,"context_line":"        self._log_req(url)"},{"line_number":236,"context_line":"        resp \u003d requests.get(url, **self._req_params)"},{"line_number":237,"context_line":"        self._log_res(resp)"},{"line_number":238,"context_line":"        if resp.status_code / 100 !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BIM%3D","line":235,"updated":"2014-03-03 03:54:46.000000000","message":"we shouldn\u0027t call self._log_req if CONF.debug is not set, because it\u0027s useless.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        LOG.debug(\u0027\u0027.join(dump))"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def _http_request(self, url):"},{"line_number":235,"context_line":"        self._log_req(url)"},{"line_number":236,"context_line":"        resp \u003d requests.get(url, **self._req_params)"},{"line_number":237,"context_line":"        self._log_res(resp)"},{"line_number":238,"context_line":"        if resp.status_code / 100 !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0AY%3D","line":235,"in_reply_to":"AAAAVn%2F%2F%2BIM%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4f9be4dedf040505e9496ec365b051cd830ca1fc","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    def _http_request(self, url):"},{"line_number":235,"context_line":"        self._log_req(url)"},{"line_number":236,"context_line":"        resp \u003d requests.get(url, **self._req_params)"},{"line_number":237,"context_line":"        self._log_res(resp)"},{"line_number":238,"context_line":"        if resp.status_code / 100 !\u003d 2:"},{"line_number":239,"context_line":"            raise OpenDaylightRESTAPIFailed("},{"line_number":240,"context_line":"                _(\u0027OpenDaylitght API returned %(status)s %(reason)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F%2BII%3D","line":237,"updated":"2014-03-03 03:54:46.000000000","message":"we shouldn\u0027t call self._log_res if CONF.debug is not set, because it\u0027s useless.","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"23f7ee65ee341e2d7acf7e34481ad6b03f8f6e31","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    def _http_request(self, url):"},{"line_number":235,"context_line":"        self._log_req(url)"},{"line_number":236,"context_line":"        resp \u003d requests.get(url, **self._req_params)"},{"line_number":237,"context_line":"        self._log_res(resp)"},{"line_number":238,"context_line":"        if resp.status_code / 100 !\u003d 2:"},{"line_number":239,"context_line":"            raise OpenDaylightRESTAPIFailed("},{"line_number":240,"context_line":"                _(\u0027OpenDaylitght API returned %(status)s %(reason)s\u0027) %"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAVn%2F%2F0AU%3D","line":237,"in_reply_to":"AAAAVn%2F%2F%2BII%3D","updated":"2014-03-04 07:20:59.000000000","message":"Done","commit_id":"9ebe0079c614f5dfc76256f7ca9b11d1163935fd"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8bb0815b31f6005c9df3b4ae0bcc498bdda8af01","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self.host_tracker \u003d HostTrackerAPIClient(self)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self._scheme \u003d self._get_scheme(params)"},{"line_number":167,"context_line":"        self._endpoint \u003d self._make_endpont(self._scheme, parse_url)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        self._req_params \u003d self._get_req_params(params)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fwho%3D","line":167,"updated":"2014-03-04 08:58:48.000000000","message":"I\u0027m wondering if we could move the whole final url constructing thing into OpenDayLightDriver, and make the client more simple.\n\nNo objection here to block the patch, just a thought.","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"b1afb906e1438dbae1e7a19c33144c2bb21e1960","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self.host_tracker \u003d HostTrackerAPIClient(self)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self._scheme \u003d self._get_scheme(params)"},{"line_number":167,"context_line":"        self._endpoint \u003d self._make_endpont(self._scheme, parse_url)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        self._req_params \u003d self._get_req_params(params)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVn%2F%2Fj7w%3D","line":167,"in_reply_to":"AAAAVn%2F%2Fwho%3D","updated":"2014-03-05 12:13:39.000000000","message":"You are completely correct. I was wrong.\nDone.","commit_id":"09689bb5e7ff3108f146df5824c78a61bc916b7e"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.client \u003d client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def request(self, path, container_name):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return self.client.request(self.base_url + path, container_name)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FMRU%3D","line":45,"updated":"2014-03-07 21:03:35.000000000","message":"remove line","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        self.client \u003d client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def request(self, path, container_name):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return self.client.request(self.base_url + path, container_name)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FHbQ%3D","line":45,"in_reply_to":"AAAAVn%2F%2FMRU%3D","updated":"2014-03-09 17:09:45.000000000","message":"Done","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"}],"ceilometer/network/statistics/opendaylight/driver.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a74f85efae611ce6901a3ccca81281f7230ef44d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            # OpenDaylight REST API has not api to getting meter."},{"line_number":206,"context_line":"            return None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        parse_result \u003d self._parse_my_resource(resource)"},{"line_number":209,"context_line":"        if parse_result is None:"},{"line_number":210,"context_line":"            # resource is not opendaylight"},{"line_number":211,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAVn%2F%2FCrk%3D","line":208,"updated":"2014-03-10 14:47:22.000000000","message":"i was thinking more that this check should be done at get_samples() pollster level...ie. we only load the drivers we need...","commit_id":"7e7f214a46e87377b1d2e3d232ca22cf49a3b649"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"f728833c7cbfbdd508b0871dc7afbfacba394f1d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            # OpenDaylight REST API has not api to getting meter."},{"line_number":206,"context_line":"            return None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        parse_result \u003d self._parse_my_resource(resource)"},{"line_number":209,"context_line":"        if parse_result is None:"},{"line_number":210,"context_line":"            # resource is not opendaylight"},{"line_number":211,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAVn%2F%2FAsg%3D","line":208,"in_reply_to":"AAAAVn%2F%2FCrk%3D","updated":"2014-03-10 18:09:43.000000000","message":"Sorry, I have no idea. I feel must load driver for checking whether driver can collects the meter.","commit_id":"7e7f214a46e87377b1d2e3d232ca22cf49a3b649"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0c18efa0ae0c209d6883ace4859a92c44f7abf81","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            # OpenDaylight REST API has not api to getting meter."},{"line_number":185,"context_line":"            return None"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        parts \u003d url_parse.ParseResult(params.get(\u0027scheme\u0027, [\u0027http\u0027])[0],"},{"line_number":188,"context_line":"                                      parse_url.netloc,"},{"line_number":189,"context_line":"                                      parse_url.path,"},{"line_number":190,"context_line":"                                      None,"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8qE%3D","line":187,"updated":"2014-03-11 04:36:04.000000000","message":"i think parse_url param is already a ParseResult\n\nsee line 51: https://review.openstack.org/#/c/63890/23/ceilometer/network/statistics/__init__.py","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d147ae6e1972564a717ff6e35c5b5263da82c10a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            # OpenDaylight REST API has not api to getting meter."},{"line_number":185,"context_line":"            return None"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        parts \u003d url_parse.ParseResult(params.get(\u0027scheme\u0027, [\u0027http\u0027])[0],"},{"line_number":188,"context_line":"                                      parse_url.netloc,"},{"line_number":189,"context_line":"                                      parse_url.path,"},{"line_number":190,"context_line":"                                      None,"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8ZI%3D","line":187,"in_reply_to":"AAAAVn%2F%2B8hI%3D","updated":"2014-03-11 05:35:48.000000000","message":"Ah, I see. My mistake.","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            # OpenDaylight REST API has not api to getting meter."},{"line_number":185,"context_line":"            return None"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        parts \u003d url_parse.ParseResult(params.get(\u0027scheme\u0027, [\u0027http\u0027])[0],"},{"line_number":188,"context_line":"                                      parse_url.netloc,"},{"line_number":189,"context_line":"                                      parse_url.path,"},{"line_number":190,"context_line":"                                      None,"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8hI%3D","line":187,"in_reply_to":"AAAAVn%2F%2B8qE%3D","updated":"2014-03-11 05:26:24.000000000","message":"scheme is changed to params[\u0027scheme\u0027] from \u0027opendaylight\u0027 here. (i.e. opendaylight://foo/bar \u003d\u003e http://foo/bar)\nI think some driver doesn\u0027t need scheme in param.( e.g. scheme is fixed to \u0027http\u0027)\ntherefore, I think scheme should be changed here.","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fa6a627ffbaab6b95cf0ac673982d5bf4acfcf0e","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        for edge_property in edge_properties:"},{"line_number":253,"context_line":"            edge \u003d edge_property[\u0027edge\u0027]"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            if edge[\u0027headNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":256,"context_line":"               edge[\u0027headNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":257,"context_line":"                # this is me and I am head"},{"line_number":258,"context_line":"                target_node \u003d edge[\u0027tailNodeConnector\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8lo%3D","line":255,"updated":"2014-03-11 04:57:03.000000000","message":"also, if you need to fix the above, can you wrap these clauses in parantheses rather than using \\","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        for edge_property in edge_properties:"},{"line_number":253,"context_line":"            edge \u003d edge_property[\u0027edge\u0027]"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            if edge[\u0027headNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":256,"context_line":"               edge[\u0027headNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":257,"context_line":"                # this is me and I am head"},{"line_number":258,"context_line":"                target_node \u003d edge[\u0027tailNodeConnector\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8g8%3D","line":255,"in_reply_to":"AAAAVn%2F%2B8lo%3D","updated":"2014-03-11 05:26:24.000000000","message":"Done","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fa6a627ffbaab6b95cf0ac673982d5bf4acfcf0e","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            if edge[\u0027headNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":256,"context_line":"               edge[\u0027headNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":257,"context_line":"                # this is me and I am head"},{"line_number":258,"context_line":"                target_node \u003d edge[\u0027tailNodeConnector\u0027]"},{"line_number":259,"context_line":"            elif edge[\u0027tailNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":260,"context_line":"                    edge[\u0027tailNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8lk%3D","line":257,"updated":"2014-03-11 04:57:03.000000000","message":"remove these comments too since they don\u0027t seem to be useful","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            if edge[\u0027headNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":256,"context_line":"               edge[\u0027headNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":257,"context_line":"                # this is me and I am head"},{"line_number":258,"context_line":"                target_node \u003d edge[\u0027tailNodeConnector\u0027]"},{"line_number":259,"context_line":"            elif edge[\u0027tailNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":260,"context_line":"                    edge[\u0027tailNodeConnector\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8g4%3D","line":257,"in_reply_to":"AAAAVn%2F%2B8lk%3D","updated":"2014-03-11 05:26:24.000000000","message":"Done","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fa6a627ffbaab6b95cf0ac673982d5bf4acfcf0e","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        # link status from user links"},{"line_number":277,"context_line":"        for user_link in data[\u0027user_links\u0027]:"},{"line_number":278,"context_line":"            if user_link[\u0027dstNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":279,"context_line":"               user_link[\u0027dstNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":280,"context_line":"                # this is me and I am dst"},{"line_number":281,"context_line":"                target_node \u003d user_link[\u0027srcNodeConnector\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8lg%3D","line":278,"updated":"2014-03-11 04:57:03.000000000","message":"same as above","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        # link status from user links"},{"line_number":277,"context_line":"        for user_link in data[\u0027user_links\u0027]:"},{"line_number":278,"context_line":"            if user_link[\u0027dstNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":279,"context_line":"               user_link[\u0027dstNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":280,"context_line":"                # this is me and I am dst"},{"line_number":281,"context_line":"                target_node \u003d user_link[\u0027srcNodeConnector\u0027]"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8go%3D","line":278,"in_reply_to":"AAAAVn%2F%2B8lg%3D","updated":"2014-03-11 05:26:24.000000000","message":"Done","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fa6a627ffbaab6b95cf0ac673982d5bf4acfcf0e","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        for user_link in data[\u0027user_links\u0027]:"},{"line_number":278,"context_line":"            if user_link[\u0027dstNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":279,"context_line":"               user_link[\u0027dstNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":280,"context_line":"                # this is me and I am dst"},{"line_number":281,"context_line":"                target_node \u003d user_link[\u0027srcNodeConnector\u0027]"},{"line_number":282,"context_line":"            elif user_link[\u0027srcNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and\\"},{"line_number":283,"context_line":"                    user_link[\u0027srcNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8lc%3D","line":280,"updated":"2014-03-11 04:57:03.000000000","message":"same as above","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        for user_link in data[\u0027user_links\u0027]:"},{"line_number":278,"context_line":"            if user_link[\u0027dstNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and \\"},{"line_number":279,"context_line":"               user_link[\u0027dstNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"},{"line_number":280,"context_line":"                # this is me and I am dst"},{"line_number":281,"context_line":"                target_node \u003d user_link[\u0027srcNodeConnector\u0027]"},{"line_number":282,"context_line":"            elif user_link[\u0027srcNodeConnector\u0027][\u0027node\u0027][\u0027id\u0027] \u003d\u003d my_node_id and\\"},{"line_number":283,"context_line":"                    user_link[\u0027srcNodeConnector\u0027][\u0027port\u0027][\u0027id\u0027] \u003d\u003d my_port_id:"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8gs%3D","line":280,"in_reply_to":"AAAAVn%2F%2B8lc%3D","updated":"2014-03-11 05:26:24.000000000","message":"Done","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fa6a627ffbaab6b95cf0ac673982d5bf4acfcf0e","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                [data[\u0027active_hosts\u0027], data[\u0027inactive_hosts\u0027]],"},{"line_number":300,"context_line":"                [\u0027active\u0027, \u0027inactive\u0027]):"},{"line_number":301,"context_line":"            for host_config in hosts[\u0027hostConfig\u0027]:"},{"line_number":302,"context_line":"                if host_config[\u0027nodeId\u0027] !\u003d my_node_id or \\"},{"line_number":303,"context_line":"                   host_config[\u0027nodeConnectorId\u0027] !\u003d my_port_id:"},{"line_number":304,"context_line":"                    # this is not mine"},{"line_number":305,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8lY%3D","line":302,"updated":"2014-03-11 04:57:03.000000000","message":"parantheses","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"372250a880a656091ca4620e4e50782c318e5187","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                [data[\u0027active_hosts\u0027], data[\u0027inactive_hosts\u0027]],"},{"line_number":300,"context_line":"                [\u0027active\u0027, \u0027inactive\u0027]):"},{"line_number":301,"context_line":"            for host_config in hosts[\u0027hostConfig\u0027]:"},{"line_number":302,"context_line":"                if host_config[\u0027nodeId\u0027] !\u003d my_node_id or \\"},{"line_number":303,"context_line":"                   host_config[\u0027nodeConnectorId\u0027] !\u003d my_port_id:"},{"line_number":304,"context_line":"                    # this is not mine"},{"line_number":305,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAVn%2F%2B8gM%3D","line":302,"in_reply_to":"AAAAVn%2F%2B8lY%3D","updated":"2014-03-11 05:26:24.000000000","message":"Done","commit_id":"d60b20d455cd27e57acb71e185d30259f4df5bee"}],"ceilometer/tests/network/statistics/opendaylight/test_driver.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a74f85efae611ce6901a3ccca81281f7230ef44d","unresolved":false,"context_lines":[{"line_number":509,"context_line":"                \u0027container\u0027: \u0027default\u0027,"},{"line_number":510,"context_line":"                \u0027table_id\u0027: \u00270\u0027,"},{"line_number":511,"context_line":"                \u0027flow_id\u0027: \u00270\u0027,"},{"line_number":512,"context_line":"                \"flow_match_matchField[0]_type\": \"DL_TYPE\","},{"line_number":513,"context_line":"                \"flow_match_matchField[0]_value\": \"2048\","},{"line_number":514,"context_line":"                \"flow_match_matchField[1]_mask\": \"255.255.255.255\","},{"line_number":515,"context_line":"                \"flow_match_matchField[1]_type\": \"NW_DST\","}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAVn%2F%2FCNE%3D","line":512,"updated":"2014-03-10 14:47:22.000000000","message":"i\u0027d prefer that these tests weren\u0027t so verbose. ie. make the metadata a little simpler (less attributes at each level).\n\nnot that important, but personally, having these tests check every single attribute is a bit redundant especially since the values themselves aren\u0027t that important (we just need to check that the key is being built properly.)","commit_id":"7e7f214a46e87377b1d2e3d232ca22cf49a3b649"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"fe64b1382057edd6e4f5396b42f741d05e2e9220","unresolved":false,"context_lines":[{"line_number":509,"context_line":"                \u0027container\u0027: \u0027default\u0027,"},{"line_number":510,"context_line":"                \u0027table_id\u0027: \u00270\u0027,"},{"line_number":511,"context_line":"                \u0027flow_id\u0027: \u00270\u0027,"},{"line_number":512,"context_line":"                \"flow_match_matchField[0]_type\": \"DL_TYPE\","},{"line_number":513,"context_line":"                \"flow_match_matchField[0]_value\": \"2048\","},{"line_number":514,"context_line":"                \"flow_match_matchField[1]_mask\": \"255.255.255.255\","},{"line_number":515,"context_line":"                \"flow_match_matchField[1]_type\": \"NW_DST\","}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAVn%2F%2FBTk%3D","line":512,"in_reply_to":"AAAAVn%2F%2FCNE%3D","updated":"2014-03-10 16:53:25.000000000","message":"spoke with Yuuichi. this level of tests is useful to him so i\u0027m ok with keeping it as is.","commit_id":"7e7f214a46e87377b1d2e3d232ca22cf49a3b649"}],"ceilometer/tests/network/statistics/opendaylight/test_opendaylight.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class TestOpenDayLightDriver(test.BaseTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    flow_data \u003d {"},{"line_number":26,"context_line":"        \"flowStatistics\": ["},{"line_number":27,"context_line":"            {"},{"line_number":28,"context_line":"                \"node\": {"},{"line_number":29,"context_line":"                    \"id\": \"00:00:00:00:00:00:00:02\","}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLvg%3D","line":26,"updated":"2014-03-07 21:03:35.000000000","message":"to be honest, the tests here are very difficult to follow. i\u0027d prefer if we simplified the metadata here so that in our tests below we don\u0027t need to verify so many metadata values are correct.\n\nsee below","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"0d5e433e012bdc0ac2cc4cbd816e8ae36f24c75c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class TestOpenDayLightDriver(test.BaseTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    flow_data \u003d {"},{"line_number":26,"context_line":"        \"flowStatistics\": ["},{"line_number":27,"context_line":"            {"},{"line_number":28,"context_line":"                \"node\": {"},{"line_number":29,"context_line":"                    \"id\": \"00:00:00:00:00:00:00:02\","}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FGvU%3D","line":26,"in_reply_to":"AAAAVn%2F%2FLvg%3D","updated":"2014-03-09 17:09:45.000000000","message":"I will try it.","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"4ddd4307c838e1474895d836f389c601f8374bbb","unresolved":false,"context_lines":[{"line_number":592,"context_line":"    def test_meter_switch(self):"},{"line_number":593,"context_line":"        expected_data \u003d ["},{"line_number":594,"context_line":"            (1, \"00:00:00:00:00:00:00:02\", {"},{"line_number":595,"context_line":"                \u0027controller\u0027: \u0027OpenDaylight\u0027,"},{"line_number":596,"context_line":"                \u0027container\u0027: \u0027default\u0027,"},{"line_number":597,"context_line":"                \"properties_actions\": \"4095\","},{"line_number":598,"context_line":"                \"properties_buffers\": \"256\","}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAVn%2F%2FLvs%3D","line":595,"updated":"2014-03-07 21:03:35.000000000","message":"here we test 7 properties_ values... it\u0027d be easier to read and sample level of coverage if we have just 1 or 2","commit_id":"0d77217de7cb0d36a505cfcea494fbe5a6ecedaf"}]}
