)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ede86a8907eb1c3f1fee3bedd20fcdbb969e29f1","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the previous version of PowerMax OS generations of snapVx were"},{"line_number":10,"context_line":"used instead of unique snap ids which were just introduced."},{"line_number":11,"context_line":"A generation can be returned as a 0 integer which equates to None"},{"line_number":12,"context_line":"in python.  The fix is to convert the int to a string if it is"},{"line_number":13,"context_line":"returned from REST as an int."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5b660776190f3026296d6d3237bd3b0d609f769f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f6d30528_3710f224","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":10},"updated":"2021-07-19 20:29:13.000000000","message":"This isn\u0027t quite correct:\n\n  Python 3.6.10 (default, May 18 2020, 17:00:57) \n  \u003e\u003e\u003e 0 is None\n  False\n  \u003e\u003e\u003e bool(0)\n  False\n  \u003e\u003e\u003e bool(\u00270\u0027)\n  True\n  \u003e\u003e\u003e bool(None)\n  False\n  \u003e\u003e\u003e 0 \u003d\u003d None\n  False\n  \u003e\u003e\u003e 0 is None\n  False\n  \u003e\u003e\u003e 0 \u003d\u003d False\n  True\n  \u003e\u003e\u003e None \u003d\u003d False\n  False\n\nSo 0 is False when used in a boolean context, whereas \u00270\u0027 is True.  What I\u0027m getting at is if you\u0027re fixing this because you\u0027re seeing a \"\u0027NoneType\u0027 object has no attribute \u0027xxx\u0027\" exception, there may be something else going on.","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the previous version of PowerMax OS generations of snapVx were"},{"line_number":10,"context_line":"used instead of unique snap ids which were just introduced."},{"line_number":11,"context_line":"A generation can be returned as a 0 integer which equates to None"},{"line_number":12,"context_line":"in python.  The fix is to convert the int to a string if it is"},{"line_number":13,"context_line":"returned from REST as an int."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5b660776190f3026296d6d3237bd3b0d609f769f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"b7f08572_3dd58a18","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":10},"in_reply_to":"68ce92a4_09d3ea98","updated":"2021-10-12 11:16:28.000000000","message":"Done","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"202acccbaaf3b1bd3cb5a56b71dd4af2715fa133","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the previous version of PowerMax OS generations of snapVx were"},{"line_number":10,"context_line":"used instead of unique snap ids which were just introduced."},{"line_number":11,"context_line":"A generation can be returned as a 0 integer which equates to None"},{"line_number":12,"context_line":"in python.  The fix is to convert the int to a string if it is"},{"line_number":13,"context_line":"returned from REST as an int."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5b660776190f3026296d6d3237bd3b0d609f769f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"68ce92a4_09d3ea98","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":10},"in_reply_to":"f6d30528_3710f224","updated":"2021-07-20 08:57:20.000000000","message":"Yes of course, it should be False, not None.  Thank you","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":32171,"name":"Girish Chilukuri","email":"girish.chilukuri@ibm.com","username":"GirishChilukuri"},"change_message_id":"9b61c8bc1e245de3ab1c87a410b44faa231b5916","unresolved":true,"context_lines":[{"line_number":11,"context_line":"A generation can be returned as a 0 integer which equates to False"},{"line_number":12,"context_line":"in python.  The fix is to convert the int to a string if it is"},{"line_number":13,"context_line":"returned from REST as an int."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5b660776190f3026296d6d3237bd3b0d609f769f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"783db7ca_9f24e349","line":14,"updated":"2021-07-28 06:54:27.000000000","message":"For fixes Bug ID should be added in commit message also.","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"005e8671806f1b460830af5758bd15d42768e246","unresolved":false,"context_lines":[{"line_number":11,"context_line":"A generation can be returned as a 0 integer which equates to False"},{"line_number":12,"context_line":"in python.  The fix is to convert the int to a string if it is"},{"line_number":13,"context_line":"returned from REST as an int."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5b660776190f3026296d6d3237bd3b0d609f769f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"db5ff26e_811f108d","line":14,"in_reply_to":"783db7ca_9f24e349","updated":"2021-10-12 11:17:11.000000000","message":"Done","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"457787082da64a4c778aa9b31931268e3a31e2f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"49ff2265_f41dfc6f","updated":"2021-10-13 17:48:16.000000000","message":"Looks like a nice simple fix.  Should be good.","commit_id":"ee1b5e2b756f49a384d348555e9611526c0c1217"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"73b58a3a6c2ebfb3a26ade618795c2603d0e45b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ba6ba0b8_f1962b14","updated":"2021-10-12 20:49:17.000000000","message":"My concerns have been addressed and PowerMax CI is green.","commit_id":"ee1b5e2b756f49a384d348555e9611526c0c1217"}],"cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_rest.py":[{"author":{"_account_id":32171,"name":"Girish Chilukuri","email":"girish.chilukuri@ibm.com","username":"GirishChilukuri"},"change_message_id":"9b61c8bc1e245de3ab1c87a410b44faa231b5916","unresolved":true,"context_lines":[{"line_number":2442,"context_line":"        self.assertEqual(self.data.snap_id, snap_id)"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":"    @mock.patch.object(rest.PowerMaxRest, \u0027get_volume_snaps\u0027,"},{"line_number":2445,"context_line":"                       side_effect\u003d[[{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2446,"context_line":"                                      \u0027generation\u0027: 0}],"},{"line_number":2447,"context_line":"                                    [{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2448,"context_line":"                                      \u0027generation\u0027: \u00270\u0027}]])"}],"source_content_type":"text/x-python","patch_set":2,"id":"563f0fb9_4db31634","line":2445,"updated":"2021-07-28 06:54:27.000000000","message":"in side_effect both return values are same. and from line number 2451 iterated for 2 times, getting the snap_id and verify the sanp_id for same return value. \nVerify with different snap_name and generation.","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"926946781a0a75b2e014983f6d0bec7d63eb9aea","unresolved":true,"context_lines":[{"line_number":2442,"context_line":"        self.assertEqual(self.data.snap_id, snap_id)"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":"    @mock.patch.object(rest.PowerMaxRest, \u0027get_volume_snaps\u0027,"},{"line_number":2445,"context_line":"                       side_effect\u003d[[{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2446,"context_line":"                                      \u0027generation\u0027: 0}],"},{"line_number":2447,"context_line":"                                    [{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2448,"context_line":"                                      \u0027generation\u0027: \u00270\u0027}]])"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8de14de_e242658a","line":2445,"in_reply_to":"563f0fb9_4db31634","updated":"2021-07-30 14:07:42.000000000","message":"Thanks Girish, as I am testing 0 integer and \u00270\u0027 string, I will leave them as is, but I will change the snap_name for clarity.  Hope this is ok","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":2442,"context_line":"        self.assertEqual(self.data.snap_id, snap_id)"},{"line_number":2443,"context_line":""},{"line_number":2444,"context_line":"    @mock.patch.object(rest.PowerMaxRest, \u0027get_volume_snaps\u0027,"},{"line_number":2445,"context_line":"                       side_effect\u003d[[{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2446,"context_line":"                                      \u0027generation\u0027: 0}],"},{"line_number":2447,"context_line":"                                    [{\u0027snap_name\u0027: \u0027snap_name\u0027,"},{"line_number":2448,"context_line":"                                      \u0027generation\u0027: \u00270\u0027}]])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fb76ba1d_ee612962","line":2445,"in_reply_to":"e8de14de_e242658a","updated":"2021-10-12 11:16:28.000000000","message":"Ack","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"}],"cinder/volume/drivers/dell_emc/powermax/rest.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ede86a8907eb1c3f1fee3bedd20fcdbb969e29f1","unresolved":true,"context_lines":[{"line_number":3365,"context_line":"        :param device_id: the source device ID"},{"line_number":3366,"context_line":"        :param snap_name: the user supplied snapVX name"},{"line_number":3367,"context_line":"        :raises: VolumeBackendAPIException"},{"line_number":3368,"context_line":"        :returns: snap_id -- str"},{"line_number":3369,"context_line":"        \"\"\""},{"line_number":3370,"context_line":"        snapshots \u003d self.get_volume_snaps(array, device_id, snap_name)"},{"line_number":3371,"context_line":"        if not snapshots:"}],"source_content_type":"text/x-python","patch_set":1,"id":"04cea954_5d9a99a6","line":3368,"range":{"start_line":3368,"start_character":8,"end_line":3368,"end_character":32},"updated":"2021-07-19 20:29:13.000000000","message":"This alone is a good reason to make your change, namely that in some cases this function was returning an int, whereas it\u0027s documented to return a string.","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":3365,"context_line":"        :param device_id: the source device ID"},{"line_number":3366,"context_line":"        :param snap_name: the user supplied snapVX name"},{"line_number":3367,"context_line":"        :raises: VolumeBackendAPIException"},{"line_number":3368,"context_line":"        :returns: snap_id -- str"},{"line_number":3369,"context_line":"        \"\"\""},{"line_number":3370,"context_line":"        snapshots \u003d self.get_volume_snaps(array, device_id, snap_name)"},{"line_number":3371,"context_line":"        if not snapshots:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1dde96b9_6ba4fbb8","line":3368,"range":{"start_line":3368,"start_character":8,"end_line":3368,"end_character":32},"in_reply_to":"04cea954_5d9a99a6","updated":"2021-10-12 11:16:28.000000000","message":"Done","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"}],"cinder/volume/drivers/dell_emc/powermax/utils.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ede86a8907eb1c3f1fee3bedd20fcdbb969e29f1","unresolved":true,"context_lines":[{"line_number":2090,"context_line":"        :param in_value: the input, either str or int"},{"line_number":2091,"context_line":"        :returns: str"},{"line_number":2092,"context_line":"        \"\"\""},{"line_number":2093,"context_line":"        return str(in_value) if isinstance(in_value, int) else in_value"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f4eba83_243c4b02","line":2093,"updated":"2021-07-19 20:29:13.000000000","message":"maybe:\n\n  return in_value if isinstance(in_value, str) else str(in_value)\n\nthat way you\u0027re guaranteed to get a string back no matter what in_value is.  But I guess in that case you can just call str() instead of this function in rest.py, since str(\u0027whatever\u0027) \u003d\u003d \u0027whatever\u0027.  If you\u0027re absolutely certain that the only possibilities of data type for \u0027generation\u0027 is int or str, then simply using str() instead of this function is probably the way to go.  If it\u0027s possible that you might get something weird, then keep this function, but add some logging (or raise an exception, whatever makes more sense) if in_value isn\u0027t a str or int.","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"202acccbaaf3b1bd3cb5a56b71dd4af2715fa133","unresolved":true,"context_lines":[{"line_number":2090,"context_line":"        :param in_value: the input, either str or int"},{"line_number":2091,"context_line":"        :returns: str"},{"line_number":2092,"context_line":"        \"\"\""},{"line_number":2093,"context_line":"        return str(in_value) if isinstance(in_value, int) else in_value"}],"source_content_type":"text/x-python","patch_set":1,"id":"be05a038_80c737a8","line":2093,"in_reply_to":"7f4eba83_243c4b02","updated":"2021-07-20 08:57:20.000000000","message":"Sure.  I will change this","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":2090,"context_line":"        :param in_value: the input, either str or int"},{"line_number":2091,"context_line":"        :returns: str"},{"line_number":2092,"context_line":"        \"\"\""},{"line_number":2093,"context_line":"        return str(in_value) if isinstance(in_value, int) else in_value"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a954d06_36f088b3","line":2093,"in_reply_to":"be05a038_80c737a8","updated":"2021-10-12 11:16:28.000000000","message":"Done","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"}],"releasenotes/notes/powermax_legacy_generation_fix-09e437f955cd9d70.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ede86a8907eb1c3f1fee3bedd20fcdbb969e29f1","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerMax driver:"},{"line_number":5,"context_line":"    Legacy PowerMax OS fix to convert an int to a string if the generation"},{"line_number":6,"context_line":"    of snapVX is returned as an int from REST so that a 0  does not equate"},{"line_number":7,"context_line":"    to None in python."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"d29f7ece_b7e9292d","line":7,"range":{"start_line":6,"start_character":46,"end_line":7,"end_character":21},"updated":"2021-07-19 20:29:13.000000000","message":"see my comment in the commit message","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"202acccbaaf3b1bd3cb5a56b71dd4af2715fa133","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerMax driver:"},{"line_number":5,"context_line":"    Legacy PowerMax OS fix to convert an int to a string if the generation"},{"line_number":6,"context_line":"    of snapVX is returned as an int from REST so that a 0  does not equate"},{"line_number":7,"context_line":"    to None in python."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"d56ab418_f33d155d","line":7,"range":{"start_line":6,"start_character":46,"end_line":7,"end_character":21},"in_reply_to":"d29f7ece_b7e9292d","updated":"2021-07-20 08:57:20.000000000","message":"I will change this to False.","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerMax driver:"},{"line_number":5,"context_line":"    Legacy PowerMax OS fix to convert an int to a string if the generation"},{"line_number":6,"context_line":"    of snapVX is returned as an int from REST so that a 0  does not equate"},{"line_number":7,"context_line":"    to None in python."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"a94025bc_a08a09dc","line":7,"range":{"start_line":6,"start_character":46,"end_line":7,"end_character":21},"in_reply_to":"d56ab418_f33d155d","updated":"2021-10-12 11:16:28.000000000","message":"Done","commit_id":"61d5fdcbdded8e30ba4a38d3dc0da8cac91300e4"},{"author":{"_account_id":32171,"name":"Girish Chilukuri","email":"girish.chilukuri@ibm.com","username":"GirishChilukuri"},"change_message_id":"9b61c8bc1e245de3ab1c87a410b44faa231b5916","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerMax driver:"},{"line_number":5,"context_line":"    Legacy PowerMax OS fix to convert an int to a string if the generation"},{"line_number":6,"context_line":"    of snapVX is returned as an int from REST so that a 0  does not equate"},{"line_number":7,"context_line":"    to False in python."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"6a4538b1_1fc92dbe","line":4,"updated":"2021-07-28 06:54:27.000000000","message":"For fixes Bug ID should be added in release notes.","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"},{"author":{"_account_id":12670,"name":"Helen Walsh","email":"helen.walsh@emc.com","username":"walshh2"},"change_message_id":"f5a6995d06452e588a771b1add865f68d9f25bf0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerMax driver:"},{"line_number":5,"context_line":"    Legacy PowerMax OS fix to convert an int to a string if the generation"},{"line_number":6,"context_line":"    of snapVX is returned as an int from REST so that a 0  does not equate"},{"line_number":7,"context_line":"    to False in python."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"df4150f8_d08274fb","line":4,"in_reply_to":"6a4538b1_1fc92dbe","updated":"2021-10-12 11:16:28.000000000","message":"Done","commit_id":"68443b1bbec612bb8df904efd76cca9c6ffc1d93"}]}
