)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"96b576d56dd0fe6888ecdf177dbcc31f1c48eb2f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[microversions] Add api_version property to resources"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The same nova resource can be different in defferent microversions(i.e"},{"line_number":10,"context_line":"there are different methods, properties and etc), so it will be nice"},{"line_number":11,"context_line":"to know what microversion was used to obtain the resource. Also it will"},{"line_number":12,"context_line":"allow to use api_versions.wraps decorator for resources and reduce"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_15ca994f","line":9,"updated":"2016-04-22 13:16:10.000000000","message":"small typo, different","commit_id":"e13acafe28dc7957b2be5765af0a40f9c832cd31"}],"novaclient/api_versions.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"f9101295817fbb74ed1478f5c30f2345bc99bf42","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        substitution.arguments \u003d func.arguments"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # NOTE(andreykurilin): The way to obtain function\u0027s name in Python 2"},{"line_number":399,"context_line":"        #   bases on traceback(see _get_function_name for details). Since the"},{"line_number":400,"context_line":"        #   right versioned method method is used in several places, one object"},{"line_number":401,"context_line":"        #   can have different names. Let\u0027s generate name of function one time"},{"line_number":402,"context_line":"        #   and use __id__ property in all other places."}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_3e468021","line":399,"updated":"2016-06-10 16:28:56.000000000","message":"Can we use the Python 3 variant when we\u0027re operating under Python 3?  Or does that provide a different result?","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b76087c16963f4726dacb9f2e7afecda8473bcf","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        substitution.arguments \u003d func.arguments"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # NOTE(andreykurilin): The way to obtain function\u0027s name in Python 2"},{"line_number":399,"context_line":"        #   bases on traceback(see _get_function_name for details). Since the"},{"line_number":400,"context_line":"        #   right versioned method method is used in several places, one object"},{"line_number":401,"context_line":"        #   can have different names. Let\u0027s generate name of function one time"},{"line_number":402,"context_line":"        #   and use __id__ property in all other places."}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_6aeddeb6","line":399,"in_reply_to":"7aa08908_3e468021","updated":"2016-06-10 17:50:17.000000000","message":"One of the previous version had `if python \u003d\u003d 3` check, but I decided keys of \"_SUBSTITUTION\" dictionary equal in different python version. I know that it is inner stuff, so it is not critical for me and I can return if...else block if you want.","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a01978ac511a00e0ef37974f7796cd9b588a6e2a","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        substitution.arguments \u003d func.arguments"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # NOTE(andreykurilin): The way to obtain function\u0027s name in Python 2"},{"line_number":399,"context_line":"        #   bases on traceback(see _get_function_name for details). Since the"},{"line_number":400,"context_line":"        #   right versioned method method is used in several places, one object"},{"line_number":401,"context_line":"        #   can have different names. Let\u0027s generate name of function one time"},{"line_number":402,"context_line":"        #   and use __id__ property in all other places."}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_05124b62","line":399,"in_reply_to":"7aa08908_6aeddeb6","updated":"2016-06-10 18:15:29.000000000","message":"I was just looking to see if there was any particular advantage.  Too bad Python 2 doesn\u0027t have anything like __qualname__—that\u0027d probably be a good addition to six, now that I think about it…assuming there\u0027s any way to compute it, of course ;)","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"}],"novaclient/tests/unit/test_api_versions.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7e8938925d5a25e2746c8cffadf3ab6a1a496dd4","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        self.assertIn(expected_name, api_versions._SUBSTITUTIONS)"},{"line_number":331,"context_line":"        self.assertEqual(expected_name, fake_func.__id__)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"class DiscoverVersionTestCase(utils.TestCase):"},{"line_number":335,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_0668ce86","line":332,"updated":"2016-06-15 18:10:16.000000000","message":"test_generate_function_name and test_generate_method_name appear to be identical. We only need one of them, right?","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"07d373e1815a17fdb823d0559fd050b8f8742e1d","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        self.assertIn(expected_name, api_versions._SUBSTITUTIONS)"},{"line_number":331,"context_line":"        self.assertEqual(expected_name, fake_func.__id__)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"class DiscoverVersionTestCase(utils.TestCase):"},{"line_number":335,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_886cc4d1","line":332,"in_reply_to":"7aa08908_0668ce86","updated":"2016-06-15 21:27:06.000000000","message":"lol. I started writing unit test, make a pause and later write totally equal test))","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"}],"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"f9101295817fbb74ed1478f5c30f2345bc99bf42","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"                           {\u0027os-migrateLive\u0027: {\u0027host\u0027: \u0027hostname\u0027,"},{"line_number":1145,"context_line":"                                               \u0027block_migration\u0027: \u0027auto\u0027}})"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"    def test_live_migrate_server_with_disk_over_commit(self):"},{"line_number":1148,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1149,"context_line":"        self.assertRaises(ValueError, s.live_migrate, \u0027hostname\u0027,"},{"line_number":1150,"context_line":"                          \u0027auto\u0027, \u0027True\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_de2bfc31","side":"PARENT","line":1147,"updated":"2016-06-10 16:28:56.000000000","message":"Where did this test go?","commit_id":"2253d022667c8bb3ef61b535d0ce90e433882ebc"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0b76087c16963f4726dacb9f2e7afecda8473bcf","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"                           {\u0027os-migrateLive\u0027: {\u0027host\u0027: \u0027hostname\u0027,"},{"line_number":1145,"context_line":"                                               \u0027block_migration\u0027: \u0027auto\u0027}})"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"    def test_live_migrate_server_with_disk_over_commit(self):"},{"line_number":1148,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1149,"context_line":"        self.assertRaises(ValueError, s.live_migrate, \u0027hostname\u0027,"},{"line_number":1150,"context_line":"                          \u0027auto\u0027, \u0027True\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_2a68f620","side":"PARENT","line":1147,"in_reply_to":"7aa08908_de2bfc31","updated":"2016-06-10 17:50:17.000000000","message":"it started fail, so I removed it. lol\n\nreal reason: previously we had one method for several microversion and difference in argument was handled by if blocks with ValueError","commit_id":"2253d022667c8bb3ef61b535d0ce90e433882ebc"}],"novaclient/v2/servers.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7e8938925d5a25e2746c8cffadf3ab6a1a496dd4","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        Migrates a running instance to a new machine."},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        :param host: destination host name."},{"line_number":421,"context_line":"        :param block_migration: if True, do block_migration, the default"},{"line_number":422,"context_line":"                                value is None which is mapped to False"},{"line_number":423,"context_line":"        :param disk_over_commit: if True, allow disk over commit, the default"},{"line_number":424,"context_line":"                                 value is None which is mapped to False"},{"line_number":425,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_06c44e5d","line":422,"range":{"start_line":421,"start_character":61,"end_line":422,"end_character":45},"updated":"2016-06-15 18:10:16.000000000","message":"This seems no longer true since you changed the default to False on L415? Either the default or docstring needs updating","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7e8938925d5a25e2746c8cffadf3ab6a1a496dd4","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                                 value is None which is mapped to False"},{"line_number":425,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":"        if block_migration is None:"},{"line_number":428,"context_line":"            block_migration \u003d False"},{"line_number":429,"context_line":"        if disk_over_commit is None:"},{"line_number":430,"context_line":"            disk_over_commit \u003d False"},{"line_number":431,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_c6cc0664","line":428,"range":{"start_line":427,"start_character":9,"end_line":428,"end_character":35},"updated":"2016-06-15 18:10:16.000000000","message":"Related to above, is this still useful?","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"49b94f27415e1d6973978c2fc76d639f8134b0aa","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                                 value is None which is mapped to False"},{"line_number":425,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":"        if block_migration is None:"},{"line_number":428,"context_line":"            block_migration \u003d False"},{"line_number":429,"context_line":"        if disk_over_commit is None:"},{"line_number":430,"context_line":"            disk_over_commit \u003d False"},{"line_number":431,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_f9f0c493","line":428,"range":{"start_line":427,"start_character":9,"end_line":428,"end_character":35},"in_reply_to":"7aa08908_796cd4d0","updated":"2016-06-15 19:34:14.000000000","message":"Okay. In that case, I would correct the docstring above to say \"the default value is False and None will be mapped to False\" or similar","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1dc08cdf58120b8103069737a99b04d27fdb441d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                                 value is None which is mapped to False"},{"line_number":425,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":"        if block_migration is None:"},{"line_number":428,"context_line":"            block_migration \u003d False"},{"line_number":429,"context_line":"        if disk_over_commit is None:"},{"line_number":430,"context_line":"            disk_over_commit \u003d False"},{"line_number":431,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_796cd4d0","line":428,"range":{"start_line":427,"start_character":9,"end_line":428,"end_character":35},"in_reply_to":"7aa08908_c6cc0664","updated":"2016-06-15 19:24:33.000000000","message":"I left it to support backward compatibility - previous docstring said that None is mapped to False. I not sure that someone use it, but I made a decision to continue support such behavior.","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"07d373e1815a17fdb823d0559fd050b8f8742e1d","unresolved":false,"context_lines":[{"line_number":424,"context_line":"                                 value is None which is mapped to False"},{"line_number":425,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":426,"context_line":"        \"\"\""},{"line_number":427,"context_line":"        if block_migration is None:"},{"line_number":428,"context_line":"            block_migration \u003d False"},{"line_number":429,"context_line":"        if disk_over_commit is None:"},{"line_number":430,"context_line":"            disk_over_commit \u003d False"},{"line_number":431,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_2829508a","line":428,"range":{"start_line":427,"start_character":9,"end_line":428,"end_character":35},"in_reply_to":"7aa08908_f9f0c493","updated":"2016-06-15 21:27:06.000000000","message":"Done","commit_id":"2ca709b51c0d5ac4882302291e3306a89376a2ac"}]}
