)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"84df07b15e928976d9431563375508c09a2a174f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add manage/unmanage feature for Kaminario K2 iSCSI and FC"},{"line_number":10,"context_line":"cinder drivers and support volume types by extra-specs."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I43630dd6f7b9c1d18f59be12626b66f798de2822"},{"line_number":13,"context_line":"Implements: blueprint k2-manage-unmanage"},{"line_number":14,"context_line":"Co-Authored-By: Nikesh Mahalka \u003cNikesh.Mahalka.ctr@kaminario.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_c874dd9d","line":11,"updated":"2016-07-28 19:30:07.000000000","message":"This needs DocImpact since config options are changing.","commit_id":"1a3ddfb1f666df75c7c78663e72cc6be023da5ca"}],"cinder/tests/unit/volume/drivers/test_kaminario.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        \"\"\"Test manage_existing.\"\"\""},{"line_number":273,"context_line":"        self.driver.get_replica_status \u003d mock.Mock(return_value\u003dFalse)"},{"line_number":274,"context_line":"        result \u003d self.driver.manage_existing(self.vol, {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":275,"context_line":"        self.assertIsNone(result)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":278,"context_line":"        \"\"\"Test manage_existing_get_size.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_70bf8a60","line":275,"updated":"2016-07-25 14:38:43.000000000","message":"Please assert for the calls made in manage_existing.","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f1aad4a5b51d9dccc4dbef4c877cfcc357676a87","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        \"\"\"Test manage_existing.\"\"\""},{"line_number":273,"context_line":"        self.driver.get_replica_status \u003d mock.Mock(return_value\u003dFalse)"},{"line_number":274,"context_line":"        result \u003d self.driver.manage_existing(self.vol, {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":275,"context_line":"        self.assertIsNone(result)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":278,"context_line":"        \"\"\"Test manage_existing_get_size.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_9e1d8475","line":275,"in_reply_to":"dada55a8_70bf8a60","updated":"2016-07-27 09:35:25.000000000","message":"we are adding one more function for assert in manage_existing","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    def test_get_is_dedup(self):"},{"line_number":284,"context_line":"        \"\"\"Test get_is_dedup.\"\"\""},{"line_number":285,"context_line":"        result \u003d self.driver.get_is_dedup(self.vol)"},{"line_number":286,"context_line":"        self.assertTrue(result)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_get_is_replica(self):"},{"line_number":289,"context_line":"        \"\"\"Test get_is_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_307d12b2","line":286,"updated":"2016-07-25 14:38:43.000000000","message":"We should also test for the \u0027False\u0027 case.","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f1aad4a5b51d9dccc4dbef4c877cfcc357676a87","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    def test_get_is_dedup(self):"},{"line_number":284,"context_line":"        \"\"\"Test get_is_dedup.\"\"\""},{"line_number":285,"context_line":"        result \u003d self.driver.get_is_dedup(self.vol)"},{"line_number":286,"context_line":"        self.assertTrue(result)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_get_is_replica(self):"},{"line_number":289,"context_line":"        \"\"\"Test get_is_replica.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_3e0f3838","line":286,"in_reply_to":"dada55a8_307d12b2","updated":"2016-07-27 09:35:25.000000000","message":"Done","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    def test_get_is_replica(self):"},{"line_number":289,"context_line":"        \"\"\"Test get_is_replica.\"\"\""},{"line_number":290,"context_line":"        result \u003d self.driver.get_is_replica(self.vol)"},{"line_number":291,"context_line":"        self.assertFalse(result)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def test_get_replica_status(self):"},{"line_number":294,"context_line":"        \"\"\"Test get_replica_status.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_b0474276","line":291,"updated":"2016-07-25 14:38:43.000000000","message":"We should also test for the \u0027True\u0027 case.","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f1aad4a5b51d9dccc4dbef4c877cfcc357676a87","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    def test_get_is_replica(self):"},{"line_number":289,"context_line":"        \"\"\"Test get_is_replica.\"\"\""},{"line_number":290,"context_line":"        result \u003d self.driver.get_is_replica(self.vol)"},{"line_number":291,"context_line":"        self.assertFalse(result)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def test_get_replica_status(self):"},{"line_number":294,"context_line":"        \"\"\"Test get_replica_status.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_5e002c02","line":291,"in_reply_to":"dada55a8_b0474276","updated":"2016-07-27 09:35:25.000000000","message":"Done","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"84df07b15e928976d9431563375508c09a2a174f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.pwwn \u003d \u002750024f4053300300\u0027"},{"line_number":49,"context_line":"        self.volume_group \u003d self"},{"line_number":50,"context_line":"        self.is_dedup \u003d True"},{"line_number":51,"context_line":"        self.size \u003d 1024 * 1024"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def save(self):"},{"line_number":54,"context_line":"        return FakeSaveObject()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_0858b531","line":51,"updated":"2016-07-28 19:30:07.000000000","message":"Please use \"units\" for this. You can see an example here:\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L167","commit_id":"1a3ddfb1f666df75c7c78663e72cc6be023da5ca"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"043f573ed82ea78f7b02f41c27d431d455a1afaf","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":286,"context_line":"        \"\"\"Test manage_existing_get_size.\"\"\""},{"line_number":287,"context_line":"        self.driver.client.search().hits[0].size \u003d 1024 * 1024"},{"line_number":288,"context_line":"        result \u003d self.driver.manage_existing_get_size(self.vol,"},{"line_number":289,"context_line":"                                                      {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":290,"context_line":"        self.assertEqual(1, result)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_eba27b4a","line":287,"range":{"start_line":287,"start_character":51,"end_line":287,"end_character":62},"updated":"2016-07-28 20:07:46.000000000","message":"Use self.size here since it was already calculated in setup().","commit_id":"d99bd996c65672437e773e56e58792a69e2635a6"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4a443910f1ec2d04212b02dae617d85d183ba3de","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":286,"context_line":"        \"\"\"Test manage_existing_get_size.\"\"\""},{"line_number":287,"context_line":"        self.driver.client.search().hits[0].size \u003d 1024 * 1024"},{"line_number":288,"context_line":"        result \u003d self.driver.manage_existing_get_size(self.vol,"},{"line_number":289,"context_line":"                                                      {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":290,"context_line":"        self.assertEqual(1, result)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_531c0777","line":287,"range":{"start_line":287,"start_character":51,"end_line":287,"end_character":62},"in_reply_to":"bacf61ea_eba27b4a","updated":"2016-07-29 07:30:58.000000000","message":"self.size is not accessible here.","commit_id":"d99bd996c65672437e773e56e58792a69e2635a6"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"766c326004cbd814af10290612da640698b7b748","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \"\"\"Test manage_existing.\"\"\""},{"line_number":275,"context_line":"        self.driver._get_replica_status \u003d mock.Mock(return_value\u003dFalse)"},{"line_number":276,"context_line":"        result \u003d self.driver.manage_existing(self.vol, {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":277,"context_line":"        self.assertIsNone(result)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_manage_existing_exp(self):"},{"line_number":280,"context_line":"        self.driver._get_replica_status \u003d mock.Mock(return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_b8e39304","line":277,"updated":"2016-07-29 12:35:25.000000000","message":"We should also assert for the backend changes, for example the renaming operations.","commit_id":"03612a22a8dd6545ac997f8911db7ec9726a070f"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8b4c1bd7befc60c44875e0a70daae7c9be78ecbd","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \"\"\"Test manage_existing.\"\"\""},{"line_number":275,"context_line":"        self.driver._get_replica_status \u003d mock.Mock(return_value\u003dFalse)"},{"line_number":276,"context_line":"        result \u003d self.driver.manage_existing(self.vol, {\u0027source-name\u0027: \u0027test\u0027})"},{"line_number":277,"context_line":"        self.assertIsNone(result)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_manage_existing_exp(self):"},{"line_number":280,"context_line":"        self.driver._get_replica_status \u003d mock.Mock(return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_28647247","line":277,"in_reply_to":"bacf61ea_b8e39304","updated":"2016-07-29 13:26:05.000000000","message":"We have covered functionalities like new, save, search etc in our units tests with class FakeKrest as entry point. Here we think we do not need another assert. We already added one more method \"test_manage_existing_exp\" which will take care of exception part.","commit_id":"03612a22a8dd6545ac997f8911db7ec9726a070f"}],"cinder/volume/drivers/kaminario/kaminario_common.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        replica \u003d False"},{"line_number":513,"context_line":"        vol_type \u003d volume.get(\u0027volume_type\u0027)"},{"line_number":514,"context_line":"        if vol_type and \"replication_enabled\" in vol_type.get(\u0027extra_specs\u0027):"},{"line_number":515,"context_line":"            replica \u003d True"},{"line_number":516,"context_line":"        return replica"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def get_replica_status(self, vg_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_707caaeb","line":515,"updated":"2016-07-25 14:38:43.000000000","message":"What if replication_enabled is set to False in the volume type?\n\nI think replica should be set to the value of replication_enabled in the extra specs.","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        is_replica \u003d self.get_is_replica(volume)"},{"line_number":533,"context_line":"        try:"},{"line_number":534,"context_line":"            LOG.debug(\"Searching volume: %s in K2.\", vol_name)"},{"line_number":535,"context_line":"            vol \u003d self.client.search(\"volumes\", name\u003dvol_name).hits[0]"},{"line_number":536,"context_line":"            vg \u003d vol.volume_group"},{"line_number":537,"context_line":"            vg_replica \u003d self.get_replica_status(vg.name)"},{"line_number":538,"context_line":"            if is_dedup !\u003d vg.is_dedup or is_replica !\u003d vg_replica:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_70d30a60","line":535,"updated":"2016-07-25 14:38:43.000000000","message":"What if there are no hits?","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f1aad4a5b51d9dccc4dbef4c877cfcc357676a87","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        is_replica \u003d self.get_is_replica(volume)"},{"line_number":533,"context_line":"        try:"},{"line_number":534,"context_line":"            LOG.debug(\"Searching volume: %s in K2.\", vol_name)"},{"line_number":535,"context_line":"            vol \u003d self.client.search(\"volumes\", name\u003dvol_name).hits[0]"},{"line_number":536,"context_line":"            vg \u003d vol.volume_group"},{"line_number":537,"context_line":"            vg_replica \u003d self.get_replica_status(vg.name)"},{"line_number":538,"context_line":"            if is_dedup !\u003d vg.is_dedup or is_replica !\u003d vg_replica:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_be65e81e","line":535,"in_reply_to":"dada55a8_70d30a60","updated":"2016-07-27 09:35:25.000000000","message":"if we do not have any hits, a exception will raise, which will be handle by \"except Exception as ex:\"","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0ed447869537a4b9619a53ec86dda7493861a583","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        v_rs \u003d self.client.search(\"volumes\", name\u003dvol_name)"},{"line_number":564,"context_line":"        if hasattr(v_rs, \u0027hits\u0027) and v_rs.total !\u003d 0:"},{"line_number":565,"context_line":"            vol \u003d v_rs.hits[0]"},{"line_number":566,"context_line":"            size \u003d vol.size / units.Mi"},{"line_number":567,"context_line":"            return size"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_30b51231","line":566,"updated":"2016-07-25 14:38:43.000000000","message":"Please return the ceil.","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"f1aad4a5b51d9dccc4dbef4c877cfcc357676a87","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        v_rs \u003d self.client.search(\"volumes\", name\u003dvol_name)"},{"line_number":564,"context_line":"        if hasattr(v_rs, \u0027hits\u0027) and v_rs.total !\u003d 0:"},{"line_number":565,"context_line":"            vol \u003d v_rs.hits[0]"},{"line_number":566,"context_line":"            size \u003d vol.size / units.Mi"},{"line_number":567,"context_line":"            return size"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_be4cc89e","line":566,"in_reply_to":"dada55a8_30b51231","updated":"2016-07-27 09:35:25.000000000","message":"Done","commit_id":"a85c357df4d2960597b7743714594d7e5f673631"},{"author":{"_account_id":16212,"name":"Chuck Fouts","email":"fchuck@netapp.com","username":"cFouts"},"change_message_id":"043f573ed82ea78f7b02f41c27d431d455a1afaf","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        if hasattr(v_rs, \u0027hits\u0027) and v_rs.total !\u003d 0:"},{"line_number":564,"context_line":"            vol \u003d v_rs.hits[0]"},{"line_number":565,"context_line":"            size \u003d vol.size / units.Mi"},{"line_number":566,"context_line":"            return math.ceil(size)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_ebd43bbe","line":566,"range":{"start_line":566,"start_character":12,"end_line":566,"end_character":34},"updated":"2016-07-28 20:07:46.000000000","message":"A size is actually expected to be returned by the calling method. As the return statement is in an if branch this implies that it is possible that the returned size will be set to None. Is it possible to remove the if branch or is it likely that v_rs.hits[0] will not exist?","commit_id":"d99bd996c65672437e773e56e58792a69e2635a6"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4a443910f1ec2d04212b02dae617d85d183ba3de","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        if hasattr(v_rs, \u0027hits\u0027) and v_rs.total !\u003d 0:"},{"line_number":564,"context_line":"            vol \u003d v_rs.hits[0]"},{"line_number":565,"context_line":"            size \u003d vol.size / units.Mi"},{"line_number":566,"context_line":"            return math.ceil(size)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_f3b1bb90","line":566,"range":{"start_line":566,"start_character":12,"end_line":566,"end_character":34},"in_reply_to":"bacf61ea_ebd43bbe","updated":"2016-07-29 07:30:58.000000000","message":"suppose if volume with source-name does not exist or deleted, then better to use a else condition to raise error.","commit_id":"d99bd996c65672437e773e56e58792a69e2635a6"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"d220ecc9280232695073de7b8158b359e0e20382","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                    existing_ref\u003dexisting_ref,"},{"line_number":538,"context_line":"                    reason\u003d_(\u0027Manage volume type invalid.\u0027))"},{"line_number":539,"context_line":"            vol.name \u003d new_name"},{"line_number":540,"context_line":"            vg_name \u003d vg.name"},{"line_number":541,"context_line":"            LOG.debug(\"Manage new volume name: %s\", new_name)"},{"line_number":542,"context_line":"            vg.name \u003d vg_new_name"},{"line_number":543,"context_line":"            LOG.debug(\"Manage volume group name: %s\", vg_new_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_09ef02b1","line":540,"range":{"start_line":540,"start_character":12,"end_line":540,"end_character":29},"updated":"2016-07-29 08:16:07.000000000","message":"Not required. Anyway this is getting reassign below with vg_new_name.","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9746314ab0e48d3a60b40cdae609fc52d023efef","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                    existing_ref\u003dexisting_ref,"},{"line_number":538,"context_line":"                    reason\u003d_(\u0027Manage volume type invalid.\u0027))"},{"line_number":539,"context_line":"            vol.name \u003d new_name"},{"line_number":540,"context_line":"            vg_name \u003d vg.name"},{"line_number":541,"context_line":"            LOG.debug(\"Manage new volume name: %s\", new_name)"},{"line_number":542,"context_line":"            vg.name \u003d vg_new_name"},{"line_number":543,"context_line":"            LOG.debug(\"Manage volume group name: %s\", vg_new_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_072889e1","line":540,"range":{"start_line":540,"start_character":12,"end_line":540,"end_character":29},"in_reply_to":"bacf61ea_09ef02b1","updated":"2016-07-29 09:00:19.000000000","message":"It is needed for rollback code in \"except Exception as ex\".\nIn case any exception, we will rollback to old name.","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"d220ecc9280232695073de7b8158b359e0e20382","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                    reason\u003d_(\u0027Manage volume type invalid.\u0027))"},{"line_number":539,"context_line":"            vol.name \u003d new_name"},{"line_number":540,"context_line":"            vg_name \u003d vg.name"},{"line_number":541,"context_line":"            LOG.debug(\"Manage new volume name: %s\", new_name)"},{"line_number":542,"context_line":"            vg.name \u003d vg_new_name"},{"line_number":543,"context_line":"            LOG.debug(\"Manage volume group name: %s\", vg_new_name)"},{"line_number":544,"context_line":"            vg.save()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_a9835603","line":541,"range":{"start_line":541,"start_character":12,"end_line":541,"end_character":61},"updated":"2016-07-29 08:16:07.000000000","message":"Multiple debug loggers. can they be clubbed together. This sometimes add difficulty in cleaning up before merge","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9746314ab0e48d3a60b40cdae609fc52d023efef","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                    reason\u003d_(\u0027Manage volume type invalid.\u0027))"},{"line_number":539,"context_line":"            vol.name \u003d new_name"},{"line_number":540,"context_line":"            vg_name \u003d vg.name"},{"line_number":541,"context_line":"            LOG.debug(\"Manage new volume name: %s\", new_name)"},{"line_number":542,"context_line":"            vg.name \u003d vg_new_name"},{"line_number":543,"context_line":"            LOG.debug(\"Manage volume group name: %s\", vg_new_name)"},{"line_number":544,"context_line":"            vg.save()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_a75edd73","line":541,"range":{"start_line":541,"start_character":12,"end_line":541,"end_character":61},"in_reply_to":"bacf61ea_a9835603","updated":"2016-07-29 09:00:19.000000000","message":"Not Sure, but we want to debug like this","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"d220ecc9280232695073de7b8158b359e0e20382","unresolved":false,"context_lines":[{"line_number":553,"context_line":"                    LOG.debug(\"Updating vg new name to old name: %s \", vg_name)"},{"line_number":554,"context_line":"                    vg.save()"},{"line_number":555,"context_line":"            LOG.exception(_LE(\"manage volume: %s failed.\"), vol_name)"},{"line_number":556,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":557,"context_line":"                existing_ref\u003dexisting_ref,"},{"line_number":558,"context_line":"                reason\u003dsix.text_type(ex.message))"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_c9ca0a6e","line":556,"range":{"start_line":556,"start_character":12,"end_line":556,"end_character":59},"updated":"2016-07-29 08:16:07.000000000","message":"Is this exception also getting covered?","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"9746314ab0e48d3a60b40cdae609fc52d023efef","unresolved":false,"context_lines":[{"line_number":553,"context_line":"                    LOG.debug(\"Updating vg new name to old name: %s \", vg_name)"},{"line_number":554,"context_line":"                    vg.save()"},{"line_number":555,"context_line":"            LOG.exception(_LE(\"manage volume: %s failed.\"), vol_name)"},{"line_number":556,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":557,"context_line":"                existing_ref\u003dexisting_ref,"},{"line_number":558,"context_line":"                reason\u003dsix.text_type(ex.message))"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_27466dbf","line":556,"range":{"start_line":556,"start_character":12,"end_line":556,"end_character":59},"in_reply_to":"bacf61ea_c9ca0a6e","updated":"2016-07-29 09:00:19.000000000","message":"it will be taken care by cinder.\nTo do rollback, we are first caching exception and then reraising it.","commit_id":"6bb6dac6e38d7195f7f6ffbb6d6ff4514197195d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"766c326004cbd814af10290612da640698b7b748","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"kaminario1_opts \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027kaminario_nodedup_substring\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027K2-nodedup\u0027,"},{"line_number":39,"context_line":"               help\u003d\"If volume-type name contains this substring \""},{"line_number":40,"context_line":"                    \"nodedup volume will be created, otherwise \""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_8d5bf386","side":"PARENT","line":37,"updated":"2016-07-29 12:35:25.000000000","message":"We have to deprecate the option in N release before removing it in the next.","commit_id":"3f41eb867f3348ecc8205470500f414cba85317b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"8b4c1bd7befc60c44875e0a70daae7c9be78ecbd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"kaminario1_opts \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027kaminario_nodedup_substring\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027K2-nodedup\u0027,"},{"line_number":39,"context_line":"               help\u003d\"If volume-type name contains this substring \""},{"line_number":40,"context_line":"                    \"nodedup volume will be created, otherwise \""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a8d7c2bd","side":"PARENT","line":37,"in_reply_to":"bacf61ea_8d5bf386","updated":"2016-07-29 13:26:05.000000000","message":"We did not get you on this.","commit_id":"3f41eb867f3348ecc8205470500f414cba85317b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ebd65b5c01133a692df327e339ed99d6fb328d0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"kaminario1_opts \u003d ["},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027kaminario_nodedup_substring\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027K2-nodedup\u0027,"},{"line_number":39,"context_line":"               help\u003d\"If volume-type name contains this substring \""},{"line_number":40,"context_line":"                    \"nodedup volume will be created, otherwise \""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_59f51d55","side":"PARENT","line":37,"in_reply_to":"bacf61ea_a8d7c2bd","updated":"2016-07-30 01:51:31.000000000","message":"See the following example.  There are other examples if you search for \"deprecated\".  Basically in Newton, you should still support this option but mark it as deprecated and log a message if someone uses it.  In the next release Ocata, you can remove it.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/netapp/options.py#L77","commit_id":"3f41eb867f3348ecc8205470500f414cba85317b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1ebd65b5c01133a692df327e339ed99d6fb328d0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        vg_name \u003d self.get_volume_group_name(volume.id)"},{"line_number":126,"context_line":"        vol_name \u003d self.get_volume_name(volume.id)"},{"line_number":127,"context_line":"        prov_type \u003d self._get_is_dedup(volume.get(\u0027volume_type\u0027))"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            LOG.debug(\"Creating volume group with name: %(name)s, \""},{"line_number":130,"context_line":"                      \"quota: unlimited and dedup_support: %(dedup)s\","}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3992e9f6","line":127,"updated":"2016-07-30 01:51:31.000000000","message":"You can support this new way of deciding whether it is dedupe or not, but if you can\u0027t get it from new way, check \"kaminario_nodedup_substring\", use it but log a warning that it will go away in Ocata.","commit_id":"03612a22a8dd6545ac997f8911db7ec9726a070f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"233ce96d723c3132333edaac999792e937e5bc79","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            else:"},{"line_number":526,"context_line":"                return True"},{"line_number":527,"context_line":"        else:"},{"line_number":528,"context_line":"            return True"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def _get_replica_status(self, vg_name):"},{"line_number":531,"context_line":"        status \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_9834734a","line":528,"updated":"2016-08-01 15:58:27.000000000","message":"if vol_type:\n    specs_val \u003d vol_type.get(\u0027extra_specs\u0027, {}).get(\n            \u0027kaminario:thin_prov_type\u0027)\n    If specs_val \u003d\u003d \u0027nodedup\u0027:\n        return False\n    elif CONF.kaminario_nodedup_substring in vol_type.name:\n        return False\n    else:\n        return True\nelse:\n    return True","commit_id":"3ae374ebf67f1397f6e25cb3a98afa86d74ebfd3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8ca25c226a9d6c273454331f6bffd4f0dc466c5d","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            else:"},{"line_number":526,"context_line":"                return True"},{"line_number":527,"context_line":"        else:"},{"line_number":528,"context_line":"            return True"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def _get_replica_status(self, vg_name):"},{"line_number":531,"context_line":"        status \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_3b058110","line":528,"in_reply_to":"bacf61ea_9834734a","updated":"2016-08-01 16:00:35.000000000","message":"Also please log an INFO message under the \"elif CONF.kaminario_nodedup_substring in vol_type.name:\" condition that this option will be deprecated in Ocata and \u0027kaminario:thin_prov_type\u0027 in extra_specs should be used instead.","commit_id":"3ae374ebf67f1397f6e25cb3a98afa86d74ebfd3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3eb44b0a4637574135a513a112e8807d03bd59bc","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cinder"},{"line_number":28,"context_line":"from cinder import exception"},{"line_number":29,"context_line":"from cinder.i18n import _, _LE, _LW, _LI"},{"line_number":30,"context_line":"from cinder import utils"},{"line_number":31,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":32,"context_line":"from cinder.volume import utils as vol_utils"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_7de69117","line":29,"range":{"start_line":29,"start_character":36,"end_line":29,"end_character":40},"updated":"2016-08-02 16:03:09.000000000","message":"nit: I think this should be before _LW","commit_id":"832ec71e284cea4e5dfe495f6e476d348c08a007"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3eb44b0a4637574135a513a112e8807d03bd59bc","unresolved":false,"context_lines":[{"line_number":37,"context_line":"kaminario1_opts \u003d ["},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027kaminario_nodedup_substring\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027K2-nodedup\u0027,"},{"line_number":40,"context_line":"               help\u003d\"If volume-type name contains this substring \""},{"line_number":41,"context_line":"                    \"nodedup volume will be created, otherwise \""},{"line_number":42,"context_line":"                    \"dedup volume wil be created. Note: this option is \""},{"line_number":43,"context_line":"                    \"deprecated in favour of \u0027kaminario:thin_prov_type\u0027 in \""}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_bdb8092c","line":40,"updated":"2016-08-02 16:03:09.000000000","message":"We should also add deprecated_for_removal\u003dTrue","commit_id":"832ec71e284cea4e5dfe495f6e476d348c08a007"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3eb44b0a4637574135a513a112e8807d03bd59bc","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d\u0027K2-nodedup\u0027,"},{"line_number":40,"context_line":"               help\u003d\"If volume-type name contains this substring \""},{"line_number":41,"context_line":"                    \"nodedup volume will be created, otherwise \""},{"line_number":42,"context_line":"                    \"dedup volume wil be created. Note: this option is \""},{"line_number":43,"context_line":"                    \"deprecated in favour of \u0027kaminario:thin_prov_type\u0027 in \""},{"line_number":44,"context_line":"                    \"extra-specs and will be removed in the Ocata release.\")]"},{"line_number":45,"context_line":"kaminario2_opts \u003d ["},{"line_number":46,"context_line":"    cfg.BoolOpt(\u0027auto_calc_max_oversubscription_ratio\u0027,"},{"line_number":47,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_dd85fd59","line":44,"range":{"start_line":42,"start_character":50,"end_line":44,"end_character":74},"updated":"2016-08-02 16:03:09.000000000","message":"This should be set to the value of deprecated_reason.","commit_id":"832ec71e284cea4e5dfe495f6e476d348c08a007"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3eb44b0a4637574135a513a112e8807d03bd59bc","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                LOG.info(_LI(\"\u0027kaminario_nodedup_substring\u0027 option is \""},{"line_number":523,"context_line":"                             \"deprecated in favour of \u0027kaminario:thin_prov_\""},{"line_number":524,"context_line":"                             \"type\u0027 in extra-specs and will be removed in \""},{"line_number":525,"context_line":"                             \"the Ocata release.\"))"},{"line_number":526,"context_line":"                return False"},{"line_number":527,"context_line":"            else:"},{"line_number":528,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":16,"id":"bacf61ea_bd9e4961","line":525,"range":{"start_line":525,"start_character":34,"end_line":525,"end_character":39},"updated":"2016-08-02 16:03:09.000000000","message":"10.0.0","commit_id":"832ec71e284cea4e5dfe495f6e476d348c08a007"}]}
