)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b20e5145e697925400c109e948932b0e48a1e257","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Address 0x712d8e0e error in VNX Cinder Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In original implementation, 0x712d8e0e error is not considered."},{"line_number":10,"context_line":"Thus, some snapshot creation and volume extending operations may when"},{"line_number":11,"context_line":"the system is in a transition state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch is to add some waiting and retry logic when 0x712d8e0e error"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_03365603","line":10,"updated":"2015-05-14 13:27:56.000000000","message":"/may when/may fail when/ ?","commit_id":"0c88fea0d7c9c2076e636b3e63200f535d82e6ed"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"d893ea7303075fbb2d0e952cde7a5428e8fc4d09","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Address 0x712d8e0e error in VNX Cinder Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In original implementation, 0x712d8e0e error is not considered."},{"line_number":10,"context_line":"Thus, some snapshot creation and volume extending operations may when"},{"line_number":11,"context_line":"the system is in a transition state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch is to add some waiting and retry logic when 0x712d8e0e error"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_3c748266","line":10,"in_reply_to":"7a016987_03365603","updated":"2015-05-18 02:02:31.000000000","message":"Done","commit_id":"0c88fea0d7c9c2076e636b3e63200f535d82e6ed"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"d5f5f75e0df9b060f853c9fc02cd4b6d4ad1a3a9","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"        data \u003d self.get_lun_by_name(name, poll\u003dFalse)"},{"line_number":1127,"context_line":"        return data[self.LUN_OPERATION.key]"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"    def check_lun_ready_for_ops(self, name, poll\u003dFalse):"},{"line_number":1130,"context_line":"        data \u003d self.get_lun_current_ops_state(name)"},{"line_number":1131,"context_line":"        return data \u003d\u003d \u0027None\u0027"},{"line_number":1132,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9af37de9_161d6873","line":1129,"updated":"2015-05-11 12:27:59.000000000","message":"Unused parameter \u0027poll\u0027","commit_id":"706ea555387ee7058d3ff688544f4b3c4f2c589c"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"f3f55c701fc55c2199ce718c932ca2ae19ae2df0","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"        data \u003d self.get_lun_by_name(name, poll\u003dFalse)"},{"line_number":1127,"context_line":"        return data[self.LUN_OPERATION.key]"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"    def check_lun_ready_for_ops(self, name, poll\u003dFalse):"},{"line_number":1130,"context_line":"        data \u003d self.get_lun_current_ops_state(name)"},{"line_number":1131,"context_line":"        return data \u003d\u003d \u0027None\u0027"},{"line_number":1132,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_cdbba20d","line":1129,"in_reply_to":"9af37de9_161d6873","updated":"2015-05-13 08:28:07.000000000","message":"Done","commit_id":"706ea555387ee7058d3ff688544f4b3c4f2c589c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"d5f5f75e0df9b060f853c9fc02cd4b6d4ad1a3a9","unresolved":false,"context_lines":[{"line_number":1845,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":1846,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":1847,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1848,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":1849,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for extension: \""},{"line_number":1850,"context_line":"                                    \"%(out)s\"),"},{"line_number":1851,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9af37de9_0a0e5c34","line":1848,"updated":"2015-05-11 12:27:59.000000000","message":"Any chance of a comment about what \u00270x712d8e0e\u0027 means? It helps anybody who is trying the understand this driver later","commit_id":"706ea555387ee7058d3ff688544f4b3c4f2c589c"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"f3f55c701fc55c2199ce718c932ca2ae19ae2df0","unresolved":false,"context_lines":[{"line_number":1845,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":1846,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":1847,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1848,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":1849,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for extension: \""},{"line_number":1850,"context_line":"                                    \"%(out)s\"),"},{"line_number":1851,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_ad374eaf","line":1848,"in_reply_to":"9af37de9_0a0e5c34","updated":"2015-05-13 08:28:07.000000000","message":"Done","commit_id":"706ea555387ee7058d3ff688544f4b3c4f2c589c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"c7b52ae8e299afd3f6a1e3d9b8dac01a2de3de70","unresolved":false,"context_lines":[{"line_number":1845,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":1846,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":1847,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1848,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":1849,"context_line":"                    # The error means the operation cannot be performed"},{"line_number":1850,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":1851,"context_line":"                    # so that the LUN may get out of the transitioning"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_98916155","line":1848,"updated":"2015-05-13 10:59:18.000000000","message":"The comment helps, but better yet would be to define a constant, say LUN_PREP_ERROR, with this value and put the comment there.","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"130d89ea7a28523a6df1f07c1658957e9890a2a0","unresolved":false,"context_lines":[{"line_number":1845,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":1846,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":1847,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":1848,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":1849,"context_line":"                    # The error means the operation cannot be performed"},{"line_number":1850,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":1851,"context_line":"                    # so that the LUN may get out of the transitioning"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_3af2a99b","line":1848,"in_reply_to":"9a0c5dc1_98916155","updated":"2015-05-14 03:43:15.000000000","message":"Done","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"4dc2a7eb9b891a4f13ff3d0b41e8d208eebd1f48","unresolved":false,"context_lines":[{"line_number":1850,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":1851,"context_line":"                    # so that the LUN may get out of the transitioning"},{"line_number":1852,"context_line":"                    # state."},{"line_number":1853,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for extension: \""},{"line_number":1854,"context_line":"                                    \"%(out)s\"),"},{"line_number":1855,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"},{"line_number":1856,"context_line":"                    self._client._wait_for_a_condition("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_0c452e16","line":1853,"updated":"2015-05-13 14:22:41.000000000","message":"That looks incorrect - shouldn\u0027t it be\n\n%(name)s","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"130d89ea7a28523a6df1f07c1658957e9890a2a0","unresolved":false,"context_lines":[{"line_number":1850,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":1851,"context_line":"                    # so that the LUN may get out of the transitioning"},{"line_number":1852,"context_line":"                    # state."},{"line_number":1853,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for extension: \""},{"line_number":1854,"context_line":"                                    \"%(out)s\"),"},{"line_number":1855,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"},{"line_number":1856,"context_line":"                    self._client._wait_for_a_condition("}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_da083594","line":1853,"in_reply_to":"9a0c5dc1_0c452e16","updated":"2015-05-14 03:43:15.000000000","message":"Done","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"c7b52ae8e299afd3f6a1e3d9b8dac01a2de3de70","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":2134,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":2135,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":2136,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":2137,"context_line":"                    # The error means the operation cannot be performed"},{"line_number":2138,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":2139,"context_line":"                    # so that the LUN may get out of the transitioning"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_78f22dd4","line":2136,"updated":"2015-05-13 10:59:18.000000000","message":"ditto","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"130d89ea7a28523a6df1f07c1658957e9890a2a0","unresolved":false,"context_lines":[{"line_number":2133,"context_line":"        except exception.EMCVnxCLICmdError as ex:"},{"line_number":2134,"context_line":"            with excutils.save_and_reraise_exception(ex) as ctxt:"},{"line_number":2135,"context_line":"                out \u003d \"\\n\".join(ex.kwargs[\"out\"])"},{"line_number":2136,"context_line":"                if (out.find(\u00270x712d8e0e\u0027) \u003e\u003d 0):"},{"line_number":2137,"context_line":"                    # The error means the operation cannot be performed"},{"line_number":2138,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":2139,"context_line":"                    # so that the LUN may get out of the transitioning"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_1aefedb1","line":2136,"in_reply_to":"9a0c5dc1_78f22dd4","updated":"2015-05-14 03:43:15.000000000","message":"Done","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"4dc2a7eb9b891a4f13ff3d0b41e8d208eebd1f48","unresolved":false,"context_lines":[{"line_number":2138,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":2139,"context_line":"                    # so that the LUN may get out of the transitioning"},{"line_number":2140,"context_line":"                    # state."},{"line_number":2141,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for snapshot: \""},{"line_number":2142,"context_line":"                                    \"%(out)s\"),"},{"line_number":2143,"context_line":"                                {\u0027name\u0027: volume_name, \u0027out\u0027: out})"},{"line_number":2144,"context_line":"                    self._client._wait_for_a_condition("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_ef83f9ca","line":2141,"updated":"2015-05-13 14:22:41.000000000","message":"That looks incorrect - shouldn\u0027t it be\n\n%(name)s","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"130d89ea7a28523a6df1f07c1658957e9890a2a0","unresolved":false,"context_lines":[{"line_number":2138,"context_line":"                    # because the LUN is \u0027Preparing\u0027. Wait for a while"},{"line_number":2139,"context_line":"                    # so that the LUN may get out of the transitioning"},{"line_number":2140,"context_line":"                    # state."},{"line_number":2141,"context_line":"                    LOG.warning(_LW(\"LUN %(name) is not ready for snapshot: \""},{"line_number":2142,"context_line":"                                    \"%(out)s\"),"},{"line_number":2143,"context_line":"                                {\u0027name\u0027: volume_name, \u0027out\u0027: out})"},{"line_number":2144,"context_line":"                    self._client._wait_for_a_condition("}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_bafd7970","line":2141,"in_reply_to":"9a0c5dc1_ef83f9ca","updated":"2015-05-14 03:43:15.000000000","message":"Done","commit_id":"812b557bafeec034d62aa7452b6db90503cb94d9"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"968b927b4f8addb28bd38467b948616eb571a16b","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"                    LOG.warning(_LW(\"LUN %(name)s is not ready for extension: \""},{"line_number":1856,"context_line":"                                    \"%(out)s\"),"},{"line_number":1857,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"},{"line_number":1858,"context_line":"                    self._client._wait_for_a_condition("},{"line_number":1859,"context_line":"                        is_lun_ready_for_ops, interval\u003dINTERVAL_5_SEC)"},{"line_number":1860,"context_line":"                    self._client.expand_lun_and_wait(volume[\u0027name\u0027], new_size)"},{"line_number":1861,"context_line":"                    ctxt.reraise \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_bf54b2fe","line":1858,"updated":"2015-05-20 03:45:44.000000000","message":"Calling internal method _wait_for_a_condition directly?","commit_id":"667af5b474a4e0a45df2930b51bccdee2166390a"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"55da2f3a70d2ff1da9e93bf521c709a4d6feb373","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"                    LOG.warning(_LW(\"LUN %(name)s is not ready for extension: \""},{"line_number":1856,"context_line":"                                    \"%(out)s\"),"},{"line_number":1857,"context_line":"                                {\u0027name\u0027: volume[\u0027name\u0027], \u0027out\u0027: out})"},{"line_number":1858,"context_line":"                    self._client._wait_for_a_condition("},{"line_number":1859,"context_line":"                        is_lun_ready_for_ops, interval\u003dINTERVAL_5_SEC)"},{"line_number":1860,"context_line":"                    self._client.expand_lun_and_wait(volume[\u0027name\u0027], new_size)"},{"line_number":1861,"context_line":"                    ctxt.reraise \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_63ec43f3","line":1858,"in_reply_to":"7a016987_bf54b2fe","updated":"2015-05-21 12:00:19.000000000","message":"Done","commit_id":"667af5b474a4e0a45df2930b51bccdee2166390a"}]}
