)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"090ed2438026192dff2ddd03bcb0ae2381d4a566","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"                instance \u003d self.db.instance_get_by_uuid(context,"},{"line_number":2077,"context_line":"                        instance_uuid)"},{"line_number":2078,"context_line":"            except (AttributeError, IndexError):"},{"line_number":2079,"context_line":"                db_instances \u003d self.db.instance_get_all_by_host("},{"line_number":2080,"context_line":"                        context, self.host)"},{"line_number":2081,"context_line":"                self._instance_uuids_to_heal \u003d ["},{"line_number":2082,"context_line":"                        instance[\u0027uuid\u0027] for instance in db_instances]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F5Z0%3D","line":2079,"updated":"2012-02-17 19:02:48.000000000","message":"I\u0027m not clear on how doing this in a `while True` that eventually returns is much different than a `for instance in self.db.instance_get_all_by_host(*args)`","commit_id":"afcfccfd412f3e95ac6fc5852e7916eec59adb4a"},{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"b7cedca1ee07e202ea33e43a4a76237b067cb107","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"                instance \u003d self.db.instance_get_by_uuid(context,"},{"line_number":2077,"context_line":"                        instance_uuid)"},{"line_number":2078,"context_line":"            except (AttributeError, IndexError):"},{"line_number":2079,"context_line":"                db_instances \u003d self.db.instance_get_all_by_host("},{"line_number":2080,"context_line":"                        context, self.host)"},{"line_number":2081,"context_line":"                self._instance_uuids_to_heal \u003d ["},{"line_number":2082,"context_line":"                        instance[\u0027uuid\u0027] for instance in db_instances]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F5OY%3D","line":2079,"in_reply_to":"AAAAEn%2F%2F5P8%3D","updated":"2012-02-17 20:53:46.000000000","message":"Its doing everything under the `while True` and using the Exceptions for flow control that\u0027s throwing me off.  I think something along the lines of:\n\n\n    def _get_instance_to_heal():\n        instance_uuids \u003d getattr(self, \u0027_instance_uuids_to_heal\u0027, None)\n        instance \u003d None\n        if not instance_uuids:\n            db_instances \u003d self.db.instance_get_all_by_host(context,\n                                                            self.host)\n            instance \u003d db_instances.pop(0)\n            instance_uuids \u003d [instance[\u0027uuid\u0027] for instance in db_instances]\n            self._instance_uuids_to_heal \u003d instance_uuids\n\n        if instance is None:\n            instance_uuid \u003d self._instance_uuids_to_heal.pop(0)\n            instance \u003d self.db.instance_get_by_uuid(context, instance_uuid)\n\n        return instance\n\n    instance \u003d _get_instance_to_heal()\n    while instance[\u0027host\u0027] !\u003d self.host:\n        instance \u003d _get_instance_to_heal()\n\n    try:\n        self.network_api.get_instance_nw_info(context, instance)\n        LOG.debug(_(\"Updated the info_cache\"), instance\u003dinstance)\n    except Exception:\n        pass\n\n\nIs a little (but not much) simpler to follow. But there\u0027s probably some optimization that I\u0027m missing.","commit_id":"afcfccfd412f3e95ac6fc5852e7916eec59adb4a"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7a3112eeccced47504b1beb85d989125b38c4358","unresolved":false,"context_lines":[{"line_number":2076,"context_line":"                instance \u003d self.db.instance_get_by_uuid(context,"},{"line_number":2077,"context_line":"                        instance_uuid)"},{"line_number":2078,"context_line":"            except (AttributeError, IndexError):"},{"line_number":2079,"context_line":"                db_instances \u003d self.db.instance_get_all_by_host("},{"line_number":2080,"context_line":"                        context, self.host)"},{"line_number":2081,"context_line":"                self._instance_uuids_to_heal \u003d ["},{"line_number":2082,"context_line":"                        instance[\u0027uuid\u0027] for instance in db_instances]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F5P8%3D","line":2079,"in_reply_to":"AAAAEn%2F%2F5Z0%3D","updated":"2012-02-17 20:28:05.000000000","message":"Because this is not looping through all instances on every run.  It only does the DB query if we\u0027ve never set self._instance_uuids_to_heal... or if it\u0027s set but it\u0027s empty (nothing to pop off).  See 2nd paragraph in the doc string.  Which part is confusing?  I can attempt to clarify it.\n\nEssentially this is a way to update every single instance... but not update them all at once, so there\u0027s not a flood of 50 rpc calls to network at once.  It\u0027ll only update 1 instance every \u0027heal_interval\u0027 seconds.  (It\u0027d be even worse if all compute nodes happen to have their periodic tasks in sync :)","commit_id":"afcfccfd412f3e95ac6fc5852e7916eec59adb4a"}],"nova/tests/test_compute.py":[{"author":{"_account_id":385,"name":"Jason Kölker","email":"jason@koelker.net","username":"jason-koelker"},"change_message_id":"0e909660abf075bd9c3af7a954496f17212147de","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"        inst_type[\u0027memory_mb\u0027] \u003d 1"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        def fake_show(*args):"},{"line_number":1688,"context_line":"            img \u003d copy.copy(self.fake_image)"},{"line_number":1689,"context_line":"            img[\u0027min_ram\u0027] \u003d 2"},{"line_number":1690,"context_line":"            return img"},{"line_number":1691,"context_line":"        self.stubs.Set(fake_image._FakeImageService, \u0027show\u0027, fake_show)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAEn%2F%2F3us%3D","line":1688,"updated":"2012-02-22 15:23:12.000000000","message":"These could be self.fake_image.copy().","commit_id":"75cce617d56d07c107d58d2f07aa574ed1ee84f4"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e0094f22705a6e87ef7591431409a3901afedb7b","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"        inst_type[\u0027memory_mb\u0027] \u003d 1"},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"        def fake_show(*args):"},{"line_number":1688,"context_line":"            img \u003d copy.copy(self.fake_image)"},{"line_number":1689,"context_line":"            img[\u0027min_ram\u0027] \u003d 2"},{"line_number":1690,"context_line":"            return img"},{"line_number":1691,"context_line":"        self.stubs.Set(fake_image._FakeImageService, \u0027show\u0027, fake_show)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAEn%2F%2F3lM%3D","line":1688,"in_reply_to":"AAAAEn%2F%2F3us%3D","updated":"2012-02-22 18:38:11.000000000","message":"yeah, true.  copy module is used throughout this file already...  I just fixed the import to obey HACKING (import the module, not the method).","commit_id":"75cce617d56d07c107d58d2f07aa574ed1ee84f4"}]}
