)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"bf2a43797e89444bb54c859cfcedfa9cbaf9963c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jeegn Chen \u003cjeegn.chen@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-01 21:15:49 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"More error handling on VNX migration failure."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a LUN migration session is stopped or faulted after started,"},{"line_number":10,"context_line":"current implementation of VNX Cinder Driver only wait for timeout"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_c25f220d","line":7,"updated":"2015-04-02 08:22:37.000000000","message":"Remove the stop \u0027.\u0027 in the end.\nIf this is for EMC only, please add EMC in front.","commit_id":"9a3595642779c1c2e577eacd0c0ab710912ed2ed"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"b2ef563dafc381bafb4960bdc88e62d4bae9f907","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jeegn Chen \u003cjeegn.chen@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-01 21:15:49 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"More error handling on VNX migration failure."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a LUN migration session is stopped or faulted after started,"},{"line_number":10,"context_line":"current implementation of VNX Cinder Driver only wait for timeout"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_c55f2c0d","line":7,"in_reply_to":"baa041b7_c25f220d","updated":"2015-04-02 08:55:04.000000000","message":"Done","commit_id":"9a3595642779c1c2e577eacd0c0ab710912ed2ed"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7f13f85e1b6594c8cbef658af631e3558f249c3b","unresolved":false,"context_lines":[{"line_number":870,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dreason)"},{"line_number":871,"context_line":"                if (\"TRANSITIONING\" in current_state or"},{"line_number":872,"context_line":"                        \"MIGRATING\" in current_state):"},{"line_number":873,"context_line":"                    LOG.debug(\"Migration of LUN %s in process %s %%.\","},{"line_number":874,"context_line":"                              src_id, percentage_complete)"},{"line_number":875,"context_line":"            else:"},{"line_number":876,"context_line":"                if re.search(self.CLI_RESP_PATTERN_LUN_NOT_MIGRATING, out):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_92ed2eba","line":873,"updated":"2015-03-02 16:22:57.000000000","message":"Should use {} here.","commit_id":"0ccd2109bf1482a2b12f460a76afbc82757da42c"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"c2c6ec325e7eee312d5228907158497f92e676e4","unresolved":false,"context_lines":[{"line_number":870,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dreason)"},{"line_number":871,"context_line":"                if (\"TRANSITIONING\" in current_state or"},{"line_number":872,"context_line":"                        \"MIGRATING\" in current_state):"},{"line_number":873,"context_line":"                    LOG.debug(\"Migration of LUN %s in process %s %%.\","},{"line_number":874,"context_line":"                              src_id, percentage_complete)"},{"line_number":875,"context_line":"            else:"},{"line_number":876,"context_line":"                if re.search(self.CLI_RESP_PATTERN_LUN_NOT_MIGRATING, out):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_295b22f7","line":873,"in_reply_to":"ba7be1f8_92ed2eba","updated":"2015-03-03 02:02:03.000000000","message":"Done","commit_id":"0ccd2109bf1482a2b12f460a76afbc82757da42c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7f13f85e1b6594c8cbef658af631e3558f249c3b","unresolved":false,"context_lines":[{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    # Cancel migration in case where status is faulted or stopped"},{"line_number":917,"context_line":"    def migration_cancel(self, src_id):"},{"line_number":918,"context_line":"        LOG.info(_LI(\"Cancelling Migration from LUN %s\"), src_id)"},{"line_number":919,"context_line":"        cmd_migrate_cancel \u003d (\u0027migrate\u0027, \u0027-cancel\u0027, \u0027-source\u0027, src_id,"},{"line_number":920,"context_line":"                              \u0027-o\u0027)"},{"line_number":921,"context_line":"        out, rc \u003d self.command_execute(*cmd_migrate_cancel)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_d215e69b","line":918,"updated":"2015-03-02 16:22:57.000000000","message":"suggest \u0027.\u0027 here.","commit_id":"0ccd2109bf1482a2b12f460a76afbc82757da42c"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"c2c6ec325e7eee312d5228907158497f92e676e4","unresolved":false,"context_lines":[{"line_number":915,"context_line":""},{"line_number":916,"context_line":"    # Cancel migration in case where status is faulted or stopped"},{"line_number":917,"context_line":"    def migration_cancel(self, src_id):"},{"line_number":918,"context_line":"        LOG.info(_LI(\"Cancelling Migration from LUN %s\"), src_id)"},{"line_number":919,"context_line":"        cmd_migrate_cancel \u003d (\u0027migrate\u0027, \u0027-cancel\u0027, \u0027-source\u0027, src_id,"},{"line_number":920,"context_line":"                              \u0027-o\u0027)"},{"line_number":921,"context_line":"        out, rc \u003d self.command_execute(*cmd_migrate_cancel)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_4973f67f","line":918,"in_reply_to":"ba7be1f8_d215e69b","updated":"2015-03-03 02:02:03.000000000","message":"Done","commit_id":"0ccd2109bf1482a2b12f460a76afbc82757da42c"},{"author":{"_account_id":11751,"name":"Marcus V R Nascimento","email":"marcusvrn@gmail.com","username":"marcusvrn"},"change_message_id":"ff8aa49a68fb83bc05b9075ff2d02e869d62c2bf","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    CLI_RESP_PATTERN_SMP_NOT_ATTACHED \u003d (\u0027The specified Snapshot mount point \u0027"},{"line_number":257,"context_line":"                                         \u0027is not currently attached.\u0027)"},{"line_number":258,"context_line":"    CLI_RESP_PATTERN_SG_NAME_IN_USE \u003d \"Storage Group name already in use\""},{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_0931e5ec","line":259,"updated":"2015-03-03 14:07:34.000000000","message":"Starting with lowercase","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4327e08796d4f4b5cd29fd478f650fbea0a9d4d9","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    CLI_RESP_PATTERN_SMP_NOT_ATTACHED \u003d (\u0027The specified Snapshot mount point \u0027"},{"line_number":257,"context_line":"                                         \u0027is not currently attached.\u0027)"},{"line_number":258,"context_line":"    CLI_RESP_PATTERN_SG_NAME_IN_USE \u003d \"Storage Group name already in use\""},{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_09cb9b53","line":259,"in_reply_to":"ba7be1f8_0931e5ec","updated":"2015-03-03 16:34:44.000000000","message":"Based on the name, this is a pattern to match in the CLI output, so I believe that is expected and needed.","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"82fb5c2354b503ab1e16192204628171b0b8f2e1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    CLI_RESP_PATTERN_SMP_NOT_ATTACHED \u003d (\u0027The specified Snapshot mount point \u0027"},{"line_number":257,"context_line":"                                         \u0027is not currently attached.\u0027)"},{"line_number":258,"context_line":"    CLI_RESP_PATTERN_SG_NAME_IN_USE \u003d \"Storage Group name already in use\""},{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_db184c20","line":259,"in_reply_to":"ba7be1f8_0931e5ec","updated":"2015-03-04 02:57:55.000000000","message":"It is part of CLI response for the driver to match instead of a complete message. Since the match is case sensitive, we need to keep use the exactly lower case here.","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"82fb5c2354b503ab1e16192204628171b0b8f2e1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    CLI_RESP_PATTERN_SMP_NOT_ATTACHED \u003d (\u0027The specified Snapshot mount point \u0027"},{"line_number":257,"context_line":"                                         \u0027is not currently attached.\u0027)"},{"line_number":258,"context_line":"    CLI_RESP_PATTERN_SG_NAME_IN_USE \u003d \"Storage Group name already in use\""},{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_bbe4780d","line":259,"in_reply_to":"ba7be1f8_09cb9b53","updated":"2015-03-04 02:57:55.000000000","message":"Yes. The lower case is necessary for the logic correctness.","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":11751,"name":"Marcus V R Nascimento","email":"marcusvrn@gmail.com","username":"marcusvrn"},"change_message_id":"ff8aa49a68fb83bc05b9075ff2d02e869d62c2bf","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def __init__(self, configuration):"},{"line_number":265,"context_line":"        configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_2ea4ef49","line":262,"updated":"2015-03-03 14:07:34.000000000","message":"Is there some reason to use sometimes single quotes and sometimes double quotes?","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"82fb5c2354b503ab1e16192204628171b0b8f2e1","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_1 \u003d \"contained in a Storage Group\""},{"line_number":260,"context_line":"    CLI_RESP_PATTERN_LUN_IN_SG_2 \u003d \"Host LUN/LUN mapping still exists\""},{"line_number":261,"context_line":"    CLI_RESP_PATTERN_LUN_NOT_MIGRATING \u003d (\"The specified source LUN \""},{"line_number":262,"context_line":"                                          \"is not currently migrating\")"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    def __init__(self, configuration):"},{"line_number":265,"context_line":"        configuration.append_config_values(san.san_opts)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_1b074483","line":262,"in_reply_to":"ba7be1f8_2ea4ef49","updated":"2015-03-04 02:57:55.000000000","message":"Not specific reason. Since single quotation mark and double quotation mark are equivalent here, I did not think too much here.\n\nAnyway, it should be better to make the use consistent here.","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c544fad590d9702c039ea32bb6a951862382a120","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                    self._raise_cli_error(cmd_migrate_list, rc, out)"},{"line_number":866,"context_line":"                if (\"FAULTED\" in current_state or"},{"line_number":867,"context_line":"                        \"STOPPED\" in current_state):"},{"line_number":868,"context_line":"                    reason \u003d _(\"Migration of LUN %s has been Stopped or\""},{"line_number":869,"context_line":"                               \" Faulted.\") % src_id"},{"line_number":870,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dreason)"},{"line_number":871,"context_line":"                if (\"TRANSITIONING\" in current_state or"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_f4c0ec2c","line":868,"updated":"2015-03-03 11:52:44.000000000","message":"Decapitalize \"Stopped\" and \"Faulted\"?","commit_id":"752360772d05364ec0c5916a3985f1465390d266"},{"author":{"_account_id":9924,"name":"Jeegn Chen","email":"Jeegn.Chen@emc.com","username":"jeegn-chen"},"change_message_id":"82fb5c2354b503ab1e16192204628171b0b8f2e1","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                    self._raise_cli_error(cmd_migrate_list, rc, out)"},{"line_number":866,"context_line":"                if (\"FAULTED\" in current_state or"},{"line_number":867,"context_line":"                        \"STOPPED\" in current_state):"},{"line_number":868,"context_line":"                    reason \u003d _(\"Migration of LUN %s has been Stopped or\""},{"line_number":869,"context_line":"                               \" Faulted.\") % src_id"},{"line_number":870,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dreason)"},{"line_number":871,"context_line":"                if (\"TRANSITIONING\" in current_state or"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_db476cba","line":868,"in_reply_to":"ba7be1f8_f4c0ec2c","updated":"2015-03-04 02:57:55.000000000","message":"Done","commit_id":"752360772d05364ec0c5916a3985f1465390d266"}]}
