)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"c50f8c8d53212bc5e3b47df0e51bb620862773a1","unresolved":false,"context_lines":[{"line_number":3456,"context_line":""},{"line_number":3457,"context_line":"        if node is None:"},{"line_number":3458,"context_line":"            node \u003d self.driver.get_available_nodes()[0]"},{"line_number":3459,"context_line":"            LOG.debug(_(\u0027No node specified, defaulting to %s\u0027), node)"},{"line_number":3460,"context_line":""},{"line_number":3461,"context_line":"        rt \u003d self._get_resource_tracker(node)"},{"line_number":3462,"context_line":"        limits \u003d filter_properties.get(\u0027limits\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FPMo%3D","line":3459,"updated":"2013-10-20 02:23:34.000000000","message":"could you please explain a bit more about why it can be available_nodes()[0] when the passed in node is None.","commit_id":"47f0056f996b518c5cf1d06d163e1e32cf0775db"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"eddde15a682ac7bba0d817f5094fa7bb793c2e13","unresolved":false,"context_lines":[{"line_number":3456,"context_line":""},{"line_number":3457,"context_line":"        if node is None:"},{"line_number":3458,"context_line":"            node \u003d self.driver.get_available_nodes()[0]"},{"line_number":3459,"context_line":"            LOG.debug(_(\u0027No node specified, defaulting to %s\u0027), node)"},{"line_number":3460,"context_line":""},{"line_number":3461,"context_line":"        rt \u003d self._get_resource_tracker(node)"},{"line_number":3462,"context_line":"        limits \u003d filter_properties.get(\u0027limits\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FKKg%3D","line":3459,"in_reply_to":"AAAATH%2F%2FO%2FE%3D","updated":"2013-10-22 10:06:09.000000000","message":"thanks.","commit_id":"47f0056f996b518c5cf1d06d163e1e32cf0775db"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"b8fa87a781b3c821da7f3c9796eedde674c5d26b","unresolved":false,"context_lines":[{"line_number":3456,"context_line":""},{"line_number":3457,"context_line":"        if node is None:"},{"line_number":3458,"context_line":"            node \u003d self.driver.get_available_nodes()[0]"},{"line_number":3459,"context_line":"            LOG.debug(_(\u0027No node specified, defaulting to %s\u0027), node)"},{"line_number":3460,"context_line":""},{"line_number":3461,"context_line":"        rt \u003d self._get_resource_tracker(node)"},{"line_number":3462,"context_line":"        limits \u003d filter_properties.get(\u0027limits\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FO%2FE%3D","line":3459,"in_reply_to":"AAAATH%2F%2FPMo%3D","updated":"2013-10-20 09:34:18.000000000","message":"This is the standard way of getting a node from the driver when none is given. See other uses of it at L1001, L1547 and L2919.","commit_id":"47f0056f996b518c5cf1d06d163e1e32cf0775db"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"c437cf3fd7b0808e3bba3090953b6485baa75705","unresolved":false,"context_lines":[{"line_number":3601,"context_line":"    @reverts_task_state"},{"line_number":3602,"context_line":"    @wrap_instance_event"},{"line_number":3603,"context_line":"    @wrap_instance_fault"},{"line_number":3604,"context_line":"    def unshelve_instance(self, context, instance, filter_properties,"},{"line_number":3605,"context_line":"                          image\u003dNone, node\u003dNone):"},{"line_number":3606,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3607,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BEuQ%3D","line":3604,"updated":"2013-12-02 20:15:49.000000000","message":"Actually this is wrong as the new parameter filter_properties must have a default value for the method to be backwards compatible.","commit_id":"5770d206c1a1ea76ff8f2b4126a8adb165bf861b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2d8fa026fe5df3c81d7a1814be20ebbbd4909762","unresolved":false,"context_lines":[{"line_number":3497,"context_line":"    @wrap_instance_event"},{"line_number":3498,"context_line":"    @wrap_instance_fault"},{"line_number":3499,"context_line":"    def unshelve_instance(self, context, instance, filter_properties\u003dNone,"},{"line_number":3500,"context_line":"                          image\u003dNone, node\u003dNone):"},{"line_number":3501,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"        :param context: request context"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FkyE%3D","line":3500,"updated":"2014-01-10 21:22:47.000000000","message":"So, we\u0027re changing the parameter order here?  That strikes me as not backward compatible…","commit_id":"13717b33df4ffce6f20270d76fbfc8572788e72b"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"9d1430fc0a0739828a7a0761d3285b121eb4e468","unresolved":false,"context_lines":[{"line_number":3497,"context_line":"    @wrap_instance_event"},{"line_number":3498,"context_line":"    @wrap_instance_fault"},{"line_number":3499,"context_line":"    def unshelve_instance(self, context, instance, filter_properties\u003dNone,"},{"line_number":3500,"context_line":"                          image\u003dNone, node\u003dNone):"},{"line_number":3501,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"        :param context: request context"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FjZI%3D","line":3500,"in_reply_to":"AAAAUH%2F%2FkyE%3D","updated":"2014-01-11 14:32:20.000000000","message":"Not sure it matters here as both old and new rpcapi versions make their calls with image as a keyword argument. Maybe though it matters in rpcapi as conductor manager used to call to it with image as positional argument.","commit_id":"13717b33df4ffce6f20270d76fbfc8572788e72b"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"e832a7f795b3ad344bff243d08297ac225b49ed5","unresolved":false,"context_lines":[{"line_number":3497,"context_line":"    @wrap_instance_event"},{"line_number":3498,"context_line":"    @wrap_instance_fault"},{"line_number":3499,"context_line":"    def unshelve_instance(self, context, instance, image\u003dNone,"},{"line_number":3500,"context_line":"                          filter_properties\u003dNone, node\u003dNone):"},{"line_number":3501,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"        :param context: request context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FEq8%3D","line":3500,"updated":"2014-01-17 17:55:22.000000000","message":"I don\u0027t see why image becomes an optional parameter with this change ?\n\nIt feels like an unrelated change, and isn\u0027t covered in the commit message.","commit_id":"5cfa02b1fa2a2a4703fc067f999e3ba6b4e578be"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3321e0498f6acd2ca01d3298c125e6c37fe6cfe9","unresolved":false,"context_lines":[{"line_number":3497,"context_line":"    @wrap_instance_event"},{"line_number":3498,"context_line":"    @wrap_instance_fault"},{"line_number":3499,"context_line":"    def unshelve_instance(self, context, instance, image\u003dNone,"},{"line_number":3500,"context_line":"                          filter_properties\u003dNone, node\u003dNone):"},{"line_number":3501,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"        :param context: request context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FcUM%3D","line":3500,"updated":"2014-01-13 20:56:38.000000000","message":"Thanks :)","commit_id":"5cfa02b1fa2a2a4703fc067f999e3ba6b4e578be"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"571482479ef8a3253eb61504a0dad0610e388918","unresolved":false,"context_lines":[{"line_number":3497,"context_line":"    @wrap_instance_event"},{"line_number":3498,"context_line":"    @wrap_instance_fault"},{"line_number":3499,"context_line":"    def unshelve_instance(self, context, instance, image\u003dNone,"},{"line_number":3500,"context_line":"                          filter_properties\u003dNone, node\u003dNone):"},{"line_number":3501,"context_line":"        \"\"\"Unshelve the instance."},{"line_number":3502,"context_line":""},{"line_number":3503,"context_line":"        :param context: request context"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F9cnc%3D","line":3500,"in_reply_to":"AAAAUH%2F%2FEq8%3D","updated":"2014-02-06 21:06:43.000000000","message":"Done","commit_id":"5cfa02b1fa2a2a4703fc067f999e3ba6b4e578be"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"603e5ee7f367c2508f07890fffa1c7914afe6e7e","unresolved":false,"context_lines":[{"line_number":3622,"context_line":"        try:"},{"line_number":3623,"context_line":"            with rt.instance_claim(context, instance, limits):"},{"line_number":3624,"context_line":"                self.driver.spawn(context, instance, image, injected_files\u003d[],"},{"line_number":3625,"context_line":"                        admin_password\u003dNone,"},{"line_number":3626,"context_line":"                        network_info\u003dnetwork_info,"},{"line_number":3627,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":3628,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9cNk%3D","line":3625,"updated":"2014-02-06 21:56:09.000000000","message":"Nit: These would be more readable if lined up with the first argument.","commit_id":"19a025a909b5891af21a6bb49547ff1269ac56c2"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"a4c9e7c9611ac5fb8f56ecfe29ded9d6593bb6ae","unresolved":false,"context_lines":[{"line_number":3622,"context_line":"        try:"},{"line_number":3623,"context_line":"            with rt.instance_claim(context, instance, limits):"},{"line_number":3624,"context_line":"                self.driver.spawn(context, instance, image, injected_files\u003d[],"},{"line_number":3625,"context_line":"                        admin_password\u003dNone,"},{"line_number":3626,"context_line":"                        network_info\u003dnetwork_info,"},{"line_number":3627,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":3628,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9cA8%3D","line":3625,"in_reply_to":"AAAAUH%2F9cNk%3D","updated":"2014-02-06 22:25:25.000000000","message":"Done","commit_id":"19a025a909b5891af21a6bb49547ff1269ac56c2"}]}
