)]}'
{"swift/cli/ringbuilder.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"eb8c5b37ccd7681128f0b2521dc97408b49a3172","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                                           replica_range)"},{"line_number":752,"context_line":"            print (\u0027%-30s \u0027 + part_count_width + \u0027 %6s %6s \u0027 +"},{"line_number":753,"context_line":"                   replica_counts_tmpl) % tuple("},{"line_number":754,"context_line":"                       [\u0027Tier:\u0027, \u0027parts\u0027, \u0027%\u0027, \u0027max\u0027] + replica_range)"},{"line_number":755,"context_line":"            for tier_name, dispersion in report[\u0027graph\u0027]:"},{"line_number":756,"context_line":"                replica_counts_repr \u003d replica_counts_tmpl % tuple("},{"line_number":757,"context_line":"                    dispersion[\u0027replicas\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_be8d9ad5","line":754,"updated":"2015-01-05 02:05:37.000000000","message":"Not a fan of the first title ending with a \u0027:\u0027, but not sure what else you can do. You could leave it off, but will the heading blend off into the output. Maybe we could do something like:\n\n  header_line \u003d (\u0027%-30s \u0027 + part_count_width +\\\n      \u0027 %6s %6s \u0027 + replica_counts_tmpl) % tuple(\n          [\u0027Tier\u0027, \u0027Parts\u0027, \u0027%\u0027, \u0027Max\u0027] + replica_range)\n  underline \u003d \u0027-\u0027 * len(header_line)\n  print(underline)\n  print(header_line)\n  print(underline)\n  for tier_name, dispersion in report[\u0027graph\u0027]:\n\nSo it looks something like http://paste.openstack.org/show/155534/\n\n(Here I also capitalised the first letters of the headers)","commit_id":"05fff6199afe09763ec51e9f88e9253314f27a26"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"eb8c5b37ccd7681128f0b2521dc97408b49a3172","unresolved":false,"context_lines":[{"line_number":761,"context_line":"                    dispersion[\u0027dispersion\u0027],"},{"line_number":762,"context_line":"                    dispersion[\u0027max_replicas\u0027],"},{"line_number":763,"context_line":"                    replica_counts_repr,"},{"line_number":764,"context_line":"                )"},{"line_number":765,"context_line":"        exit(status)"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"    def validate():"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fe9722e9","line":764,"updated":"2015-01-05 02:05:37.000000000","message":"Instead of forcing a tier width limit of 30 you could extend it if there is a tier length of \u003e 30 with:\n\n  if report[\u0027graph\u0027]:\n      replica_range \u003d range(int(math.ceil(builder.replicas + 1)))\n      part_count_width \u003d \u0027%%%ds\u0027 % max(len(str(builder.parts)), 5)\n      replica_counts_tmpl \u003d \u0027 \u0027.join(part_count_width for i in\n                                     replica_range)\n      tiers \u003d (tier for tier, _junk in report[\u0027graph\u0027])\n      tier_width \u003d max(max(map(len, tiers)), 30)\n      print (\u0027%-\u0027 + str(tier_width) + \u0027s \u0027 + part_count_width +\n             \u0027 %6s %6s \u0027 + replica_counts_tmpl) % tuple(\n                 [\u0027Tier:\u0027, \u0027parts\u0027, \u0027%\u0027, \u0027max\u0027] + replica_range)\n      for tier_name, dispersion in report[\u0027graph\u0027]:\n          replica_counts_repr \u003d replica_counts_tmpl % tuple(\n              dispersion[\u0027replicas\u0027])\n          print (\u0027%-\u0027 + str(tier_width) + \u0027s \u0027 + part_count_width +\n                 \u0027 %6.02f %6d %s\u0027) % (\n              tier_name,\n              dispersion[\u0027placed_parts\u0027],\n              dispersion[\u0027dispersion\u0027],\n              dispersion[\u0027max_replicas\u0027],\n              replica_counts_repr,\n          )\n\nNOTE: the tier_width variable.\n\nOr put the two suggestions with:  http://paste.openstack.org/show/155540/","commit_id":"05fff6199afe09763ec51e9f88e9253314f27a26"}],"swift/common/ring/builder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13b7c9918ea06574b8248ad606823a986a24f2a9","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                \u0027_last_part_moves\u0027: self._last_part_moves,"},{"line_number":177,"context_line":"                \u0027_last_part_gather_start\u0027: self._last_part_gather_start,"},{"line_number":178,"context_line":"                \u0027_dispersion_graph\u0027: self._dispersion_graph,"},{"line_number":179,"context_line":"                \u0027dispersion\u0027: self.dispersion,"},{"line_number":180,"context_line":"                \u0027_remove_devs\u0027: self._remove_devs}"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def change_min_part_hours(self, min_part_hours):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_836c099f","line":179,"updated":"2015-01-04 18:21:29.000000000","message":"might be worth checking if we have any pre-existing test infrastructure for ring serialization backwards compatibility...","commit_id":"05fff6199afe09763ec51e9f88e9253314f27a26"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13b7c9918ea06574b8248ad606823a986a24f2a9","unresolved":false,"context_lines":[{"line_number":824,"context_line":""},{"line_number":825,"context_line":"                    if (rep_at_tier \u003c\u003d max_allowed_replicas[tier]):"},{"line_number":826,"context_line":"                        continue"},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"                    available_parts_for_tier \u003d sum("},{"line_number":829,"context_line":"                        wanted_parts_for_tier[t]"},{"line_number":830,"context_line":"                        for t in sibling_tiers[tier]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_c36611bb","line":827,"updated":"2015-01-04 18:21:29.000000000","message":"bah... rebase fail, duped with sam\u0027s fix above.","commit_id":"05fff6199afe09763ec51e9f88e9253314f27a26"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"85e805626fcae6d290aaa84c178ce17b842e04c4","unresolved":false,"context_lines":[{"line_number":823,"context_line":"                        continue"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"                    if (rep_at_tier \u003c\u003d max_allowed_replicas[tier]):"},{"line_number":826,"context_line":"                        continue"},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"                    available_parts_for_tier \u003d sum("},{"line_number":829,"context_line":"                        wanted_parts_for_tier[t]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_55b6ec3e","line":826,"updated":"2015-01-08 02:35:43.000000000","message":"no, no, no - can\u0027t have this twice","commit_id":"6c06056753e415065441b553e10eea66e2b3d02e"}],"swift/common/ring/utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"13b7c9918ea06574b8248ad606823a986a24f2a9","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        if tier_dispersion \u003e max_dispersion:"},{"line_number":353,"context_line":"            max_dispersion \u003d tier_dispersion"},{"line_number":354,"context_line":"            worst_tier \u003d tier_name"},{"line_number":355,"context_line":"        max_dispersion \u003d max(max_dispersion, tier_dispersion)"},{"line_number":356,"context_line":"        if not verbose:"},{"line_number":357,"context_line":"            continue"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_2358b5f9","line":355,"updated":"2015-01-04 18:21:29.000000000","message":"this looks doubled up with the if block above...","commit_id":"05fff6199afe09763ec51e9f88e9253314f27a26"}]}
