)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"MoRef implementation with closure - should ease the transition to stable"},{"line_number":18,"context_line":"mo-refs One simply has to pass the search function as a closure to the"},{"line_number":19,"context_line":"MoRef intstance, and the very same method will be called when an"},{"line_number":20,"context_line":"exception is raised for the stored reference."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Stable Volume refs - The connection_info[\u0027data\u0027] contains the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"4a0203cb_393349eb","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":15},"updated":"2022-04-25 13:01:48.000000000","message":"nit: instance","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"36d1c1c7230cccc1d158a853d950a686d3aabde6","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"MoRef implementation with closure - should ease the transition to stable"},{"line_number":18,"context_line":"mo-refs One simply has to pass the search function as a closure to the"},{"line_number":19,"context_line":"MoRef intstance, and the very same method will be called when an"},{"line_number":20,"context_line":"exception is raised for the stored reference."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Stable Volume refs - The connection_info[\u0027data\u0027] contains the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"0282b4e9_ff889a75","line":19,"range":{"start_line":19,"start_character":6,"end_line":19,"end_character":15},"in_reply_to":"4a0203cb_393349eb","updated":"2022-04-29 08:14:59.000000000","message":"Done","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Partial-Bug: #1962771"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Depends-On: I4094b6031872bd3b5c871b9a82c7e01280a3352d"},{"line_number":42,"context_line":"Change-Id: I2a3ddf95b7fe07630855b06e732f8764efb13e91"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"8a8a50a6_0eff6676","line":41,"updated":"2022-04-25 13:01:48.000000000","message":"nit: you don\u0027t need it as the referred patch is already an ancestor of this. (Depends-On is useful when there is a dependency between two patches that are not in the same commit chain)","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"36d1c1c7230cccc1d158a853d950a686d3aabde6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Partial-Bug: #1962771"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Depends-On: I4094b6031872bd3b5c871b9a82c7e01280a3352d"},{"line_number":42,"context_line":"Change-Id: I2a3ddf95b7fe07630855b06e732f8764efb13e91"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"24c53067_918c90d6","line":41,"in_reply_to":"8a8a50a6_0eff6676","updated":"2022-04-29 08:14:59.000000000","message":"Done","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"27ac6485_6aee1b3f","updated":"2022-04-05 10:13:04.000000000","message":"You need to get rid of six and the object (rather than module) imports. Otherwise, this look pretty good","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"405d1af7_03820d94","updated":"2022-04-06 11:32:59.000000000","message":"fixed all suggestions","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"50b5b2e0_5740f95c","updated":"2022-04-25 13:01:48.000000000","message":"I have couple of questions inline.","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"ceb63975fb58d3dc7d0a29b67d59d272b2e9ea94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"622af81f_dc69b7e7","updated":"2022-04-29 08:04:09.000000000","message":"Thanks for the feedback.\n\nThe changes certainly can be implemented as proposed.\nSome longer explanations why it is done differently.\nIf that reasoning is not convincing to you, then we can change it.\n\nProbably it would make sense to add the reasoning as comments to the code.\n","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf8290e959edad270f8eb27e34ec905bb6a30dcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"adcab0d2_b689ad3c","updated":"2022-04-29 09:04:55.000000000","message":"Looks good. Thanks for the explanation.","commit_id":"56055ede03fff633020e0f34fa4da5c8457a89c6"}],"nova/tests/unit/virt/vmwareapi/fake.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":22,"context_line":"import collections"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":7,"id":"8f2646f0_37c24a3d","line":25,"updated":"2022-04-05 10:13:04.000000000","message":"Don\u0027t reintroduce six. This is a Python 3-only codebase now.","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import collections"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_log import log as logging"},{"line_number":28,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":7,"id":"eb119a35_b1bf54e3","line":25,"in_reply_to":"8f2646f0_37c24a3d","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    update_object(table_obj)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_object(obj_ref):"},{"line_number":88,"context_line":"    \"\"\"Get object for the give reference.\"\"\""},{"line_number":89,"context_line":"    return _db_content[obj_ref.type][obj_ref.value]"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"6010875f_2ad7fcda","line":87,"updated":"2022-04-05 10:13:04.000000000","message":"nit: A separate prior change to make these functions non-private would reduce the diff of this change and make it easier to review","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"36d1c1c7230cccc1d158a853d950a686d3aabde6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    update_object(table_obj)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_object(obj_ref):"},{"line_number":88,"context_line":"    \"\"\"Get object for the give reference.\"\"\""},{"line_number":89,"context_line":"    return _db_content[obj_ref.type][obj_ref.value]"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"8d0412ac_d89726d6","line":87,"in_reply_to":"5a5a32be_b71901df","updated":"2022-04-29 08:14:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    update_object(table_obj)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_object(obj_ref):"},{"line_number":88,"context_line":"    \"\"\"Get object for the give reference.\"\"\""},{"line_number":89,"context_line":"    return _db_content[obj_ref.type][obj_ref.value]"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5a32be_b71901df","line":87,"in_reply_to":"6010875f_2ad7fcda","updated":"2022-04-06 11:32:59.000000000","message":"I think single change related to vmware stable ref would be good a well.","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def get_objects(obj_type):"},{"line_number":93,"context_line":"    \"\"\"Get objects of the type.\"\"\""},{"line_number":94,"context_line":"    return six.itervalues(_db_content[obj_type])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_first_object(obj_type):"}],"source_content_type":"text/x-python","patch_set":7,"id":"f3dbea38_d99fba92","line":94,"range":{"start_line":94,"start_character":11,"end_line":94,"end_character":48},"updated":"2022-04-05 10:13:04.000000000","message":"dict.values() \u003d\u003d six.itervalues(dict) on Python 3, so\n\n  return _db_content[obj_type].values()","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def get_objects(obj_type):"},{"line_number":93,"context_line":"    \"\"\"Get objects of the type.\"\"\""},{"line_number":94,"context_line":"    return six.itervalues(_db_content[obj_type])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_first_object(obj_type):"}],"source_content_type":"text/x-python","patch_set":7,"id":"c0758785_75252c9d","line":94,"range":{"start_line":94,"start_character":11,"end_line":94,"end_character":48},"in_reply_to":"f3dbea38_d99fba92","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_first_object(obj_type):"},{"line_number":98,"context_line":"    \"\"\"Get the first object of an object type\"\"\""},{"line_number":99,"context_line":"    return next(six.itervalues(_db_content[obj_type]))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def get_first_object_ref(obj_type):"}],"source_content_type":"text/x-python","patch_set":7,"id":"af4e05e9_def85745","line":99,"updated":"2022-04-05 10:13:04.000000000","message":"ditto","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def get_first_object(obj_type):"},{"line_number":98,"context_line":"    \"\"\"Get the first object of an object type\"\"\""},{"line_number":99,"context_line":"    return next(six.itervalues(_db_content[obj_type]))"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def get_first_object_ref(obj_type):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ce83b9f_126bd623","line":99,"in_reply_to":"af4e05e9_def85745","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def get_object_refs(obj_type):"},{"line_number":156,"context_line":"    \"\"\"Get iterator over object References of the type.\"\"\""},{"line_number":157,"context_line":"    for obj in six.itervalues(_db_content[obj_type]):"},{"line_number":158,"context_line":"        yield obj.obj"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"195817cd_060432f2","line":157,"updated":"2022-04-05 10:13:04.000000000","message":"ditto","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"def get_object_refs(obj_type):"},{"line_number":156,"context_line":"    \"\"\"Get iterator over object References of the type.\"\"\""},{"line_number":157,"context_line":"    for obj in six.itervalues(_db_content[obj_type]):"},{"line_number":158,"context_line":"        yield obj.obj"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"e65bd158_13640db6","line":157,"in_reply_to":"195817cd_060432f2","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":189,"context_line":"        self._type \u003d name"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def __repr__(self):"},{"line_number":192,"context_line":"        return \"{}:{}\".format(self._type, self.value)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def __eq__(self, other):"},{"line_number":195,"context_line":"        return (other is not None and"}],"source_content_type":"text/x-python","patch_set":7,"id":"5192e560_641f669b","line":192,"updated":"2022-04-05 10:13:04.000000000","message":"nit: f-strings?\n\n  return f\u0027{self._type}:{self.value}\u0027","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self._type \u003d name"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def __repr__(self):"},{"line_number":192,"context_line":"        return \"{}:{}\".format(self._type, self.value)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def __eq__(self, other):"},{"line_number":195,"context_line":"        return (other is not None and"}],"source_content_type":"text/x-python","patch_set":7,"id":"f8371579_47b0ac54","line":192,"in_reply_to":"5192e560_641f669b","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"}],"nova/tests/unit/virt/vmwareapi/test_session.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from oslo_vmware.exceptions import ManagedObjectNotFoundException"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from nova import test"},{"line_number":29,"context_line":"from nova.tests.unit.virt.vmwareapi import fake as vmwareapi_fake"}],"source_content_type":"text/x-python","patch_set":7,"id":"86d329d3_d9bd86b1","line":26,"updated":"2022-04-05 10:13:04.000000000","message":"Follow Hacking:\n\n  Do not import objects, only modules (*)\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from oslo_vmware.exceptions import ManagedObjectNotFoundException"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from nova import test"},{"line_number":29,"context_line":"from nova.tests.unit.virt.vmwareapi import fake as vmwareapi_fake"}],"source_content_type":"text/x-python","patch_set":7,"id":"a2468d95_0450eb76","line":26,"in_reply_to":"86d329d3_d9bd86b1","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":166,"context_line":"                       return_value\u003dTrue)"},{"line_number":167,"context_line":"    def test_call_method_recovery_arg_success(self, mock_is_vim):"},{"line_number":168,"context_line":"        with test.nested("},{"line_number":169,"context_line":"                mock.patch.object(VMwareAPISession, \u0027_create_session\u0027,"},{"line_number":170,"context_line":"                                  _fake_create_session),"},{"line_number":171,"context_line":"                mock.patch.object(VMwareAPISession, \u0027invoke_api\u0027),"},{"line_number":172,"context_line":"                mock.patch.object(FakeStableMoRefProxy,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3824eb29_d3c84025","line":169,"range":{"start_line":169,"start_character":12,"end_line":169,"end_character":16},"updated":"2022-04-05 10:13:04.000000000","message":"style nit: You only need four spaces of indentation","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                       return_value\u003dTrue)"},{"line_number":167,"context_line":"    def test_call_method_recovery_arg_success(self, mock_is_vim):"},{"line_number":168,"context_line":"        with test.nested("},{"line_number":169,"context_line":"                mock.patch.object(VMwareAPISession, \u0027_create_session\u0027,"},{"line_number":170,"context_line":"                                  _fake_create_session),"},{"line_number":171,"context_line":"                mock.patch.object(VMwareAPISession, \u0027invoke_api\u0027),"},{"line_number":172,"context_line":"                mock.patch.object(FakeStableMoRefProxy,"}],"source_content_type":"text/x-python","patch_set":7,"id":"b47ec7a9_6c91c8bc","line":169,"range":{"start_line":169,"start_character":12,"end_line":169,"end_character":16},"in_reply_to":"3824eb29_d3c84025","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"}],"nova/virt/vmwareapi/session.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import abc"},{"line_number":19,"context_line":"import itertools"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"ebad7da0_0a40b1c5","line":20,"updated":"2022-04-05 10:13:04.000000000","message":"Don\u0027t re-add six","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import abc"},{"line_number":19,"context_line":"import itertools"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"bc77b39a_19048da8","line":20,"in_reply_to":"ebad7da0_0a40b1c5","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":36,"context_line":"class StableMoRefProxy(object):"},{"line_number":37,"context_line":"    \"\"\"Abstract base class which acts as a proxy"},{"line_number":38,"context_line":"    for Managed-Object-References (MoRef)."},{"line_number":39,"context_line":"    Those references are usually \"stable\", meaning"}],"source_content_type":"text/x-python","patch_set":7,"id":"f21b0580_12e95af5","line":36,"updated":"2022-04-05 10:13:04.000000000","message":"You don\u0027t need six:\n\n  class StableMoRefProxy(metaclass\u003dabc.ABCMeta):","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":36,"context_line":"class StableMoRefProxy(object):"},{"line_number":37,"context_line":"    \"\"\"Abstract base class which acts as a proxy"},{"line_number":38,"context_line":"    for Managed-Object-References (MoRef)."},{"line_number":39,"context_line":"    Those references are usually \"stable\", meaning"}],"source_content_type":"text/x-python","patch_set":7,"id":"e1f500fc_2095a423","line":36,"in_reply_to":"f21b0580_12e95af5","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":true,"context_lines":[{"line_number":148,"context_line":"        # We only end up here when we have recovered a moref by changing"},{"line_number":149,"context_line":"        # the stored value of an argument to a different value,"},{"line_number":150,"context_line":"        # so let\u0027s try again (and recover again if it happens more than once)"},{"line_number":151,"context_line":"        return self._call_method(module, method, *args, **kwargs)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _wait_for_task(self, task_ref):"},{"line_number":154,"context_line":"        \"\"\"Return a Deferred that will give the result of the given task."}],"source_content_type":"text/x-python","patch_set":9,"id":"b2859d77_d9f0b817","line":151,"updated":"2022-04-25 13:01:48.000000000","message":"I don\u0027t know the actual error modes of the morefs in vmware but this cause a RecursionError if the original problem of the moref is persistent. Should we stop retrying after N attempts?","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf8290e959edad270f8eb27e34ec905bb6a30dcf","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # We only end up here when we have recovered a moref by changing"},{"line_number":149,"context_line":"        # the stored value of an argument to a different value,"},{"line_number":150,"context_line":"        # so let\u0027s try again (and recover again if it happens more than once)"},{"line_number":151,"context_line":"        return self._call_method(module, method, *args, **kwargs)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _wait_for_task(self, task_ref):"},{"line_number":154,"context_line":"        \"\"\"Return a Deferred that will give the result of the given task."}],"source_content_type":"text/x-python","patch_set":9,"id":"c477ba0b_85205d03","line":151,"in_reply_to":"5d08da6c_4a5c832c","updated":"2022-04-29 09:04:55.000000000","message":"Thanks for the explanation. I agree that we don\u0027t need to prepare for this.","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"ceb63975fb58d3dc7d0a29b67d59d272b2e9ea94","unresolved":true,"context_lines":[{"line_number":148,"context_line":"        # We only end up here when we have recovered a moref by changing"},{"line_number":149,"context_line":"        # the stored value of an argument to a different value,"},{"line_number":150,"context_line":"        # so let\u0027s try again (and recover again if it happens more than once)"},{"line_number":151,"context_line":"        return self._call_method(module, method, *args, **kwargs)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _wait_for_task(self, task_ref):"},{"line_number":154,"context_line":"        \"\"\"Return a Deferred that will give the result of the given task."}],"source_content_type":"text/x-python","patch_set":9,"id":"5d08da6c_4a5c832c","line":151,"in_reply_to":"b2859d77_d9f0b817","updated":"2022-04-29 08:04:09.000000000","message":"The recursion depth is limited by the number of moref id changes during the execution of the function. I want to highlight that it only recurses, if a new moref id has been found.\n\nWe have a limited low number of moref as arguments,\nand the moref is essentially a row-id in the underlying database.\n\nThe row-number for an object only changes when an object gets unregistered and re-registered, or the database gets restored.\n\nSo, to get into a recursion error, you\u0027ll have to do that in the time-frame the function retries, and achieve that feat 1000 times in a row.\n\nI would put that situation the rather purely theoretical realm, and I rather would like to avoid to change the interface of the function, as it is proxying arbitrary API calls. (Probably prefixing the limit with underscore would be enough)","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"}],"nova/virt/vmwareapi/vm_util.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":36,"context_line":"from nova.i18n import _"},{"line_number":37,"context_line":"from nova.network import model as network_model"},{"line_number":38,"context_line":"from nova.virt.vmwareapi import constants"},{"line_number":39,"context_line":"from nova.virt.vmwareapi.session import StableMoRefProxy"},{"line_number":40,"context_line":"from nova.virt.vmwareapi import vim_util"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abaa350_222dfbc1","line":39,"updated":"2022-04-05 10:13:04.000000000","message":"Don\u0027t import objects","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from nova.i18n import _"},{"line_number":37,"context_line":"from nova.network import model as network_model"},{"line_number":38,"context_line":"from nova.virt.vmwareapi import constants"},{"line_number":39,"context_line":"from nova.virt.vmwareapi.session import StableMoRefProxy"},{"line_number":40,"context_line":"from nova.virt.vmwareapi import vim_util"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":7,"id":"c57e0534_3dd6fd69","line":39,"in_reply_to":"1abaa350_222dfbc1","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"                                     _get_object_for_optionvalue)"},{"line_number":1116,"context_line":""},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"class VmMoRefProxy(session.StableMoRefProxy):"},{"line_number":1119,"context_line":"    def __init__(self, ref, uuid):"},{"line_number":1120,"context_line":"        super(VmMoRefProxy, self).__init__(ref)"},{"line_number":1121,"context_line":"        self._uuid \u003d uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"7589ee42_a7a4dd5b","line":1118,"range":{"start_line":1118,"start_character":27,"end_line":1118,"end_character":43},"updated":"2022-04-25 13:01:48.000000000","message":"Can we change this to MoRef and passing search_vm_ref_by_identifier as the closure to re-fetch the vmMo?","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":24434,"name":"Fabian Wiesel","email":"fabian.wiesel@sap.com","username":"fwiesel"},"change_message_id":"ceb63975fb58d3dc7d0a29b67d59d272b2e9ea94","unresolved":true,"context_lines":[{"line_number":1115,"context_line":"                                     _get_object_for_optionvalue)"},{"line_number":1116,"context_line":""},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"class VmMoRefProxy(session.StableMoRefProxy):"},{"line_number":1119,"context_line":"    def __init__(self, ref, uuid):"},{"line_number":1120,"context_line":"        super(VmMoRefProxy, self).__init__(ref)"},{"line_number":1121,"context_line":"        self._uuid \u003d uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"c51d4dc4_fcaefe50","line":1118,"range":{"start_line":1118,"start_character":27,"end_line":1118,"end_character":43},"in_reply_to":"7589ee42_a7a4dd5b","updated":"2022-04-29 08:04:09.000000000","message":"The function re-fetching the reference needs to behave like get_vm_ref,\nand search_vm_ref_by_identifier is explicitly implemented differently for a different use-case.\n\nThe re-fetching function needs to update the cache, and raise an InstanceNotFound exception on failure.\n\nWe only can do that, if search_vm_ref_by_identifier can made to behave the same. That\u0027s likely possible, but also a larger scope.","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf8290e959edad270f8eb27e34ec905bb6a30dcf","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"                                     _get_object_for_optionvalue)"},{"line_number":1116,"context_line":""},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"class VmMoRefProxy(session.StableMoRefProxy):"},{"line_number":1119,"context_line":"    def __init__(self, ref, uuid):"},{"line_number":1120,"context_line":"        super(VmMoRefProxy, self).__init__(ref)"},{"line_number":1121,"context_line":"        self._uuid \u003d uuid"}],"source_content_type":"text/x-python","patch_set":9,"id":"e300b455_50ac8fb5","line":1118,"range":{"start_line":1118,"start_character":27,"end_line":1118,"end_character":43},"in_reply_to":"c51d4dc4_fcaefe50","updated":"2022-04-29 09:04:55.000000000","message":"Thanks for the explanation. I see the reason why you separated these two cases. It is good as is.","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"}],"nova/virt/vmwareapi/volumeops.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbc3935216e18a61d4cb680d2bbe7c3da3f19b3b","unresolved":true,"context_lines":[{"line_number":26,"context_line":"from nova import exception"},{"line_number":27,"context_line":"from nova.i18n import _"},{"line_number":28,"context_line":"from nova.virt.vmwareapi import constants"},{"line_number":29,"context_line":"from nova.virt.vmwareapi.session import StableMoRefProxy"},{"line_number":30,"context_line":"from nova.virt.vmwareapi import vm_util"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d nova.conf.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"5c29784e_b6979725","line":29,"updated":"2022-04-05 10:13:04.000000000","message":"Don\u0027t import objects","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e07997e0de2371b5d5406fd0afb735a77a47d209","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import exception"},{"line_number":27,"context_line":"from nova.i18n import _"},{"line_number":28,"context_line":"from nova.virt.vmwareapi import constants"},{"line_number":29,"context_line":"from nova.virt.vmwareapi.session import StableMoRefProxy"},{"line_number":30,"context_line":"from nova.virt.vmwareapi import vm_util"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d nova.conf.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"eabb045a_ad297e5a","line":29,"in_reply_to":"5c29784e_b6979725","updated":"2022-04-06 11:32:59.000000000","message":"Done","commit_id":"5486d2cb904234c56698e0f003854100273172ad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8c97c63e7b9e8de527884e25942da13467460ef0","unresolved":true,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class VolumeMoRefProxy(session.StableMoRefProxy):"},{"line_number":37,"context_line":"    def __init__(self, connection_info_data):"},{"line_number":38,"context_line":"        volume_ref_value \u003d connection_info_data.get(\u0027volume\u0027)"},{"line_number":39,"context_line":"        ref \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"20479476_c89de57a","line":36,"range":{"start_line":36,"start_character":31,"end_line":36,"end_character":47},"updated":"2022-04-25 13:01:48.000000000","message":"ditto. Can this be a MoRef with a closure base on what is currently in fetch_moref?","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf8290e959edad270f8eb27e34ec905bb6a30dcf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class VolumeMoRefProxy(session.StableMoRefProxy):"},{"line_number":37,"context_line":"    def __init__(self, connection_info_data):"},{"line_number":38,"context_line":"        volume_ref_value \u003d connection_info_data.get(\u0027volume\u0027)"},{"line_number":39,"context_line":"        ref \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"3b549248_348ca473","line":36,"range":{"start_line":36,"start_character":31,"end_line":36,"end_character":47},"in_reply_to":"20479476_c89de57a","updated":"2022-04-29 09:04:55.000000000","message":"Ack","commit_id":"d69c4db6f53585004a3ab9fd3726ee87abf95988"}]}
