)]}'
{"doc/source/admin_guide.rst":[{"author":{"_account_id":2696,"name":"Darrell Bishop","email":"dbishop@nvidia.com","username":"darrellb"},"change_message_id":"13f7cee962f2f8dd972754184fb89fad89f371d6","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                                                           clients) for requests.  The \u003ctype\u003e, \u003cverb\u003e,"},{"line_number":1078,"context_line":"                                                           and \u003cstatus\u003e portions of the metric are just"},{"line_number":1079,"context_line":"                                                           like the main timing metric."},{"line_number":1080,"context_line":"`proxy-server.object.policy.Policy-\u003cpolicy-index\u003e.\u003cverb\u003e`  Metrics for the object server aggregated by"},{"line_number":1081,"context_line":"                                                           policy index."},{"line_number":1082,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":1083,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a50d1a3_89431a13","line":1080,"updated":"2015-07-31 22:27:27.000000000","message":"If I\u0027m reading the code right, this should be\n\n proxy-server.object.policy.Policy-\u003cpolicy-index\u003e.\u003cverb\u003e.\u003cstatus\u003e.timing\n proxy-server.object.policy.Policy-\u003cpolicy-index\u003e.\u003cverb\u003e.\u003cstatus\u003e.first-byte.timing\n proxy-server.object.policy.Policy-\u003cpolicy-index\u003e.\u003cverb\u003e.\u003cstatus\u003e.xfer\n\nSeems like either the \"policy\" metric path segment or the \"Policy-\" part of one of the segments should go; they\u0027re redundant.  I kind of like:\n\n proxy-server.object.policy.\u003cpolicy-index\u003e.\u003cverb\u003e.\u003cstatus\u003e.*\n\nIn any case, this documentation here should correctly include all the metric segments for each of the above three metrics.","commit_id":"bc9821ca78d54dd04062363c37ba9496761194cf"},{"author":{"_account_id":17276,"name":"Carlos Cavanna","email":"ccavanna@ca.ibm.com","username":"ccavanna"},"change_message_id":"6bac64d3a50413730777ff788f628faaadf6bc38","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                                                           clients) for requests.  The \u003ctype\u003e, \u003cverb\u003e,"},{"line_number":1078,"context_line":"                                                           and \u003cstatus\u003e portions of the metric are just"},{"line_number":1079,"context_line":"                                                           like the main timing metric."},{"line_number":1080,"context_line":"`proxy-server.object.policy.Policy-\u003cpolicy-index\u003e.\u003cverb\u003e`  Metrics for the object server aggregated by"},{"line_number":1081,"context_line":"                                                           policy index."},{"line_number":1082,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":1083,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a50d1a3_4472d7e4","line":1080,"in_reply_to":"3a50d1a3_89431a13","updated":"2015-08-01 00:08:32.000000000","message":"Completed these changes.\nWill also change to code to remove \"Policy-\"","commit_id":"bc9821ca78d54dd04062363c37ba9496761194cf"}],"swift/common/middleware/proxy_logging.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"f561e7154192696c78ee77c6c1aa52430e515ed1","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def statsd_metric_name_policy(self, req, status_int, method, policy_index):"},{"line_number":240,"context_line":"        stat_type \u003d self.get_metric_name_type(req)"},{"line_number":241,"context_line":"        if stat_type \u003d\u003d \u0027object\u0027:"},{"line_number":242,"context_line":"            stat_method \u003d method if method in self.valid_methods \\"},{"line_number":243,"context_line":"                else \u0027BAD_METHOD\u0027"},{"line_number":244,"context_line":"            # The policy may not exist"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_73a3ffb2","line":241,"updated":"2015-07-22 05:04:09.000000000","message":"You know, you could be consistent with the existing code and return None if stat_type is not suitable right here. Indentation is less deep too.","commit_id":"0e29abb8fc0a9ea565c084a5fd47e2d01f7961e5"},{"author":{"_account_id":17276,"name":"Carlos Cavanna","email":"ccavanna@ca.ibm.com","username":"ccavanna"},"change_message_id":"9d1f500eb1a69cf05829bcca4f42127fbd8e9fdd","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def statsd_metric_name_policy(self, req, status_int, method, policy_index):"},{"line_number":240,"context_line":"        stat_type \u003d self.get_metric_name_type(req)"},{"line_number":241,"context_line":"        if stat_type \u003d\u003d \u0027object\u0027:"},{"line_number":242,"context_line":"            stat_method \u003d method if method in self.valid_methods \\"},{"line_number":243,"context_line":"                else \u0027BAD_METHOD\u0027"},{"line_number":244,"context_line":"            # The policy may not exist"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_84fff532","line":241,"in_reply_to":"3a50d1a3_73a3ffb2","updated":"2015-07-29 20:09:26.000000000","message":"Done","commit_id":"0e29abb8fc0a9ea565c084a5fd47e2d01f7961e5"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"f561e7154192696c78ee77c6c1aa52430e515ed1","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            policy \u003d POLICIES.get_by_index(policy_index)"},{"line_number":246,"context_line":"            if policy:"},{"line_number":247,"context_line":"                policy_name \u003d policy.name"},{"line_number":248,"context_line":"                return \u0027.\u0027.join((stat_type, \u0027policy\u0027, policy_name, stat_method,"},{"line_number":249,"context_line":"                                 str(status_int)))"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_a2ce0f2c","line":248,"updated":"2015-07-22 05:04:09.000000000","message":"Is the word \"policy\" needed here? Sorry, I don\u0027t know enough how StatsD works.","commit_id":"0e29abb8fc0a9ea565c084a5fd47e2d01f7961e5"},{"author":{"_account_id":17276,"name":"Carlos Cavanna","email":"ccavanna@ca.ibm.com","username":"ccavanna"},"change_message_id":"9d1f500eb1a69cf05829bcca4f42127fbd8e9fdd","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            policy \u003d POLICIES.get_by_index(policy_index)"},{"line_number":246,"context_line":"            if policy:"},{"line_number":247,"context_line":"                policy_name \u003d policy.name"},{"line_number":248,"context_line":"                return \u0027.\u0027.join((stat_type, \u0027policy\u0027, policy_name, stat_method,"},{"line_number":249,"context_line":"                                 str(status_int)))"},{"line_number":250,"context_line":"            else:"},{"line_number":251,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_249141f1","line":248,"in_reply_to":"3a50d1a3_a2ce0f2c","updated":"2015-07-29 20:09:26.000000000","message":"This is to keep the structure in Graphite and clearly show where the stats are organized by policy.","commit_id":"0e29abb8fc0a9ea565c084a5fd47e2d01f7961e5"}],"test/unit/common/middleware/test_proxy_logging.py":[{"author":{"_account_id":2696,"name":"Darrell Bishop","email":"dbishop@nvidia.com","username":"darrellb"},"change_message_id":"b52101e0cef040eeb2a939a7a5061871d8112e9c","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def assertUpdateStats(self, exp_metric, exp_bytes, app, exp_count\u003d1):"},{"line_number":146,"context_line":"        update_stats_calls \u003d app.access_logger.log_dict[\u0027update_stats\u0027]"},{"line_number":147,"context_line":"        print update_stats_calls"},{"line_number":148,"context_line":"        self.assertEquals(exp_count, len(update_stats_calls))"},{"line_number":149,"context_line":"        self.assertEquals({}, update_stats_calls[0][1])"},{"line_number":150,"context_line":"        self.assertEquals((exp_metric, exp_bytes), update_stats_calls[0][0])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_a95db6ed","line":147,"updated":"2015-07-31 22:31:47.000000000","message":"Was this a debugging print that got left in?","commit_id":"bc9821ca78d54dd04062363c37ba9496761194cf"},{"author":{"_account_id":17276,"name":"Carlos Cavanna","email":"ccavanna@ca.ibm.com","username":"ccavanna"},"change_message_id":"6bac64d3a50413730777ff788f628faaadf6bc38","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def assertUpdateStats(self, exp_metric, exp_bytes, app, exp_count\u003d1):"},{"line_number":146,"context_line":"        update_stats_calls \u003d app.access_logger.log_dict[\u0027update_stats\u0027]"},{"line_number":147,"context_line":"        print update_stats_calls"},{"line_number":148,"context_line":"        self.assertEquals(exp_count, len(update_stats_calls))"},{"line_number":149,"context_line":"        self.assertEquals({}, update_stats_calls[0][1])"},{"line_number":150,"context_line":"        self.assertEquals((exp_metric, exp_bytes), update_stats_calls[0][0])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_295e8645","line":147,"in_reply_to":"3a50d1a3_a95db6ed","updated":"2015-08-01 00:08:32.000000000","message":"Done","commit_id":"bc9821ca78d54dd04062363c37ba9496761194cf"}]}
