)]}'
{"nova/cells/filters/target_cell.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"cba9c2301123a146bd457bc142d52bfbf2556822","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            return cells"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        LOG.info(_(\"Forcing direct route to %(cell_name)s because \""},{"line_number":50,"context_line":"                \"of \u0027target_cell\u0027 scheduler hint\"), locals())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        scheduler \u003d filter_properties[\u0027scheduler\u0027]"},{"line_number":53,"context_line":"        if cell_name \u003d\u003d filter_properties[\u0027routing_path\u0027]:"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2Fg80%3D","line":50,"updated":"2013-05-07 07:39:26.000000000","message":"This would be nicer if we aligned the \"\" and avoided use of locals()","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"3191c566a15c96a32d2e269492eec02003d03394","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            return cells"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        LOG.info(_(\"Forcing direct route to %(cell_name)s because \""},{"line_number":50,"context_line":"                \"of \u0027target_cell\u0027 scheduler hint\"), locals())"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        scheduler \u003d filter_properties[\u0027scheduler\u0027]"},{"line_number":53,"context_line":"        if cell_name \u003d\u003d filter_properties[\u0027routing_path\u0027]:"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2FgFs%3D","line":50,"in_reply_to":"AAAAOn%2F%2Fg80%3D","updated":"2013-05-07 16:50:32.000000000","message":"Done","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"cba9c2301123a146bd457bc142d52bfbf2556822","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        scheduler.msg_runner.schedule_run_instance(ctxt, cell_name,"},{"line_number":57,"context_line":"            filter_properties[\u0027host_sched_kwargs\u0027])"},{"line_number":58,"context_line":"        # This means to skip further scheduling as we handled it."},{"line_number":59,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2Fg9A%3D","line":59,"updated":"2013-05-07 07:39:26.000000000","message":"nit: None is implied. return","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"3191c566a15c96a32d2e269492eec02003d03394","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        scheduler.msg_runner.schedule_run_instance(ctxt, cell_name,"},{"line_number":57,"context_line":"            filter_properties[\u0027host_sched_kwargs\u0027])"},{"line_number":58,"context_line":"        # This means to skip further scheduling as we handled it."},{"line_number":59,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2FgFk%3D","line":59,"in_reply_to":"AAAAOn%2F%2Fg9A%3D","updated":"2013-05-07 16:50:32.000000000","message":"Done","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if cell_name \u003d\u003d filter_properties[\u0027routing_path\u0027]:"},{"line_number":55,"context_line":"            return [scheduler.state_manager.get_my_state()]"},{"line_number":56,"context_line":"        ctxt \u003d filter_properties[\u0027context\u0027]"},{"line_number":57,"context_line":"        scheduler.msg_runner.schedule_run_instance(ctxt, cell_name,"},{"line_number":58,"context_line":"            filter_properties[\u0027host_sched_kwargs\u0027])"},{"line_number":59,"context_line":"        # Returning None means to skip further scheduling as we handled it."}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FecI%3D","line":57,"updated":"2013-05-08 15:22:47.000000000","message":"there is a try/except around this similar code in the scheduler","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"3b92f7f39af9320ea42a53f8eae9c5cbf157317a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"A scheduler hint of \u0027target_cell\u0027 with a value of a full cell name may be"},{"line_number":20,"context_line":"specified to route a build to a particular cell.  No error handling is"},{"line_number":21,"context_line":"done as there\u0027s no way to know whether the full path is a valid."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from nova.cells import filters"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAO3%2F%2F9uU%3D","line":21,"updated":"2013-05-15 23:28:02.000000000","message":"Is this something we really want exposed to all users?  Is there something that limits it to admins that I missed?\n\nHow do users know what cells there are?  Do we even *want* regular users to have to know or care?  There is a cells API extension, but we have it set to be admin-only by default.","commit_id":"66f7ccf395e71a705ce42b595895d1462ffc62f3"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5554451b4b6f4471c3e6036e90499bfeee7bc18b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"A scheduler hint of \u0027target_cell\u0027 with a value of a full cell name may be"},{"line_number":20,"context_line":"specified to route a build to a particular cell.  No error handling is"},{"line_number":21,"context_line":"done as there\u0027s no way to know whether the full path is a valid."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from nova.cells import filters"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAO3%2F%2F7%2Fk%3D","line":21,"in_reply_to":"AAAAO3%2F%2F9uU%3D","updated":"2013-05-16 17:44:10.000000000","message":"I suspect in the majority of deployments, no one cares.  Certainly for the service provider model you don\u0027t want to expose this to customers... at least not exactly in this way. (Some Affinity filter might be appropriate).\n\nMaybe it should be guarded by policy... with default of admin only.  Thoughts?","commit_id":"66f7ccf395e71a705ce42b595895d1462ffc62f3"}],"nova/cells/messaging.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"3bdc05a493464d5e5684888a5172955a9d92c381","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        method_kwargs \u003d dict(host_sched_kwargs\u003dhost_sched_kwargs)"},{"line_number":1106,"context_line":"        message \u003d _TargetedMessage(self, ctxt, \u0027schedule_run_instance\u0027,"},{"line_number":1107,"context_line":"                                   method_kwargs, \u0027down\u0027,"},{"line_number":1108,"context_line":"                                   target_cell)"},{"line_number":1109,"context_line":"        message.process()"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"    def run_compute_api_method(self, ctxt, cell_name, method_info, call):"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2Fb7o%3D","line":1108,"updated":"2013-05-09 18:05:24.000000000","message":"I\u0027d rather not see whitespace tweaks in a file that you\u0027re not otherwise touching.","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"}],"nova/cells/scheduler.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"7eac6d286af797a9c3602637eb51480dc60625bd","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            if filter_resp[\u0027action\u0027] \u003d\u003d \u0027direct_route\u0027:"},{"line_number":145,"context_line":"                target \u003d filter_resp[\u0027target\u0027]"},{"line_number":146,"context_line":"                if target \u003d\u003d cells_utils.path_without_hosts(routing_path):"},{"line_number":147,"context_line":"                    # Ah, it\u0027s for me."},{"line_number":148,"context_line":"                    cells \u003d [self.manager.my_cell_info]"},{"line_number":149,"context_line":"                else:"},{"line_number":150,"context_line":"                    self._route_to_cell(context, target,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F9u0%3D","line":147,"updated":"2012-12-04 17:30:41.000000000","message":"lulz","commit_id":"dac399910997e81d60b862eec327cbc803f6a63e"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"1f2abc687f17ef7c59cc3e7f7bf747c1e8921bc8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def _filter_cells(self, cells, filter_properties):"},{"line_number":96,"context_line":"        for filter_cls in self.filter_classes:"},{"line_number":97,"context_line":"            filter_inst \u003d filter_cls()"},{"line_number":98,"context_line":"            fn \u003d getattr(filter_inst, \u0027filter_cells\u0027)"},{"line_number":99,"context_line":"            if not fn:"},{"line_number":100,"context_line":"                continue"},{"line_number":101,"context_line":"            filter_response \u003d fn(cells, filter_properties)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAM3%2F%2Fo5M%3D","line":98,"updated":"2013-01-11 16:59:43.000000000","message":"Could just put a no-op \u0027filter_cells\u0027 method in BaseCellFilter instead of checking for a non-existent function here.","commit_id":"ad48a8b95657b74dad61b2877a42fc25be7b181f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        cfg.ListOpt(\u0027scheduler_weight_classes\u0027,"},{"line_number":42,"context_line":"                default\u003d[\u0027nova.cells.weights.all_weighers\u0027],"},{"line_number":43,"context_line":"                help\u003d\u0027Weigher classes the cells scheduler should use.  \u0027"},{"line_number":44,"context_line":"                        \u0027An entry of \"nova.cells.weights.standard_weighters\"\u0027"},{"line_number":45,"context_line":"                        \u0027maps to all cell weighters included with nova.\u0027),"},{"line_number":46,"context_line":"        cfg.IntOpt(\u0027scheduler_retries\u0027,"},{"line_number":47,"context_line":"                default\u003d10,"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FehQ%3D","line":44,"updated":"2013-05-08 15:22:47.000000000","message":"Nit - help comment should say nova.cells.weights.all_weighers","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        cells \u003d self.state_manager.get_child_cells()"},{"line_number":101,"context_line":"        our_cell \u003d self.state_manager.get_my_state()"},{"line_number":102,"context_line":"        # Include our cell in the list, if we have any capacity info"},{"line_number":103,"context_line":"        if not cells or our_cell.capacities:"},{"line_number":104,"context_line":"            cells.append(our_cell)"},{"line_number":105,"context_line":"        return cells"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FegI%3D","line":103,"updated":"2013-05-08 15:22:47.000000000","message":"include \"our cell\" only if there are no child cells?  if there are no children and the local cell has capacity info, why wouldn\u0027t it get included?","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"3fa5d593ecf76bcd32c57b54af792a88d11575c0","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        cells \u003d self.state_manager.get_child_cells()"},{"line_number":101,"context_line":"        our_cell \u003d self.state_manager.get_my_state()"},{"line_number":102,"context_line":"        # Include our cell in the list, if we have any capacity info"},{"line_number":103,"context_line":"        if not cells or our_cell.capacities:"},{"line_number":104,"context_line":"            cells.append(our_cell)"},{"line_number":105,"context_line":"        return cells"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FeFI%3D","line":103,"in_reply_to":"AAAAOn%2F%2FeHw%3D","updated":"2013-05-08 18:10:36.000000000","message":"Derp, I misread that.","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5d262f02059633ee2802b105ee4fde0047f02623","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        cells \u003d self.state_manager.get_child_cells()"},{"line_number":101,"context_line":"        our_cell \u003d self.state_manager.get_my_state()"},{"line_number":102,"context_line":"        # Include our cell in the list, if we have any capacity info"},{"line_number":103,"context_line":"        if not cells or our_cell.capacities:"},{"line_number":104,"context_line":"            cells.append(our_cell)"},{"line_number":105,"context_line":"        return cells"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FeHw%3D","line":103,"in_reply_to":"AAAAOn%2F%2FegI%3D","updated":"2013-05-08 18:04:53.000000000","message":"It\u0027s an \u0027or\u0027.  :)   Include our cell if we have capacities.  Or.. include it if we have no child cells.","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        cells \u003d self.filter_handler.get_filtered_objects(self.filter_classes,"},{"line_number":124,"context_line":"                                                         cells,"},{"line_number":125,"context_line":"                                                         filter_properties)"},{"line_number":126,"context_line":"        if not cells:"},{"line_number":127,"context_line":"            if cells is None:"},{"line_number":128,"context_line":"                # None means to bypass further scheduling as a filter"},{"line_number":129,"context_line":"                # took care of everything."}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2Feg4%3D","line":126,"updated":"2013-05-08 15:22:47.000000000","message":"nit - reads a little oddly.  the following is a little more explicit:\n\nif cells is None:\n    return\nif cells is []:\n    raise ...\n\nAlso, an alternative would be to have the target cell filter raise something like StopCellFiltering, catch it here and do your self.msg_runner.scheduler_run_instance() call.  If you do that, I don\u0027t think you need to stuff \"self\" into filter_properties[\u0027scheduler\u0027]","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"3fa5d593ecf76bcd32c57b54af792a88d11575c0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        cells \u003d self.filter_handler.get_filtered_objects(self.filter_classes,"},{"line_number":124,"context_line":"                                                         cells,"},{"line_number":125,"context_line":"                                                         filter_properties)"},{"line_number":126,"context_line":"        if not cells:"},{"line_number":127,"context_line":"            if cells is None:"},{"line_number":128,"context_line":"                # None means to bypass further scheduling as a filter"},{"line_number":129,"context_line":"                # took care of everything."}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FeFM%3D","line":126,"in_reply_to":"AAAAOn%2F%2FeHM%3D","updated":"2013-05-08 18:10:36.000000000","message":"Yeah, I had the StopIteration thing in mind as a pattern.  Passing in the reference to self feels like OO-abuse to me, but it\u0027s pragmatic.:)","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5d262f02059633ee2802b105ee4fde0047f02623","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        cells \u003d self.filter_handler.get_filtered_objects(self.filter_classes,"},{"line_number":124,"context_line":"                                                         cells,"},{"line_number":125,"context_line":"                                                         filter_properties)"},{"line_number":126,"context_line":"        if not cells:"},{"line_number":127,"context_line":"            if cells is None:"},{"line_number":128,"context_line":"                # None means to bypass further scheduling as a filter"},{"line_number":129,"context_line":"                # took care of everything."}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2FeHM%3D","line":126,"in_reply_to":"AAAAOn%2F%2Feg4%3D","updated":"2013-05-08 18:04:53.000000000","message":"It\u0027s written a little oddly because I\u0027ve optimized for the common case... which is that \u0027cells\u0027 will contain something.  So in the common case, we only hit 1 \u0027if\u0027.. vs your suggestion which would mean 2 \u0027if\u0027s.\n\nThat said, I did consider exactly that \u0027StopCellFiltering\u0027 thing. :)  It felt weird to me to abuse an exception for it... but it\u0027s almost the same thing as StopIteration... so maybe it\u0027s okay.","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                return"},{"line_number":131,"context_line":"            raise exception.NoCellsAvailable()"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        LOG.debug(_(\"Scheduling with routing_path\u003d%(routing_path)s\"),"},{"line_number":134,"context_line":"                locals())"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        weighted_cells \u003d self.weight_handler.get_weighed_objects("}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2Fegs%3D","line":133,"updated":"2013-05-08 15:22:47.000000000","message":"Might as well fix this before the locals() police come for you","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"97964c76545446b3f2af570c2c62baec180f19c9","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        weighted_cells \u003d self.weight_handler.get_weighed_objects("},{"line_number":137,"context_line":"                self.weigher_classes, cells, filter_properties)"},{"line_number":138,"context_line":"        LOG.debug(_(\"Weighted cells: %(weighted_cells)s\"), locals())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # Keep trying until one works"},{"line_number":141,"context_line":"        for weighted_cell in weighted_cells:"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAOn%2F%2Fegg%3D","line":138,"updated":"2013-05-08 15:22:47.000000000","message":"zomg locals()\n\nit be a hangin\u0027 offense","commit_id":"58153e8f220c87a01f8029cfcbd19ab721a76d01"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"767d77a3f0234b91e29c30ec284ea03cc4090025","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                        \u0027maps to all cells filters included with nova.\u0027),"},{"line_number":41,"context_line":"        cfg.ListOpt(\u0027scheduler_weight_classes\u0027,"},{"line_number":42,"context_line":"                default\u003d[\u0027nova.cells.weights.all_weighers\u0027],"},{"line_number":43,"context_line":"                help\u003d\u0027Weigher classes the cells scheduler should use.  \u0027"},{"line_number":44,"context_line":"                        \u0027An entry of \"nova.cells.weights.all_weighters\"\u0027"},{"line_number":45,"context_line":"                        \u0027maps to all cell weighters included with nova.\u0027),"},{"line_number":46,"context_line":"        cfg.IntOpt(\u0027scheduler_retries\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2FeE8%3D","line":43,"updated":"2013-05-08 18:11:36.000000000","message":"Uh yeah so at the risk of driving you insane, you\u0027ve got \"weighters\" twice here where you caller them \"weighers\" everywhere else.\n\n/duck","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"ece2b2cb81105845aea2c907cecff5dbc9d13b59","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                        \u0027maps to all cells filters included with nova.\u0027),"},{"line_number":41,"context_line":"        cfg.ListOpt(\u0027scheduler_weight_classes\u0027,"},{"line_number":42,"context_line":"                default\u003d[\u0027nova.cells.weights.all_weighers\u0027],"},{"line_number":43,"context_line":"                help\u003d\u0027Weigher classes the cells scheduler should use.  \u0027"},{"line_number":44,"context_line":"                        \u0027An entry of \"nova.cells.weights.all_weighters\"\u0027"},{"line_number":45,"context_line":"                        \u0027maps to all cell weighters included with nova.\u0027),"},{"line_number":46,"context_line":"        cfg.IntOpt(\u0027scheduler_retries\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAO3%2F%2F%2FzU%3D","line":43,"in_reply_to":"AAAAOn%2F%2FeE8%3D","updated":"2013-05-15 08:05:47.000000000","message":"Shoot.  That help string is typoed.  The default value says \u0027weighers\u0027... which is what it should be. :)","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"3b92f7f39af9320ea42a53f8eae9c5cbf157317a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                default\u003d[\u0027nova.cells.weights.all_weighers\u0027],"},{"line_number":43,"context_line":"                help\u003d\u0027Weigher classes the cells scheduler should use.  \u0027"},{"line_number":44,"context_line":"                        \u0027An entry of \"nova.cells.weights.all_weighers\"\u0027"},{"line_number":45,"context_line":"                        \u0027maps to all cell weighers included with nova.\u0027),"},{"line_number":46,"context_line":"        cfg.IntOpt(\u0027scheduler_retries\u0027,"},{"line_number":47,"context_line":"                default\u003d10,"},{"line_number":48,"context_line":"                help\u003d\u0027How many retries when no cells are available.\u0027),"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAO3%2F%2F9vE%3D","line":45,"updated":"2013-05-15 23:28:02.000000000","message":"I would *really* prefer to not add more class path based configuration options.  I would much rather this be entrypoint based, which could be based on the common scheduler code in oslo, but the current host scheduler isn\u0027t doing that either, so ok for now.","commit_id":"66f7ccf395e71a705ce42b595895d1462ffc62f3"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"5554451b4b6f4471c3e6036e90499bfeee7bc18b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                default\u003d[\u0027nova.cells.weights.all_weighers\u0027],"},{"line_number":43,"context_line":"                help\u003d\u0027Weigher classes the cells scheduler should use.  \u0027"},{"line_number":44,"context_line":"                        \u0027An entry of \"nova.cells.weights.all_weighers\"\u0027"},{"line_number":45,"context_line":"                        \u0027maps to all cell weighers included with nova.\u0027),"},{"line_number":46,"context_line":"        cfg.IntOpt(\u0027scheduler_retries\u0027,"},{"line_number":47,"context_line":"                default\u003d10,"},{"line_number":48,"context_line":"                help\u003d\u0027How many retries when no cells are available.\u0027),"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAO3%2F%2F7%2Fw%3D","line":45,"in_reply_to":"AAAAO3%2F%2F9vE%3D","updated":"2013-05-16 17:44:10.000000000","message":":)  I need to get this debt off of my plate... and it\u0027s at least consistent with the current host scheduler, as you mention.  If someone fixes the host scheduler, they can just as easily fix the cells scheduler.  And then these config options will have never appeared in a formal release.","commit_id":"66f7ccf395e71a705ce42b595895d1462ffc62f3"}],"nova/cells/weights/ram_by_instance_type.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"cba9c2301123a146bd457bc142d52bfbf2556822","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class RamByInstanceTypeWeigher(weights.BaseCellWeigher):"},{"line_number":35,"context_line":"    \"\"\"Weigh cells by instance_type requested.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weight_multiplier(self):"},{"line_number":38,"context_line":"        return CONF.cells.ram_weight_multiplier"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2Fg8o%3D","line":35,"updated":"2013-05-07 07:39:26.000000000","message":"weigh -\u003e Weight","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"3191c566a15c96a32d2e269492eec02003d03394","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class RamByInstanceTypeWeigher(weights.BaseCellWeigher):"},{"line_number":35,"context_line":"    \"\"\"Weigh cells by instance_type requested.\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _weight_multiplier(self):"},{"line_number":38,"context_line":"        return CONF.cells.ram_weight_multiplier"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAOn%2F%2FgFg%3D","line":35,"in_reply_to":"AAAAOn%2F%2Fg8o%3D","updated":"2013-05-07 16:50:32.000000000","message":"The name of the method has \u0027weigh\u0027 in it.. so I think this is right.  However, I used \u0027Weight\u0027 in the module docstring above, which I think is wrong.  I\u0027ve fixed that.","commit_id":"1d351de1024b87556cc162b980f157d7b3bf9983"}],"nova/tests/test_filters.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"3bdc05a493464d5e5684888a5172955a9d92c381","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        result \u003d base_filter.filter_all(filter_obj_list, filter_properties)"},{"line_number":51,"context_line":"        self.assertTrue(inspect.isgenerator(result))"},{"line_number":52,"context_line":"        self.assertEqual([\u0027obj1\u0027, \u0027obj3\u0027], list(result))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_filter_all_recursive_yields(self):"},{"line_number":55,"context_line":"        # Test filter_all() allows generators from previous filter_all()s."}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2Fb8E%3D","line":52,"updated":"2013-05-09 18:05:24.000000000","message":"These reorderings seem like needless churn.  I don\u0027t think we have a coding standard that says which comes first, so they\u0027re already okay, and this increases the size of an already large patch.","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"30b102c63553b02b5ff3b120d1dd931acf9d7445","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        result \u003d base_filter.filter_all(filter_obj_list, filter_properties)"},{"line_number":51,"context_line":"        self.assertTrue(inspect.isgenerator(result))"},{"line_number":52,"context_line":"        self.assertEqual([\u0027obj1\u0027, \u0027obj3\u0027], list(result))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_filter_all_recursive_yields(self):"},{"line_number":55,"context_line":"        # Test filter_all() allows generators from previous filter_all()s."}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2Fb4o%3D","line":52,"in_reply_to":"AAAAOn%2F%2Fb8E%3D","updated":"2013-05-09 18:31:25.000000000","message":"\u0027expected\u0027 argument comes first.  When these tests fail, the output from the failure is wrong.  I can move these into a different patch if we\u0027re going to be that picky.","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"3bdc05a493464d5e5684888a5172955a9d92c381","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            # Pass in generators returned from previous calls."},{"line_number":85,"context_line":"            objs \u003d base_filter.filter_all(objs, filter_properties)"},{"line_number":86,"context_line":"        self.assertTrue(inspect.isgenerator(objs))"},{"line_number":87,"context_line":"        self.assertEqual([\u0027obj1\u0027, \u0027obj3\u0027], list(objs))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_get_filtered_objects(self):"},{"line_number":90,"context_line":"        filter_objs_initial \u003d [\u0027initial\u0027, \u0027filter1\u0027, \u0027objects1\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2Fb8A%3D","line":87,"updated":"2013-05-09 18:05:24.000000000","message":"see above","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"3bdc05a493464d5e5684888a5172955a9d92c381","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        result \u003d filter_handler.get_filtered_objects(filter_classes,"},{"line_number":123,"context_line":"                                                     filter_objs_initial,"},{"line_number":124,"context_line":"                                                     filter_properties)"},{"line_number":125,"context_line":"        self.assertEqual(filter_objs_last, result)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def test_get_filtered_objects_none_response(self):"},{"line_number":128,"context_line":"        filter_objs_initial \u003d [\u0027initial\u0027, \u0027filter1\u0027, \u0027objects1\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAOn%2F%2Fb78%3D","line":125,"updated":"2013-05-09 18:05:24.000000000","message":"see above","commit_id":"fbe37a5697e7ad28ca52e705b212295c2f9bf7c9"}]}
