)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"08e1dab73647801c01415b7912d681e48852979a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add a force flag to the update_consistencygroup function that allows"},{"line_number":13,"context_line":"removal of volumes in any state."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":16,"context_line":"fixes: bug 1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_a4c0932b","line":14,"updated":"2016-01-28 15:08:36.000000000","message":"Might also want to mention here the two lists you are creating to address the issues. Thanks!","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"25a41eecb62a6251ca1107636b93b3d80a8b4216","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Add a force flag to the update_consistencygroup function that allows"},{"line_number":13,"context_line":"removal of volumes in any state."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":16,"context_line":"fixes: bug 1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_81016d3a","line":14,"in_reply_to":"7a5de9d1_a4c0932b","updated":"2016-01-30 16:35:08.000000000","message":"Thanks Kendall. Done","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"08e1dab73647801c01415b7912d681e48852979a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"removal of volumes in any state."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":16,"context_line":"fixes: bug 1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_84a0f7a0","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"updated":"2016-01-28 15:08:36.000000000","message":"Closes-Bug: #1519377","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"25a41eecb62a6251ca1107636b93b3d80a8b4216","unresolved":false,"context_lines":[{"line_number":13,"context_line":"removal of volumes in any state."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":16,"context_line":"fixes: bug 1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a5de9d1_41f7f558","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"in_reply_to":"7a5de9d1_84a0f7a0","updated":"2016-01-30 16:35:08.000000000","message":"Thanks. Fixed","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d359d84b3801c495a5d3d1f244881a4ead9b2fea","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":"2. Add a force flag to the update_consistencygroup function that allows"},{"line_number":14,"context_line":"removal of volumes in any state."},{"line_number":15,"context_line":"3. The force flag is passed to the driver for additional manipulation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dae33548_1b65291d","line":14,"updated":"2016-02-17 18:15:37.000000000","message":"We should not add a force flag to update_consistencygroup.  Only volumes in valid states can be removed.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"6d8bd89e06931817b7246a0ff8a713a83aac350f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":"2. Add a force flag to the update_consistencygroup function that allows"},{"line_number":14,"context_line":"removal of volumes in any state."},{"line_number":15,"context_line":"3. The force flag is passed to the driver for additional manipulation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dae33548_7e88a3c5","line":14,"in_reply_to":"dae33548_1b65291d","updated":"2016-02-17 18:42:01.000000000","message":"Thanks Xing. \nActually I thought the force flag was what you meant by \"changes also need to be made in the consistency group API\" in the launchpad. So what did you changes were you referring to?\nThis comment refers to all the rest of the comments, including Michal\u0027s comments (if the flag is removed).","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c658d1af3b2fe75c412506d885a7f3c418d00d1f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":"2. Add a force flag to the update_consistencygroup function that allows"},{"line_number":14,"context_line":"removal of volumes in any state."},{"line_number":15,"context_line":"3. The force flag is passed to the driver for additional manipulation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dae33548_392283a3","line":14,"in_reply_to":"dae33548_7e88a3c5","updated":"2016-02-18 14:01:25.000000000","message":"Sorry for the confusion.   I meant to add valid statuses and check it in API.  You already made that change.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c47760b9d72779dd9565c5ab0867643956bc2ef5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before calling update_consistencygroup, a validation is done if volumes"},{"line_number":10,"context_line":"are in valid states for action."},{"line_number":11,"context_line":"Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bae84128_a6322ef0","line":11,"updated":"2016-02-23 13:01:00.000000000","message":"Add a blank line above?","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c47760b9d72779dd9565c5ab0867643956bc2ef5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":15,"context_line":"Closes-Bug: #1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bae84128_c68e522d","line":14,"range":{"start_line":14,"start_character":6,"end_line":14,"end_character":7},"updated":"2016-02-23 13:01:00.000000000","message":"I think we should add APIImpact here.","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"65f57ec0a8fd302b4e618b1c94c2f416a69bddc1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Divide the states allowed for adding and removing volumes from a CG,"},{"line_number":12,"context_line":"and allow volume removal in states error and error_deleting."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6f5fa8e9af67e17ab49e7f3423d4469640df790c"},{"line_number":15,"context_line":"Closes-Bug: #1519377"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bae84128_33601b01","line":14,"range":{"start_line":14,"start_character":6,"end_line":14,"end_character":7},"in_reply_to":"bae84128_c68e522d","updated":"2016-02-23 13:42:08.000000000","message":"According to [1] it is okay to make a change that:\n\n Fixing a bug so that a request which resulted in an error response before is now successful.\n\nWe don\u0027t need to mark small functional bugfixes with APIImpact.\n\n[1] http://specs.openstack.org/openstack/api-wg/guidelines/evaluating_api_changes.html#guidance","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"}],"cinder/consistencygroup/api.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d359d84b3801c495a5d3d1f244881a4ead9b2fea","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        self.volume_rpcapi.delete_consistencygroup(context, group)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def update(self, context, group, name, description,"},{"line_number":497,"context_line":"               add_volumes, remove_volumes, force\u003dFalse):"},{"line_number":498,"context_line":"        \"\"\"Update consistency group.\"\"\""},{"line_number":499,"context_line":"        if group.status !\u003d c_fields.ConsistencyGroupStatus.AVAILABLE:"},{"line_number":500,"context_line":"            msg \u003d _(\"Consistency group status must be available, \""}],"source_content_type":"text/x-python","patch_set":7,"id":"dae33548_5b58518a","line":497,"updated":"2016-02-17 18:15:37.000000000","message":"I don\u0027t think a \"force\" flag should be added to the update CG API.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d359d84b3801c495a5d3d1f244881a4ead9b2fea","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        for volume in volumes:"},{"line_number":582,"context_line":"            if volume[\u0027id\u0027] in remove_volumes_list:"},{"line_number":583,"context_line":"                if (volume[\u0027status\u0027] not in VALID_REMOVE_VOL_FROM_CG_STATUS and"},{"line_number":584,"context_line":"                        not force):"},{"line_number":585,"context_line":"                    msg \u003d (_(\"Cannot remove volume %(volume_id)s from \""},{"line_number":586,"context_line":"                             \"consistency group %(group_id)s because volume \""},{"line_number":587,"context_line":"                             \"is in an invalid state: %(status)s. Valid \""}],"source_content_type":"text/x-python","patch_set":7,"id":"dae33548_7bda75e9","line":584,"updated":"2016-02-17 18:15:37.000000000","message":"We should only allow volumes in valid states to be removed.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c20d502eeebf0cfd8f736e7a54a7319efc9771f7","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":48,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE,"},{"line_number":49,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR,"},{"line_number":50,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR_DELETING)"},{"line_number":51,"context_line":"VALID_ADD_VOL_TO_CG_STATUS \u003d ("},{"line_number":52,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":53,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def wrap_check_policy(func):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_3345c5b2","line":53,"range":{"start_line":46,"start_character":0,"end_line":53,"end_character":43},"updated":"2016-02-23 10:34:09.000000000","message":"Interesting fact - these are compared to the volume and not CG statuses, so these shouldn\u0027t be represented by these enums. Can you change them to literals (we don\u0027t have enum for volume statuses).\n\nMoreover I don\u0027t think that there should be IN_USE as CG state, but that is material for a different commit…","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"1e6c8e1474fdcde87a03e8004db6c35ab76d1cd6","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":48,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE,"},{"line_number":49,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR,"},{"line_number":50,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR_DELETING)"},{"line_number":51,"context_line":"VALID_ADD_VOL_TO_CG_STATUS \u003d ("},{"line_number":52,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":53,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def wrap_check_policy(func):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_ac533716","line":53,"range":{"start_line":46,"start_character":0,"end_line":53,"end_character":43},"in_reply_to":"bae84128_3345c5b2","updated":"2016-02-23 10:54:04.000000000","message":"Thank you Michal.\n\nTechnically you are so right, but on the other hand using literals is more error prone. \nHow about a separate commit to deal with volume enumeration and for the time being staying with the CG enums?","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ae687ea5ee0f11b949842a9ee87e411bca2d8bfe","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":48,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE,"},{"line_number":49,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR,"},{"line_number":50,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR_DELETING)"},{"line_number":51,"context_line":"VALID_ADD_VOL_TO_CG_STATUS \u003d ("},{"line_number":52,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":53,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def wrap_check_policy(func):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_80ed52b9","line":53,"range":{"start_line":46,"start_character":0,"end_line":53,"end_character":43},"in_reply_to":"bae84128_75672eb7","updated":"2016-02-23 12:40:55.000000000","message":"Done","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"49b80e02ac6028f22b2c16f92ea1e10c188b3d50","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":48,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE,"},{"line_number":49,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR,"},{"line_number":50,"context_line":"    c_fields.ConsistencyGroupStatus.ERROR_DELETING)"},{"line_number":51,"context_line":"VALID_ADD_VOL_TO_CG_STATUS \u003d ("},{"line_number":52,"context_line":"    c_fields.ConsistencyGroupStatus.AVAILABLE,"},{"line_number":53,"context_line":"    c_fields.ConsistencyGroupStatus.IN_USE)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def wrap_check_policy(func):"}],"source_content_type":"text/x-python","patch_set":10,"id":"bae84128_75672eb7","line":53,"range":{"start_line":46,"start_character":0,"end_line":53,"end_character":43},"in_reply_to":"bae84128_ac533716","updated":"2016-02-23 11:53:54.000000000","message":"More error prone than using *incorrect* enum values? I don\u0027t think that, as for example IN_USE shouldn\u0027t be in ConsistencyGroupStatus in the first place.\n\nA new commit doing all the volume status changes will be huge and I think will take a lot of time to get merged. I can definitely agree to fix that in a simple follow up commit that removes IN_USE from ConsistencyGroupStatus.","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c47760b9d72779dd9565c5ab0867643956bc2ef5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    \u0027available\u0027,"},{"line_number":48,"context_line":"    \u0027in-use\u0027,"},{"line_number":49,"context_line":"    \u0027error\u0027,"},{"line_number":50,"context_line":"    \u0027error_deleting\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bae84128_464a4227","line":47,"range":{"start_line":47,"start_character":5,"end_line":47,"end_character":14},"updated":"2016-02-23 13:01:00.000000000","message":"I think here we should use constants like\n\n```\nc_fields.ConsistencyGroupStatus.AVAILABLE,\nc_fields.ConsistencyGroupStatus.IN_USE,\nc_fields.ConsistencyGroupStatus.ERROR,\nc_fields.ConsistencyGroupStatus.ERROR_DELETING\n```","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"65f57ec0a8fd302b4e618b1c94c2f416a69bddc1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    \u0027available\u0027,"},{"line_number":48,"context_line":"    \u0027in-use\u0027,"},{"line_number":49,"context_line":"    \u0027error\u0027,"},{"line_number":50,"context_line":"    \u0027error_deleting\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bae84128_562f8d87","line":47,"range":{"start_line":47,"start_character":5,"end_line":47,"end_character":14},"in_reply_to":"bae84128_464a4227","updated":"2016-02-23 13:42:08.000000000","message":"See my comments on previous patchset. We\u0027re comparing these tuples with *volume* statuses. Using ConsistencyGroupStatus enum is a serious issue here, as this enum does not describe *volume* statuses.","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"245c34a300553725134ffbc5d5529edfab01ff6a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":"CGQUOTAS \u003d quota.CGQUOTAS"},{"line_number":46,"context_line":"VALID_REMOVE_VOL_FROM_CG_STATUS \u003d ("},{"line_number":47,"context_line":"    \u0027available\u0027,"},{"line_number":48,"context_line":"    \u0027in-use\u0027,"},{"line_number":49,"context_line":"    \u0027error\u0027,"},{"line_number":50,"context_line":"    \u0027error_deleting\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bae84128_29b26e94","line":47,"range":{"start_line":47,"start_character":5,"end_line":47,"end_character":14},"in_reply_to":"bae84128_562f8d87","updated":"2016-02-23 14:14:04.000000000","message":"Dulko is right, VolumeStatus hasn\u0027t been made into a versioned object enum yet so these should stay as they are being \u0027available\u0027, \u0027in-use\u0027, etc.","commit_id":"aaa77138cc736ec57138eabfc4320427bde6c827"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c20d502eeebf0cfd8f736e7a54a7319efc9771f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"bae84128_d3b45983","updated":"2016-02-23 10:34:09.000000000","message":"I don\u0027t think we actually need to change these tests - these test the manager, not the API.","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"ae687ea5ee0f11b949842a9ee87e411bca2d8bfe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"bae84128_606f6e2b","in_reply_to":"bae84128_d3b45983","updated":"2016-02-23 12:40:55.000000000","message":"Done","commit_id":"01dddc3ec4eb6d1104407c96c91ab95c60c269bb"}],"cinder/volume/driver.py":[{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"22f84d074b033033e94c5cd95bb562aec2945e46","unresolved":false,"context_lines":[{"line_number":2219,"context_line":"        :param group: the dictionary of the consistency group to be updated."},{"line_number":2220,"context_line":"        :param add_volumes: a list of volume dictionaries to be added."},{"line_number":2221,"context_line":"        :param remove_volumes: a list of volume dictionaries to be removed."},{"line_number":2222,"context_line":"        :param force: a list of volume dictionaries to be removed."},{"line_number":2223,"context_line":"        :returns: model_update, add_volumes_update, remove_volumes_update"},{"line_number":2224,"context_line":""},{"line_number":2225,"context_line":"        model_update is a dictionary that the driver wants the manager"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_d6cec582","line":2222,"range":{"start_line":2222,"start_character":32,"end_line":2222,"end_character":38},"updated":"2016-01-28 03:13:37.000000000","message":"What\u0027s the exact type for force? If it\u0027s a list of volume dictionaries as the explanation, the default value should not be \"False\", if it\u0027s a Boolean, then you should rewrite the comment here.","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"25a41eecb62a6251ca1107636b93b3d80a8b4216","unresolved":false,"context_lines":[{"line_number":2219,"context_line":"        :param group: the dictionary of the consistency group to be updated."},{"line_number":2220,"context_line":"        :param add_volumes: a list of volume dictionaries to be added."},{"line_number":2221,"context_line":"        :param remove_volumes: a list of volume dictionaries to be removed."},{"line_number":2222,"context_line":"        :param force: a list of volume dictionaries to be removed."},{"line_number":2223,"context_line":"        :returns: model_update, add_volumes_update, remove_volumes_update"},{"line_number":2224,"context_line":""},{"line_number":2225,"context_line":"        model_update is a dictionary that the driver wants the manager"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_84e6b7b2","line":2222,"range":{"start_line":2222,"start_character":32,"end_line":2222,"end_character":38},"in_reply_to":"7a5de9d1_d6cec582","updated":"2016-01-30 16:35:08.000000000","message":"Thank you XinXiaohui. Fixed comment","commit_id":"9aad983cc5758e971d85e980a05e53043fc9c1fa"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d359d84b3801c495a5d3d1f244881a4ead9b2fea","unresolved":false,"context_lines":[{"line_number":2216,"context_line":""},{"line_number":2217,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":2218,"context_line":"                                add_volumes\u003dNone, remove_volumes\u003dNone,"},{"line_number":2219,"context_line":"                                force\u003dFalse):"},{"line_number":2220,"context_line":"        \"\"\"Updates a consistency group."},{"line_number":2221,"context_line":""},{"line_number":2222,"context_line":"        :param context: the context of the caller."}],"source_content_type":"text/x-python","patch_set":7,"id":"dae33548_5be691b0","line":2219,"updated":"2016-02-17 18:15:37.000000000","message":"The force flag should not be added.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"}],"cinder/volume/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f14d75d1920ce939a8fc378dcc69c88289cd809c","unresolved":false,"context_lines":[{"line_number":2834,"context_line":"                          resource\u003d{\u0027type\u0027: \u0027consistency_group\u0027,"},{"line_number":2835,"context_line":"                                    \u0027id\u0027: group.id})"},{"line_number":2836,"context_line":"                raise"},{"line_number":2837,"context_line":"            remove_volumes_ref.append(remove_vol_ref)"},{"line_number":2838,"context_line":""},{"line_number":2839,"context_line":"        self._notify_about_consistencygroup_usage("},{"line_number":2840,"context_line":"            context, group, \"update.start\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"7af24918_922db300","line":2837,"range":{"start_line":2837,"start_character":0,"end_line":2837,"end_character":53},"updated":"2016-03-03 09:34:15.000000000","message":"I agree with Xing and Mike - we need an additional check here to protect from the situations when vol status changed while request was flying from cinder-api to cinder-volume.\n\nThis would be similar to lines 2808-2815.","commit_id":"cf3becaf93952f94ac01aa0bbaa713c4b1461083"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"9bb97cb1cb38114f46b0001b6b97c32010a23373","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        cctxt.cast(ctxt, \u0027delete_consistencygroup\u0027,"},{"line_number":106,"context_line":"                   group\u003dgroup)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def update_consistencygroup(self, ctxt, group, add_volumes\u003dNone,"},{"line_number":109,"context_line":"                                remove_volumes\u003dNone, force\u003dNone):"},{"line_number":110,"context_line":"        cctxt \u003d self._get_cctxt(group.host, \u00271.26\u0027)"},{"line_number":111,"context_line":"        cctxt.cast(ctxt, \u0027update_consistencygroup\u0027,"},{"line_number":112,"context_line":"                   group\u003dgroup,"},{"line_number":113,"context_line":"                   add_volumes\u003dadd_volumes,"},{"line_number":114,"context_line":"                   remove_volumes\u003dremove_volumes,"},{"line_number":115,"context_line":"                   force\u003dforce)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_consistencygroup_from_src(self, ctxt, group, cgsnapshot\u003dNone,"},{"line_number":118,"context_line":"                                         source_cg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dae33548_63032d0e","line":115,"range":{"start_line":108,"start_character":0,"end_line":115,"end_character":31},"updated":"2016-02-16 18:26:20.000000000","message":"You\u0027re adding a parameter, so you need to bump the RPC API version and create backward compatibility shim similar to the one you can see for example in create_volume method in this class. I believe that in case it\u0027s not possible to send force parameter, request should fail (as it will not do what user requested without \"force\" argument).\n\nThere are some WIP docs that can help you understand the process [1].\n\n[1] https://review.openstack.org/#/c/279186/2/doc/source/devref/index.rst","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d359d84b3801c495a5d3d1f244881a4ead9b2fea","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        cctxt.cast(ctxt, \u0027delete_consistencygroup\u0027,"},{"line_number":106,"context_line":"                   group\u003dgroup)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def update_consistencygroup(self, ctxt, group, add_volumes\u003dNone,"},{"line_number":109,"context_line":"                                remove_volumes\u003dNone, force\u003dNone):"},{"line_number":110,"context_line":"        cctxt \u003d self._get_cctxt(group.host, \u00271.26\u0027)"},{"line_number":111,"context_line":"        cctxt.cast(ctxt, \u0027update_consistencygroup\u0027,"},{"line_number":112,"context_line":"                   group\u003dgroup,"},{"line_number":113,"context_line":"                   add_volumes\u003dadd_volumes,"},{"line_number":114,"context_line":"                   remove_volumes\u003dremove_volumes,"},{"line_number":115,"context_line":"                   force\u003dforce)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_consistencygroup_from_src(self, ctxt, group, cgsnapshot\u003dNone,"},{"line_number":118,"context_line":"                                         source_cg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"dae33548_5b9df108","line":115,"range":{"start_line":108,"start_character":0,"end_line":115,"end_character":31},"in_reply_to":"dae33548_63032d0e","updated":"2016-02-17 18:15:37.000000000","message":"The force flag should not be added.","commit_id":"f0f73a69ecdf37f03353e839dbdb7385d52dd4f7"}],"releasenotes/notes/remove-vol-in-error-from-cg-1ed0fde04ab2b5be.yaml":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"da9fa2cfe27534fad5ab3dbdae151a68bb8bfc61","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Previously volumes in error states could not be removed from a consistency-group. Now it is possible to remove volumes in error and error_deleting states."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9aed3d3a_9bc83eaa","line":3,"updated":"2016-02-29 07:53:10.000000000","message":"Why is this possible now? I wasn\u0027t able to figure this out from the commit message, and probably this happened with a conversation I wasn\u0027t part of, but just want to double check why.","commit_id":"814aea4b91d5b719104693bb6b8892bab49d862d"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d6c561961ace23ea6a985a5eb71790df0ede3792","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Previously the only way to remove volumes in error states from a consistency-group was to delete the consistency group and create it again. "},{"line_number":4,"context_line":"  - Now it is possible to remove volumes in error and error_deleting states."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9aed3d3a_874c5c9f","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":76},"updated":"2016-02-29 11:22:41.000000000","message":"You shouldn\u0027t make two items - it will produce two separated release notes. Take a look on [1] for an example how to wrap lines in these RN yaml files (I wrap them at 60 column).\n\n[1] https://review.openstack.org/#/c/285190/1/releasenotes/notes/general-upgrades-notes-120f022aa5bfa1ea.yaml","commit_id":"2b31fa3d15da2905ca275958e8ff4cf2c2427d8e"},{"author":{"_account_id":10213,"name":"Alon Marx","email":"alonma@il.ibm.com","username":"alonmarx"},"change_message_id":"65a9177c2d260ea8d3f4ab39e7809cea2236fee8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Previously the only way to remove volumes in error states from a consistency-group was to delete the consistency group and create it again. "},{"line_number":4,"context_line":"  - Now it is possible to remove volumes in error and error_deleting states."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9aed3d3a_2ac4355d","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":76},"in_reply_to":"9aed3d3a_874c5c9f","updated":"2016-02-29 11:32:17.000000000","message":"Thanks Michal!","commit_id":"2b31fa3d15da2905ca275958e8ff4cf2c2427d8e"}]}
