)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d807080185f889009e21a98ca3a80b8061bc6dd2","unresolved":false,"context_lines":[{"line_number":2122,"context_line":"            self.conductor_api.migration_update(context, migration,"},{"line_number":2123,"context_line":"                                                \u0027confirmed\u0027)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"            instance_type \u003d instance_types.extract_instance_type(instance,"},{"line_number":2126,"context_line":"                                                                 \u0027old_\u0027)"},{"line_number":2127,"context_line":"            rt \u003d self._get_resource_tracker(migration[\u0027source_node\u0027])"},{"line_number":2128,"context_line":"            rt.abort_resize_claim(instance[\u0027uuid\u0027], instance_type, \u0027old_\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2hM%3D","line":2125,"updated":"2013-04-17 18:46:45.000000000","message":"I\u0027d like to see this fall back to getting the instance type from conductor.  Migration records that existed pre-Grizzly upgrade will not have \"old_\" and \"new_\" stashed types.","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"9f1807ca334036bfed8249bfa0c58c37cf60dbe0","unresolved":false,"context_lines":[{"line_number":2122,"context_line":"            self.conductor_api.migration_update(context, migration,"},{"line_number":2123,"context_line":"                                                \u0027confirmed\u0027)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"            instance_type \u003d instance_types.extract_instance_type(instance,"},{"line_number":2126,"context_line":"                                                                 \u0027old_\u0027)"},{"line_number":2127,"context_line":"            rt \u003d self._get_resource_tracker(migration[\u0027source_node\u0027])"},{"line_number":2128,"context_line":"            rt.abort_resize_claim(instance[\u0027uuid\u0027], instance_type, \u0027old_\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2ZA%3D","line":2125,"in_reply_to":"AAAAOn%2F%2F2hM%3D","updated":"2013-04-17 22:05:40.000000000","message":"Done","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d807080185f889009e21a98ca3a80b8061bc6dd2","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"            instance_type \u003d instance_types.extract_instance_type(instance,"},{"line_number":2126,"context_line":"                                                                 \u0027old_\u0027)"},{"line_number":2127,"context_line":"            rt \u003d self._get_resource_tracker(migration[\u0027source_node\u0027])"},{"line_number":2128,"context_line":"            rt.abort_resize_claim(instance[\u0027uuid\u0027], instance_type, \u0027old_\u0027)"},{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"            instance \u003d self._instance_update(context, instance[\u0027uuid\u0027],"},{"line_number":2131,"context_line":"                                             vm_state\u003dvm_states.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2hI%3D","line":2128,"updated":"2013-04-17 18:46:45.000000000","message":"I like your re-use/modification of the abort_resize_claim method but the name of it doesn\u0027t make sense anymore.  It\u0027s not aborting a claim per se here, so much as simply stating that the claim is no longer needed.","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"9f1807ca334036bfed8249bfa0c58c37cf60dbe0","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"            instance_type \u003d instance_types.extract_instance_type(instance,"},{"line_number":2126,"context_line":"                                                                 \u0027old_\u0027)"},{"line_number":2127,"context_line":"            rt \u003d self._get_resource_tracker(migration[\u0027source_node\u0027])"},{"line_number":2128,"context_line":"            rt.abort_resize_claim(instance[\u0027uuid\u0027], instance_type, \u0027old_\u0027)"},{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"            instance \u003d self._instance_update(context, instance[\u0027uuid\u0027],"},{"line_number":2131,"context_line":"                                             vm_state\u003dvm_states.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2Y8%3D","line":2128,"in_reply_to":"AAAAOn%2F%2F2hI%3D","updated":"2013-04-17 22:05:40.000000000","message":"Done","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d807080185f889009e21a98ca3a80b8061bc6dd2","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":194,"context_line":"        self._update(ctxt, self.compute_node)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def abort_resize_claim(self, instance_uuid, instance_type, prefix\u003d\u0027new_\u0027):"},{"line_number":197,"context_line":"        \"\"\"Remove usage for an incoming migration.\"\"\""},{"line_number":198,"context_line":"        if instance_uuid in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2go%3D","line":196,"updated":"2013-04-17 18:46:45.000000000","message":"The method would need to be called under lock to protect the resource usage calculations.","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"9f1807ca334036bfed8249bfa0c58c37cf60dbe0","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":194,"context_line":"        self._update(ctxt, self.compute_node)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def abort_resize_claim(self, instance_uuid, instance_type, prefix\u003d\u0027new_\u0027):"},{"line_number":197,"context_line":"        \"\"\"Remove usage for an incoming migration.\"\"\""},{"line_number":198,"context_line":"        if instance_uuid in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2Y4%3D","line":196,"in_reply_to":"AAAAOn%2F%2F2go%3D","updated":"2013-04-17 22:05:40.000000000","message":"Can you please verify this is needed, I get TimeoutExceptions that traces back to lockutils.py for abort and same host tests if I use a lock.\n\nAlso, the _update_usage method itself is already protected by a lock.","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"d807080185f889009e21a98ca3a80b8061bc6dd2","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        if instance_uuid in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance_uuid)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            if instance_type[\u0027id\u0027] \u003d\u003d migration[\u0027%sinstance_type_id\u0027 % prefix]:"},{"line_number":202,"context_line":"                self.stats.update_stats_for_migration(itype, sign\u003d-1)"},{"line_number":203,"context_line":"                self._update_usage(self.compute_node, itype, sign\u003d-1)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2gk%3D","line":201,"updated":"2013-04-17 18:46:45.000000000","message":"I\u0027d prefer this to be broken onto 2 lines for readability.","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"9f1807ca334036bfed8249bfa0c58c37cf60dbe0","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        if instance_uuid in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance_uuid)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            if instance_type[\u0027id\u0027] \u003d\u003d migration[\u0027%sinstance_type_id\u0027 % prefix]:"},{"line_number":202,"context_line":"                self.stats.update_stats_for_migration(itype, sign\u003d-1)"},{"line_number":203,"context_line":"                self._update_usage(self.compute_node, itype, sign\u003d-1)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F2Yo%3D","line":201,"in_reply_to":"AAAAOn%2F%2F2gk%3D","updated":"2013-04-17 22:05:40.000000000","message":"To make it even simpler I think this could be replaced with:\n\nif instance_type[\u0027id\u0027] \u003d\u003d itype[\u0027id\u0027]:\n\nAm I correct?","commit_id":"46666a58644862fb5099aff6f0d9a41ff63c16bf"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"5957551e590c9060a03525479b186a1bf715915e","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":194,"context_line":"        self._update(ctxt, self.compute_node)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def drop_resize_claim(self, instance, instance_type\u003dNone, prefix\u003d\u0027new_\u0027):"},{"line_number":197,"context_line":"        \"\"\"Remove usage for an incoming/outgoing migration.\"\"\""},{"line_number":198,"context_line":"        if instance[\u0027uuid\u0027] in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2F2Ss%3D","line":196,"updated":"2013-04-17 23:48:42.000000000","message":"Yes, locking like the following should be used to protect the resource updates.\n@lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, \u0027nova-\u0027)\n\nThis locking *is* happening in the abort() path in nova/compute/claims.py, but not when your patch calls this method directly via compute manager.\n\nI believe the reason for the TimeoutException is that you cannot nest methods that both have a lockutils decorator attempting to grab the same lock.  For the use case you are adding, you may need to add a method that has the locking decorator and calls the above method from there.","commit_id":"c584ee75c92fa55a1914ba78f64348728484dffd"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"5756483ce3d9ecc4e0b780d6e5eacd59bd71ea38","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":194,"context_line":"        self._update(ctxt, self.compute_node)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def drop_resize_claim(self, instance, instance_type\u003dNone, prefix\u003d\u0027new_\u0027):"},{"line_number":197,"context_line":"        \"\"\"Remove usage for an incoming/outgoing migration.\"\"\""},{"line_number":198,"context_line":"        if instance[\u0027uuid\u0027] in self.tracked_migrations:"},{"line_number":199,"context_line":"            migration, itype \u003d self.tracked_migrations.pop(instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2F2BI%3D","line":196,"in_reply_to":"AAAAOn%2F%2F2Ss%3D","updated":"2013-04-18 11:02:47.000000000","message":"OK, I worked around this by moving the lock out of claims to here to cover all uses of this method.\n\nFor consistency, I did the same with for instance claims.","commit_id":"c584ee75c92fa55a1914ba78f64348728484dffd"}]}
