)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19eaac575a4502f336acf062df9c8b397428565","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"* Set correct exception type to catch"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]https://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/client/session.py#L173"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially-Implements: blueprint goal-python35"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da4df55a_1fc89373","line":15,"updated":"2016-12-28 22:22:33.000000000","message":"Do you mean this?\n\nhttps://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/vm_utils.py#L800","commit_id":"5a80735ef1af1c788cb56af41a4767edf15b9f75"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"b930152c217d506a37a097c0db9081e13bda1440","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"* Set correct exception type to catch"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]https://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/client/session.py#L173"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially-Implements: blueprint goal-python35"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5201f7_974974d3","line":15,"in_reply_to":"da4df55a_1fc89373","updated":"2017-01-03 10:36:56.000000000","message":"I mean \"and code makes sure product_version must be a tuple of 3 integers[1],\"","commit_id":"5a80735ef1af1c788cb56af41a4767edf15b9f75"}],"nova/tests/unit/virt/xenapi/test_vm_utils.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d393146b7822b1509b0e8fd5c82143018f50dd82","unresolved":false,"context_lines":[{"line_number":2433,"context_line":"            self._test_is_resize(\"XenServer\", \"asdf\")"},{"line_number":2434,"context_line":"        else:"},{"line_number":2435,"context_line":"            self.assertRaises(TypeError, self._test_is_resize,"},{"line_number":2436,"context_line":"                              \"XenServer\", \"asdf\")"},{"line_number":2437,"context_line":""},{"line_number":2438,"context_line":""},{"line_number":2439,"context_line":"class VMInfoTests(VMUtilsTestBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_b8dc5ee5","line":2436,"updated":"2016-11-25 10:59:36.000000000","message":"Surely we want to raise or not raise the same for py2 vs py3?","commit_id":"c923a8eca7ee98ee869a17431e7338c8f9a6624f"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"21ef7fce1a410d1a03f83b500d7f19cc3470f940","unresolved":false,"context_lines":[{"line_number":2433,"context_line":"            self._test_is_resize(\"XenServer\", \"asdf\")"},{"line_number":2434,"context_line":"        else:"},{"line_number":2435,"context_line":"            self.assertRaises(TypeError, self._test_is_resize,"},{"line_number":2436,"context_line":"                              \"XenServer\", \"asdf\")"},{"line_number":2437,"context_line":""},{"line_number":2438,"context_line":""},{"line_number":2439,"context_line":"class VMInfoTests(VMUtilsTestBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_ed019739","line":2436,"in_reply_to":"5a74a57a_b8dc5ee5","updated":"2016-11-26 07:11:51.000000000","message":"sure , will update in next patchset.","commit_id":"c923a8eca7ee98ee869a17431e7338c8f9a6624f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19eaac575a4502f336acf062df9c8b397428565","unresolved":false,"context_lines":[{"line_number":2417,"context_line":"    def test_random_brand(self):"},{"line_number":2418,"context_line":"        self._test_is_resize(\"asfd\", (1, 1, 0))"},{"line_number":2419,"context_line":""},{"line_number":2420,"context_line":"    def test_default(self):"},{"line_number":2421,"context_line":"        self._test_is_resize(None, None)"},{"line_number":2422,"context_line":""},{"line_number":2423,"context_line":"    def test_empty(self):"},{"line_number":2424,"context_line":"        self._test_is_resize(\"\", \"\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"da4df55a_dfea8bda","side":"PARENT","line":2421,"range":{"start_line":2420,"start_character":4,"end_line":2421,"end_character":40},"updated":"2016-12-28 22:22:33.000000000","message":"I\u0027m not sure why this test is removed, it would hit this condition:\n\nhttps://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/vm_utils.py#L798\n\nAnd evaluate to False so we won\u0027t this this:\n\nhttps://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/vm_utils.py#L800\n\nI guess the point you\u0027re making is if we were using a real XenAPISession object, during init we\u0027d hit https://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/client/session.py#L173 which would fail if version is None or \"\". But since this test is mocking out the session, we don\u0027t hit that.\n\nStill, this test isn\u0027t testing the XenAPISession code, it\u0027s testing the vm_utils logic, and None/\"\" seem OK to continue testing that with python 3, unless I\u0027m just missing something.","commit_id":"d0df4333a8f6435132ec7bb35f879895f7f3c787"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"b930152c217d506a37a097c0db9081e13bda1440","unresolved":false,"context_lines":[{"line_number":2417,"context_line":"    def test_random_brand(self):"},{"line_number":2418,"context_line":"        self._test_is_resize(\"asfd\", (1, 1, 0))"},{"line_number":2419,"context_line":""},{"line_number":2420,"context_line":"    def test_default(self):"},{"line_number":2421,"context_line":"        self._test_is_resize(None, None)"},{"line_number":2422,"context_line":""},{"line_number":2423,"context_line":"    def test_empty(self):"},{"line_number":2424,"context_line":"        self._test_is_resize(\"\", \"\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_d7bbfc73","side":"PARENT","line":2421,"range":{"start_line":2420,"start_character":4,"end_line":2421,"end_character":40},"in_reply_to":"da4df55a_dfea8bda","updated":"2017-01-03 10:36:56.000000000","message":"yeah, In a real XenAPISession, code will ensure session.product_version as tuple.\nwe can keep this","commit_id":"d0df4333a8f6435132ec7bb35f879895f7f3c787"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a19eaac575a4502f336acf062df9c8b397428565","unresolved":false,"context_lines":[{"line_number":2420,"context_line":"    def test_default(self):"},{"line_number":2421,"context_line":"        self._test_is_resize(None, None)"},{"line_number":2422,"context_line":""},{"line_number":2423,"context_line":"    def test_empty(self):"},{"line_number":2424,"context_line":"        self._test_is_resize(\"\", \"\")"},{"line_number":2425,"context_line":""},{"line_number":2426,"context_line":"    def test_bad_version(self):"},{"line_number":2427,"context_line":"        self._test_is_resize(\"XenServer\", \"asdf\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"da4df55a_dfd1ab24","side":"PARENT","line":2424,"range":{"start_line":2423,"start_character":4,"end_line":2424,"end_character":36},"updated":"2016-12-28 22:22:33.000000000","message":"same here","commit_id":"d0df4333a8f6435132ec7bb35f879895f7f3c787"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"182484d2692200cad5021f9e865d803081288fde","unresolved":false,"context_lines":[{"line_number":2423,"context_line":"    def test_empty(self):"},{"line_number":2424,"context_line":"        self._test_is_resize(\"\", \"\")"},{"line_number":2425,"context_line":""},{"line_number":2426,"context_line":"    def test_bad_version(self):"},{"line_number":2427,"context_line":"        self._test_is_resize(\"XenServer\", \"asdf\")"},{"line_number":2428,"context_line":""},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"class VMInfoTests(VMUtilsTestBase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_4662f217","side":"PARENT","line":2427,"range":{"start_line":2426,"start_character":0,"end_line":2427,"end_character":49},"updated":"2017-01-10 00:59:39.000000000","message":"i think ok to delete this as version should be tuple of int","commit_id":"939000938b378b4c02737adf0fe84a935ec6f96c"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ce56f6014f874c91e0e8b50bb0ca5463d9accd6f","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"            if (xcp and not r1_2_or_above) or (xenserver and not r6_or_above):"},{"line_number":808,"context_line":"                return \u0027VDI.resize_online\u0027"},{"line_number":809,"context_line":"        except TypeError:"},{"line_number":810,"context_line":"            # NOTE(gcb): We can\u0027t compare non-number with number on Python 3."},{"line_number":811,"context_line":"            # To maintain Python 3 compatibility, just ignore TypeError."},{"line_number":812,"context_line":"            pass"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    return \u0027VDI.resize\u0027"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_6b50fcd4","line":812,"range":{"start_line":809,"start_character":0,"end_line":812,"end_character":16},"updated":"2016-11-28 08:14:11.000000000","message":"but now it end up returning \u0027VDI.resize\u0027 for all version in py3. Not sure if we can ignore  backwards compatibility.\n\nincompatible format comparison is my most favorite fix in py3.\n\nif product_version is being prepared with oslo.utils-\u003econvert_version_to_tuple then its all int [1] but that cannot be guaranteed.\nSo how about this (might be ugly but..)- \n            r1_2_or_above \u003d (int((version[0]) \u003d\u003d 1 and int(version[1]) \u003e 1) or\n                             int(version[0]) \u003e 1)\n\nand catch valueError and pass so that it match the current behavior(return \u0027VDI.resize\u0027)\n\n..1 https://github.com/openstack/oslo.utils/blob/32cc400608cc71859eaaad3fbaea526a801224b9/oslo_utils/versionutils.py#L88","commit_id":"97cb6d584b1418b7d5df72ff13b4d590d4f3a5f3"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"691df645f350822ae95a7013747aa172faab1f5c","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"            if (xcp and not r1_2_or_above) or (xenserver and not r6_or_above):"},{"line_number":808,"context_line":"                return \u0027VDI.resize_online\u0027"},{"line_number":809,"context_line":"        except TypeError:"},{"line_number":810,"context_line":"            # NOTE(gcb): We can\u0027t compare non-number with number on Python 3."},{"line_number":811,"context_line":"            # To maintain Python 3 compatibility, just ignore TypeError."},{"line_number":812,"context_line":"            pass"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    return \u0027VDI.resize\u0027"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_efd15824","line":812,"range":{"start_line":809,"start_character":0,"end_line":812,"end_character":16},"in_reply_to":"5a74a57a_6b50fcd4","updated":"2016-11-28 17:28:15.000000000","message":"I\u0027m not sure if we need raise exception if the product_version is not valid or just ignore that.\n\nNeed more discussion","commit_id":"97cb6d584b1418b7d5df72ff13b4d590d4f3a5f3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ada10a3bac07e862598356c7939e615080036b9b","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"            if (xcp and not r1_2_or_above) or (xenserver and not r6_or_above):"},{"line_number":808,"context_line":"                return \u0027VDI.resize_online\u0027"},{"line_number":809,"context_line":"        except TypeError:"},{"line_number":810,"context_line":"            # NOTE(gcb): We can\u0027t compare non-number with number on Python 3."},{"line_number":811,"context_line":"            # To maintain Python 3 compatibility, just ignore TypeError."},{"line_number":812,"context_line":"            pass"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    return \u0027VDI.resize\u0027"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_c8a38db0","line":812,"range":{"start_line":809,"start_character":0,"end_line":812,"end_character":16},"in_reply_to":"5a74a57a_74fb4a79","updated":"2016-11-29 12:17:24.000000000","message":"session.product_version comes from:\nhttps://github.com/openstack/nova/blob/3304115b73ace6b3336c4f80f70de4661d3b1ef6/nova/virt/xenapi/client/session.py#L173\n\nSo it should always be a tuple of ints.\n\nIf thats not what the tests are doing, the tests should be fixed.","commit_id":"97cb6d584b1418b7d5df72ff13b4d590d4f3a5f3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"11e530417ba348d96d2f1a3bb97af181aecc25cb","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"            if (xcp and not r1_2_or_above) or (xenserver and not r6_or_above):"},{"line_number":808,"context_line":"                return \u0027VDI.resize_online\u0027"},{"line_number":809,"context_line":"        except TypeError:"},{"line_number":810,"context_line":"            # NOTE(gcb): We can\u0027t compare non-number with number on Python 3."},{"line_number":811,"context_line":"            # To maintain Python 3 compatibility, just ignore TypeError."},{"line_number":812,"context_line":"            pass"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    return \u0027VDI.resize\u0027"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_983c07e4","line":812,"range":{"start_line":809,"start_character":0,"end_line":812,"end_character":16},"in_reply_to":"5a74a57a_c8a38db0","updated":"2016-12-03 10:25:00.000000000","message":"Yea, its always int tuple. SO let\u0027s fix the tests not this utils.","commit_id":"97cb6d584b1418b7d5df72ff13b4d590d4f3a5f3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3835aec52acb274c6edebf1cdf43cc505838f2dc","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"            if (xcp and not r1_2_or_above) or (xenserver and not r6_or_above):"},{"line_number":808,"context_line":"                return \u0027VDI.resize_online\u0027"},{"line_number":809,"context_line":"        except TypeError:"},{"line_number":810,"context_line":"            # NOTE(gcb): We can\u0027t compare non-number with number on Python 3."},{"line_number":811,"context_line":"            # To maintain Python 3 compatibility, just ignore TypeError."},{"line_number":812,"context_line":"            pass"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    return \u0027VDI.resize\u0027"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_74fb4a79","line":812,"range":{"start_line":809,"start_character":0,"end_line":812,"end_character":16},"in_reply_to":"5a74a57a_efd15824","updated":"2016-11-29 05:20:48.000000000","message":"yea, we should not raise exception here, as i mentioned catch valueError and pass which means return \u0027VDI.resize\u0027.\n\nthat way we keep the current behavior of this function.","commit_id":"97cb6d584b1418b7d5df72ff13b4d590d4f3a5f3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f06902d2e1a298b12717a8e9bd8976ea3832dde5","unresolved":false,"context_lines":[{"line_number":796,"context_line":"    # To maintain backwards compatibility. All recent versions"},{"line_number":797,"context_line":"    # should use VDI.resize"},{"line_number":798,"context_line":"    if version and brand:"},{"line_number":799,"context_line":"        # NOTE(gcb) Make sure version always be a tuple of 3 integers"},{"line_number":800,"context_line":"        if (not isinstance(version, tuple) or len(version) !\u003d 3 or"},{"line_number":801,"context_line":"        any([not isinstance(version[i], six.integer_types)"},{"line_number":802,"context_line":"             for i in range(3)])):"},{"line_number":803,"context_line":"            raise ValueError("},{"line_number":804,"context_line":"                _(\"product_version must be a tuple of 3 integers\"))"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"        xcp \u003d brand \u003d\u003d \u0027XCP\u0027"},{"line_number":807,"context_line":"        r1_2_or_above \u003d ((version[0] \u003d\u003d 1 and version[1] \u003e 1) or"},{"line_number":808,"context_line":"                         version[0] \u003e 1)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        xenserver \u003d brand \u003d\u003d \u0027XenServer\u0027"},{"line_number":811,"context_line":"        r6_or_above \u003d version[0] \u003e 5"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a71b18c_9b2161a2","line":808,"range":{"start_line":799,"start_character":0,"end_line":808,"end_character":40},"updated":"2016-12-03 10:31:27.000000000","message":"I will suggest not to change this under py3 updates. product_version will be translated to tuple by oslo usually where every part is ebing converted to int.[1]\n\nSo let\u0027s not out this check. Anyways this function just care about first 2 part of version.\n\n..1 - https://github.com/openstack/oslo.utils/blob/32cc400608cc71859eaaad3fbaea526a801224b9/oslo_utils/versionutils.py#L88","commit_id":"c03befa95e9e6a412cdcafa9393eaab489a2ede9"}]}
