)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"42f95f5d697546a162fd34b75b3d8be95e8e676a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Also fix issue with manage retry where the share"},{"line_number":21,"context_line":"data was being altered inappropriately by a DB API."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Closes-Bug: #1561641"},{"line_number":24,"context_line":"Closes-Bug: #1565903"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a1b2928_f564594a","line":22,"updated":"2016-04-11 13:27:03.000000000","message":"Commit message says nothing about fixing \"NetApp\" driver.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}],"manila/api/v1/share_unmanage.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"42f95f5d697546a162fd34b75b3d8be95e8e676a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":41,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":42,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"},{"line_number":43,"context_line":"                raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":44,"context_line":"            if share[\u0027instance\u0027].get(\u0027share_server_id\u0027):"},{"line_number":45,"context_line":"                msg \u003d _(\"Operation \u0027unmanage\u0027 is not supported for shares \""},{"line_number":46,"context_line":"                        \"that are created on top of share servers \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_7ace785b","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":38},"updated":"2016-04-11 13:27:03.000000000","message":"Why \"conflict\"? It is not correct error.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d3de6795dfe51428d8d3a268b6eba19e55124010","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":41,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":42,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"},{"line_number":43,"context_line":"                raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":44,"context_line":"            if share[\u0027instance\u0027].get(\u0027share_server_id\u0027):"},{"line_number":45,"context_line":"                msg \u003d _(\"Operation \u0027unmanage\u0027 is not supported for shares \""},{"line_number":46,"context_line":"                        \"that are created on top of share servers \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_5020bb9b","line":43,"range":{"start_line":43,"start_character":26,"end_line":43,"end_character":38},"in_reply_to":"7a1b2928_7ace785b","updated":"2016-04-11 16:46:38.000000000","message":"409 because you can do something about it. You can delete replicas and un-manage the share.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}],"manila/api/v2/share_snapshots.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"42f95f5d697546a162fd34b75b3d8be95e8e676a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                msg \u003d _(\"Share %s has replicas. Snapshots of this share \""},{"line_number":64,"context_line":"                        \"cannot currently be unmanaged until all replicas \""},{"line_number":65,"context_line":"                        \"are removed.\") % share[\u0027id\u0027]"},{"line_number":66,"context_line":"                raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":67,"context_line":"            elif snapshot[\u0027status\u0027] in constants.TRANSITIONAL_STATUSES:"},{"line_number":68,"context_line":"                msg \u003d _(\"Snapshot with transitional state cannot be \""},{"line_number":69,"context_line":"                        \"unmanaged. Snapshot \u0027%(s_id)s\u0027 is in \u0027%(state)s\u0027 \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_153755b1","line":66,"range":{"start_line":66,"start_character":26,"end_line":66,"end_character":38},"updated":"2016-04-11 13:27:03.000000000","message":"Same here, why \"conflict\"?","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d3de6795dfe51428d8d3a268b6eba19e55124010","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                msg \u003d _(\"Share %s has replicas. Snapshots of this share \""},{"line_number":64,"context_line":"                        \"cannot currently be unmanaged until all replicas \""},{"line_number":65,"context_line":"                        \"are removed.\") % share[\u0027id\u0027]"},{"line_number":66,"context_line":"                raise exc.HTTPConflict(explanation\u003dmsg)"},{"line_number":67,"context_line":"            elif snapshot[\u0027status\u0027] in constants.TRANSITIONAL_STATUSES:"},{"line_number":68,"context_line":"                msg \u003d _(\"Snapshot with transitional state cannot be \""},{"line_number":69,"context_line":"                        \"unmanaged. Snapshot \u0027%(s_id)s\u0027 is in \u0027%(state)s\u0027 \""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_b0314fef","line":66,"range":{"start_line":66,"start_character":26,"end_line":66,"end_character":38},"in_reply_to":"7a1b2928_153755b1","updated":"2016-04-11 16:46:38.000000000","message":"Same reason","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"42f95f5d697546a162fd34b75b3d8be95e8e676a","unresolved":false,"context_lines":[{"line_number":2208,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":2209,"context_line":"def share_snapshot_update(context, snapshot_id, update_values):"},{"line_number":2210,"context_line":"    session \u003d get_session()"},{"line_number":2211,"context_line":"    values \u003d copy.deepcopy(update_values)"},{"line_number":2212,"context_line":"    with session.begin():"},{"line_number":2213,"context_line":"        snapshot_ref \u003d share_snapshot_get(context, snapshot_id,"},{"line_number":2214,"context_line":"                                          session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_353a5137","line":2211,"range":{"start_line":2211,"start_character":13,"end_line":2211,"end_character":26},"updated":"2016-04-11 13:27:03.000000000","message":"I don\u0027t see place where it is changed, so, why then \"copy\" it?","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d3de6795dfe51428d8d3a268b6eba19e55124010","unresolved":false,"context_lines":[{"line_number":2208,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":2209,"context_line":"def share_snapshot_update(context, snapshot_id, update_values):"},{"line_number":2210,"context_line":"    session \u003d get_session()"},{"line_number":2211,"context_line":"    values \u003d copy.deepcopy(update_values)"},{"line_number":2212,"context_line":"    with session.begin():"},{"line_number":2213,"context_line":"        snapshot_ref \u003d share_snapshot_get(context, snapshot_id,"},{"line_number":2214,"context_line":"                                          session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_506efbc9","line":2211,"range":{"start_line":2211,"start_character":13,"end_line":2211,"end_character":26},"in_reply_to":"7a1b2928_353a5137","updated":"2016-04-11 16:46:38.000000000","message":"extract_snapshot_instance_values was updating the values..","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}],"manila/share/api.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"42f95f5d697546a162fd34b75b3d8be95e8e676a","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            \u0027status\u0027: constants.STATUS_MANAGING,"},{"line_number":652,"context_line":"            \u0027share_size\u0027: share[\u0027size\u0027],"},{"line_number":653,"context_line":"            \u0027progress\u0027: \u00270%\u0027,"},{"line_number":654,"context_line":"            \u0027share_proto\u0027: share[\u0027share_proto\u0027],"},{"line_number":655,"context_line":"        })"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        snapshot \u003d self.db.share_snapshot_create(context, snapshot_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_956d2535","line":654,"range":{"start_line":654,"start_character":47,"end_line":654,"end_character":48},"updated":"2016-04-11 13:27:03.000000000","message":"It is nice to have comma here, but it is not related to the goal of commit.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d3de6795dfe51428d8d3a268b6eba19e55124010","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            \u0027status\u0027: constants.STATUS_MANAGING,"},{"line_number":652,"context_line":"            \u0027share_size\u0027: share[\u0027size\u0027],"},{"line_number":653,"context_line":"            \u0027progress\u0027: \u00270%\u0027,"},{"line_number":654,"context_line":"            \u0027share_proto\u0027: share[\u0027share_proto\u0027],"},{"line_number":655,"context_line":"        })"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        snapshot \u003d self.db.share_snapshot_create(context, snapshot_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_30aa5fd5","line":654,"range":{"start_line":654,"start_character":47,"end_line":654,"end_character":48},"in_reply_to":"7a1b2928_956d2535","updated":"2016-04-11 16:46:38.000000000","message":"I can remove it. Do you insist on it? :)","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}],"manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"9526ff3c3531452b180ec32fb48240e0faa5124d","unresolved":false,"context_lines":[{"line_number":5062,"context_line":"            expected_get_snapmirrors_calls)"},{"line_number":5063,"context_line":"        self.assertFalse(mock_exc_log.called)"},{"line_number":5064,"context_line":""},{"line_number":5065,"context_line":"    def test_volume_has_snapmirror_relationships_exception(self):"},{"line_number":5066,"context_line":""},{"line_number":5067,"context_line":"        vol \u003d fake.FAKE_MANAGE_VOLUME"},{"line_number":5068,"context_line":"        expected_get_snapmirrors_calls \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_4749278b","line":5065,"range":{"start_line":5065,"start_character":49,"end_line":5065,"end_character":58},"updated":"2016-04-15 18:32:32.000000000","message":"s/exception/api_error/\n\n(This is just the convention used in this file)","commit_id":"56acb43e463014ca83363e86c48a2e5a9fb6b183"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d1241fa83af9b1d4250bd6c674d78df7ba34739d","unresolved":false,"context_lines":[{"line_number":5062,"context_line":"            expected_get_snapmirrors_calls)"},{"line_number":5063,"context_line":"        self.assertFalse(mock_exc_log.called)"},{"line_number":5064,"context_line":""},{"line_number":5065,"context_line":"    def test_volume_has_snapmirror_relationships_exception(self):"},{"line_number":5066,"context_line":""},{"line_number":5067,"context_line":"        vol \u003d fake.FAKE_MANAGE_VOLUME"},{"line_number":5068,"context_line":"        expected_get_snapmirrors_calls \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_626ed1ca","line":5065,"range":{"start_line":5065,"start_character":49,"end_line":5065,"end_character":58},"in_reply_to":"1a122d0e_4749278b","updated":"2016-04-15 19:00:26.000000000","message":"Done","commit_id":"56acb43e463014ca83363e86c48a2e5a9fb6b183"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"9526ff3c3531452b180ec32fb48240e0faa5124d","unresolved":false,"context_lines":[{"line_number":5070,"context_line":"        ]"},{"line_number":5071,"context_line":"        mock_get_snapmirrors_call \u003d self.mock_object("},{"line_number":5072,"context_line":"            self.client, \u0027get_snapmirrors\u0027, mock.Mock("},{"line_number":5073,"context_line":"                side_effect\u003dexception.NetAppException))"},{"line_number":5074,"context_line":"        mock_exc_log \u003d self.mock_object(client_cmode.LOG, \u0027exception\u0027)"},{"line_number":5075,"context_line":""},{"line_number":5076,"context_line":"        retval \u003d self.client.volume_has_snapmirror_relationships(vol)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_47400757","line":5073,"range":{"start_line":5073,"start_character":28,"end_line":5073,"end_character":53},"updated":"2016-04-15 18:32:32.000000000","message":"This should be NaApiError.","commit_id":"56acb43e463014ca83363e86c48a2e5a9fb6b183"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d1241fa83af9b1d4250bd6c674d78df7ba34739d","unresolved":false,"context_lines":[{"line_number":5070,"context_line":"        ]"},{"line_number":5071,"context_line":"        mock_get_snapmirrors_call \u003d self.mock_object("},{"line_number":5072,"context_line":"            self.client, \u0027get_snapmirrors\u0027, mock.Mock("},{"line_number":5073,"context_line":"                side_effect\u003dexception.NetAppException))"},{"line_number":5074,"context_line":"        mock_exc_log \u003d self.mock_object(client_cmode.LOG, \u0027exception\u0027)"},{"line_number":5075,"context_line":""},{"line_number":5076,"context_line":"        retval \u003d self.client.volume_has_snapmirror_relationships(vol)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_a20c6943","line":5073,"range":{"start_line":5073,"start_character":28,"end_line":5073,"end_character":53},"in_reply_to":"1a122d0e_47400757","updated":"2016-04-15 19:00:26.000000000","message":"That\u0027s right.. i was expecting an Exception off a client call! Fixed now! thanks.","commit_id":"56acb43e463014ca83363e86c48a2e5a9fb6b183"}],"manila_tempest_tests/tests/api/admin/test_replication_actions.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f1659094a6c36c721f33cf963b12a6d6ff72fed5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            share_id\u003dcls.share[\u0027id\u0027])[0]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @test.attr(type\u003d[\"gate\"])"},{"line_number":67,"context_line":"    def test_extend_replicated_share(self):"},{"line_number":68,"context_line":"        # Test extend share"},{"line_number":69,"context_line":"        new_size \u003d self.share[\"size\"] + 1"},{"line_number":70,"context_line":"        self.shares_v2_client.extend_share(self.share[\"id\"], new_size)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_c97421d1","line":67,"updated":"2016-04-11 15:01:10.000000000","message":"This test should consider \"run_extend_tests\" config option in the same way as below \"shrink\" test does.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f1659094a6c36c721f33cf963b12a6d6ff72fed5","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                                  availability_zone\u003dself.share_zone,)"},{"line_number":136,"context_line":"        self.shares_v2_client.unmanage_share(share[\u0027id\u0027])"},{"line_number":137,"context_line":"        self.shares_v2_client.wait_for_resource_deletion(share_id\u003dshare[\u0027id\u0027])"},{"line_number":138,"context_line":"        self.assertRaises("},{"line_number":139,"context_line":"            lib_exc.NotFound,"},{"line_number":140,"context_line":"            self.shares_v2_client.get_share,"},{"line_number":141,"context_line":"            share_id\u003dshare[\u0027id\u0027])"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    @test.attr(type\u003d[\"gate\", \"negative\"])"},{"line_number":144,"context_line":"    @testtools.skipUnless(CONF.share.run_manage_unmanage_snapshot_tests,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_b46e5cc7","line":141,"range":{"start_line":138,"start_character":8,"end_line":141,"end_character":33},"updated":"2016-04-11 15:01:10.000000000","message":"This is redundant as it is criterion for exiting previous method.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f1659094a6c36c721f33cf963b12a6d6ff72fed5","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        self.shares_v2_client.unmanage_snapshot(snapshot_id\u003dsnapshot[\u0027id\u0027])"},{"line_number":183,"context_line":"        self.shares_v2_client.wait_for_resource_deletion("},{"line_number":184,"context_line":"            snapshot_id\u003dsnapshot[\u0027id\u0027])"},{"line_number":185,"context_line":"        self.assertRaises("},{"line_number":186,"context_line":"            lib_exc.NotFound,"},{"line_number":187,"context_line":"            self.shares_v2_client.get_snapshot,"},{"line_number":188,"context_line":"            snapshot_id\u003dsnapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a1b2928_b4b49cf2","line":188,"range":{"start_line":185,"start_character":8,"end_line":188,"end_character":39},"updated":"2016-04-11 15:01:10.000000000","message":"same here.","commit_id":"eb1d7b4475c33c2fe77808e81aa02e0f2fcbf3de"}]}
