)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b75f4bcfb757a89c61633170f3f7637806fae8e3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Navneet Singh \u003cnavsinghnitd@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-16 18:16:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement Cinder Manage/Unmanage APIs in NFS driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the new Cinder Manage and Unmanage API calls to the"},{"line_number":10,"context_line":"NFS drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_09989e74","line":7,"updated":"2015-01-19 14:59:48.000000000","message":"Please, remove dot in the end of commit message","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"3983bf7aefaaa39c9834f60ecc26be8bbc8f1249","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Navneet Singh \u003cnavsinghnitd@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-16 18:16:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement Cinder Manage/Unmanage APIs in NFS driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the new Cinder Manage and Unmanage API calls to the"},{"line_number":10,"context_line":"NFS drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_b37efe6b","line":7,"in_reply_to":"3a961159_09989e74","updated":"2015-01-20 07:26:06.000000000","message":"done","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Navneet Singh \u003cnavsinghnitd@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-30 14:16:12 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement Cinder Manage/Unmanage APIs in NFS driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the new Cinder Manage and Unmanage API calls to the"},{"line_number":10,"context_line":"NFS drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da86d52c_501f0f5b","line":7,"updated":"2015-02-05 17:32:13.000000000","message":"Implements","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement Cinder Manage/Unmanage APIs in NFS driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the new Cinder Manage and Unmanage API calls to the"},{"line_number":10,"context_line":"NFS drivers."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: Blueprint nfs-manage-unmanage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da86d52c_903c27ca","line":9,"updated":"2015-02-05 17:32:13.000000000","message":"Adds","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/tests/test_netapp_nfs.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":904,"context_line":"                          \u0027share\u0027, \u0027file\u0027)"},{"line_number":905,"context_line":"        get_specs.assert_called_once_with(\u0027vol\u0027)"},{"line_number":906,"context_line":"        self.assertEqual(self._driver.zapi_client.file_assign_qos.call_count,"},{"line_number":907,"context_line":"                         1)"},{"line_number":908,"context_line":"        self.assertEqual(self._driver._get_vserver_and_exp_vol.call_count, 1)"},{"line_number":909,"context_line":"        self._driver._is_share_vol_type_match.assert_called_once_with("},{"line_number":910,"context_line":"            \u0027vol\u0027, \u0027share\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_b52da9ff","line":907,"updated":"2015-01-05 16:33:37.000000000","message":"Looks like the order of the parameters are reversed. It should be expected, actual.\nself.assertEqual(1, self._driver.zapi_client.file_assign_qos.call_count)","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":905,"context_line":"        get_specs.assert_called_once_with(\u0027vol\u0027)"},{"line_number":906,"context_line":"        self.assertEqual(self._driver.zapi_client.file_assign_qos.call_count,"},{"line_number":907,"context_line":"                         1)"},{"line_number":908,"context_line":"        self.assertEqual(self._driver._get_vserver_and_exp_vol.call_count, 1)"},{"line_number":909,"context_line":"        self._driver._is_share_vol_type_match.assert_called_once_with("},{"line_number":910,"context_line":"            \u0027vol\u0027, \u0027share\u0027)"},{"line_number":911,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f537314b","line":908,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a4793690ab9db2b442958a5eae8a8cffd60be895","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        if not hasattr(self._driver, \u0027vserver\u0027):"},{"line_number":841,"context_line":"            #Test is inherited by 7mode driver testcase"},{"line_number":842,"context_line":"            #Dont execute if not cmode tests"},{"line_number":843,"context_line":"            return"},{"line_number":844,"context_line":"        get_specs.return_value \u003d {\u0027thin_volume\u0027: \u0027true\u0027}"},{"line_number":845,"context_line":"        self._driver._is_share_vol_type_match \u003d mock.Mock(return_value\u003dFalse)"},{"line_number":846,"context_line":"        self.assertRaises(exception.ManageExistingVolumeTypeMismatch,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_c848155e","line":843,"updated":"2015-02-02 15:38:45.000000000","message":"Using unittest.skip will be better here","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/tests/test_nfs.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        modified_vol_ref \u003d drv._convert_vol_ref_share_name_to_share_ip(share)"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"        self.assertEqual(modified_vol_ref, modified_share)"},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"    @mock.patch.object(utils, \u0027resolve_hostname\u0027, return_value\u003d\u002710.12.142.11\u0027)"},{"line_number":1134,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_55764507","line":1131,"updated":"2015-01-05 16:33:37.000000000","message":"Order of the parameters are reversed here too.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"        self.assertEqual(share, self.TEST_NFS_EXPORT1)"},{"line_number":1148,"context_line":"        self.assertEqual(mount, self.TEST_MNT_POINT)"},{"line_number":1149,"context_line":"        self.assertEqual(file_path, \u0027test_file_name\u0027)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"    @mock.patch.object(utils, \u0027resolve_hostname\u0027, return_value\u003d\u002710.12.142.11\u0027)"},{"line_number":1152,"context_line":"    def test_get_share_mount_and_vol_from_vol_ref_with_bad_ref(self,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_d5d075cb","line":1149,"updated":"2015-01-05 16:33:37.000000000","message":"For above 3 assert statements, reverse the order of parameters.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1209,"context_line":"                          test_file))"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        vol_size \u003d drv.manage_existing_get_size(volume, vol_ref)"},{"line_number":1212,"context_line":"        self.assertEqual(vol_size, 1)"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    @mock.patch.object(utils, \u0027get_file_size\u0027, return_value\u003d1074253824)"},{"line_number":1215,"context_line":"    def test_manage_existing_get_size_round_up(self, get_file_size):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_35d539b7","line":1212,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"                          test_file))"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        vol_size \u003d drv.manage_existing_get_size(volume, vol_ref)"},{"line_number":1232,"context_line":"        self.assertEqual(vol_size, 2)"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":"    @mock.patch.object(utils, \u0027get_file_size\u0027, return_value\u003d\u0027badfloat\u0027)"},{"line_number":1235,"context_line":"    def test_manage_existing_get_size_error(self, get_size):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_95ed0d91","line":1232,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1273,"context_line":"        get_meta.return_value \u003d {}"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"        location \u003d drv.manage_existing(volume, vol_ref)"},{"line_number":1276,"context_line":"        self.assertEqual(location[\u0027provider_location\u0027], self.TEST_NFS_EXPORT1)"},{"line_number":1277,"context_line":"        get_meta.assert_called_once_with(volume, drv.db)"},{"line_number":1278,"context_line":"        self.assertEqual("},{"line_number":1279,"context_line":"            location[\u0027admin_metadata\u0027][na_utils.MANAGE_KEY], expected_meta_src)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_b5f04967","line":1276,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"        self.assertEqual(location[\u0027provider_location\u0027], self.TEST_NFS_EXPORT1)"},{"line_number":1277,"context_line":"        get_meta.assert_called_once_with(volume, drv.db)"},{"line_number":1278,"context_line":"        self.assertEqual("},{"line_number":1279,"context_line":"            location[\u0027admin_metadata\u0027][na_utils.MANAGE_KEY], expected_meta_src)"},{"line_number":1280,"context_line":"        drv._check_volume_type.assert_called_once_with("},{"line_number":1281,"context_line":"            volume, self.TEST_NFS_EXPORT1, test_file)"},{"line_number":1282,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_d5e795aa","line":1279,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"        get_meta.return_value \u003d {na_utils.MANAGE_KEY: \u0027old_path\u0027}"},{"line_number":1312,"context_line":"        drv.unmanage(volume)"},{"line_number":1313,"context_line":""},{"line_number":1314,"context_line":"        self.assertEqual(mock_log.call_count, 1)"},{"line_number":1315,"context_line":"        get_meta.assert_called_once_with(volume, drv.db)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_15011d39","line":1314,"updated":"2015-01-05 16:33:37.000000000","message":"Same as above.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"}],"cinder/tests/test_volume_utils.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3dbc16ed2f79e15786ce050a50a2ba1de52a8fbb","unresolved":false,"context_lines":[{"line_number":712,"context_line":"        admin_context.return_value \u003d fake_context"},{"line_number":713,"context_line":"        db \u003d mock.Mock(volume_admin_metadata_get\u003dmock.Mock())"},{"line_number":714,"context_line":"        volume_utils.get_volume_admin_metadata(volume, db)"},{"line_number":715,"context_line":"        self.assertEqual(admin_context.call_count, 1)"},{"line_number":716,"context_line":"        db.volume_admin_metadata_get.assert_called_once_with("},{"line_number":717,"context_line":"            fake_context, \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_95942de9","line":715,"updated":"2015-01-05 16:33:37.000000000","message":"Reverse the order of parameters here too.","commit_id":"7fced454f7f5181b7026a155378a510d0d6622d9"}],"cinder/tests/volume/drivers/netapp/dataontap/__init__.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"71e79455d92e925c9dd4290744b94ceb84ce6adb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027clinton\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_514e62c3","line":1,"updated":"2014-12-02 08:25:58.000000000","message":"Please, delete it","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"d1fd985d9762a89c29223e958ae4a56025d083f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027clinton\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_65bde567","line":1,"in_reply_to":"5a890539_514e62c3","updated":"2014-12-04 18:20:14.000000000","message":"Done","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"}],"cinder/tests/volume/drivers/netapp/eseries/__init__.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"71e79455d92e925c9dd4290744b94ceb84ce6adb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027clinton\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_714d1ec4","line":1,"updated":"2014-12-02 08:25:58.000000000","message":"Please, delete it. You don\u0027t need to add __author__ to any file","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"d1fd985d9762a89c29223e958ae4a56025d083f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027clinton\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_05ac2134","line":1,"in_reply_to":"5a890539_714d1ec4","updated":"2014-12-04 18:20:14.000000000","message":"Done","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"}],"cinder/utils.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":787,"context_line":"    \"\"\""},{"line_number":788,"context_line":"    result \u003d socket.getaddrinfo(hostname, None)[0]"},{"line_number":789,"context_line":"    (family, socktype, proto, canonname, sockaddr) \u003d result"},{"line_number":790,"context_line":"    LOG.debug(\u0027Asked to resolve hostname %(host)s and got IP %(ip)s\u0027 %"},{"line_number":791,"context_line":"              {\u0027host\u0027: hostname, \u0027ip\u0027: sockaddr[0]})"},{"line_number":792,"context_line":"    return sockaddr[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1ee3b2d9","line":790,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"18eda773bc778b1a7219597d9d316ddd51857edb","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        return False"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def resolve_hostname(hostname):"},{"line_number":778,"context_line":"    \"\"\"Resolves host name to IP address."},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"    Resolves a Host name (my.data.point.com) to an IP address (10.12.143.11)."}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_699b5066","line":777,"updated":"2015-01-06 12:42:26.000000000","message":"Maybe, it\u0027s a good candidate to be in oslo.utils.netutils","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":631,"context_line":""},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"def get_file_size(path):"},{"line_number":634,"context_line":"    \"\"\"Return the file size.\"\"\""},{"line_number":635,"context_line":"    return os.stat(path).st_size"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_70eb33b0","line":634,"updated":"2015-02-05 17:32:13.000000000","message":"Returns","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/volume/driver.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d85f8c6457a65b37c0049aa63b301a904cc376ab","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":696,"context_line":"        :param existing_ref: Existing volume to take under management"},{"line_number":697,"context_line":"        \"\"\""},{"line_number":698,"context_line":"        msg \u003d _(\"Manage existing volume not implemented.\")"},{"line_number":699,"context_line":"        raise NotImplementedError(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_0d2bf694","line":696,"updated":"2015-02-03 10:41:33.000000000","message":"A better description would be \"Driver-specific information used to identify a volume\".  It does not refer to an \"existing volume\" really.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":696,"context_line":"        :param existing_ref: Existing volume to take under management"},{"line_number":697,"context_line":"        \"\"\""},{"line_number":698,"context_line":"        msg \u003d _(\"Manage existing volume not implemented.\")"},{"line_number":699,"context_line":"        raise NotImplementedError(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_9056e75a","line":696,"in_reply_to":"da86d52c_0d2bf694","updated":"2015-02-05 17:32:13.000000000","message":"+1","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"820846dd75d8a69eff33d765f432c14b154af1d2","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        ManageExistingVolumeTypeMismatch, specifying a reason for the failure."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":696,"context_line":"        :param existing_ref: Existing volume to take under management"},{"line_number":697,"context_line":"        \"\"\""},{"line_number":698,"context_line":"        msg \u003d _(\"Manage existing volume not implemented.\")"},{"line_number":699,"context_line":"        raise NotImplementedError(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_ac72be0e","line":696,"in_reply_to":"da86d52c_0d2bf694","updated":"2015-02-04 07:45:20.000000000","message":"Will change it.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d85f8c6457a65b37c0049aa63b301a904cc376ab","unresolved":false,"context_lines":[{"line_number":704,"context_line":"        When calculating the size, round up to the next GB."},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        :param volume:       Cinder volume to manage"},{"line_number":707,"context_line":"        :param existing_ref: Existing volume to take under management"},{"line_number":708,"context_line":"        \"\"\""},{"line_number":709,"context_line":"        msg \u003d _(\"Manage existing volume not implemented.\")"},{"line_number":710,"context_line":"        raise NotImplementedError(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_cd071e1c","line":707,"updated":"2015-02-03 10:41:33.000000000","message":"Same","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/volume/drivers/netapp/dataontap/nfs_7mode.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        return self._is_share_eligible(share, volume[\u0027size\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _check_volume_type(self, volume, share, file_name):"},{"line_number":221,"context_line":"        \"\"\"Match volume type for share file.\"\"\""},{"line_number":222,"context_line":"        extra_specs \u003d na_utils.get_volume_extra_specs(volume)"},{"line_number":223,"context_line":"        qos_policy_group \u003d extra_specs.pop(\u0027netapp:qos_policy_group\u0027, None) \\"},{"line_number":224,"context_line":"            if extra_specs else None"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_d0e3ffa1","line":221,"updated":"2015-02-05 17:32:13.000000000","message":"Matches a volume type...","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/volume/drivers/netapp/dataontap/nfs_cmode.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f01ac22971ac5e82af4e5944e7b1fc8618b6720c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                                 qos_policy_group,"},{"line_number":146,"context_line":"                                                 file_name)"},{"line_number":147,"context_line":"            except Exception as e:"},{"line_number":148,"context_line":"                raise exception.ManageExistingVolumeTypeMismatch("},{"line_number":149,"context_line":"                    reason\u003d(_(\"Setting file qos policy group failed. %s\"), e))"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _clone_volume(self, volume_name, clone_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_54040b14","line":148,"updated":"2014-12-24 13:05:44.000000000","message":"Could we handle more specific exception here?","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"18eda773bc778b1a7219597d9d316ddd51857edb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                self.zapi_client.file_assign_qos(flex_vol_name,"},{"line_number":145,"context_line":"                                                 qos_policy_group,"},{"line_number":146,"context_line":"                                                 file_name)"},{"line_number":147,"context_line":"            except Exception as e:"},{"line_number":148,"context_line":"                raise exception.NetAppDriverException("},{"line_number":149,"context_line":"                    reason\u003d(_(\"Setting file qos policy group failed. %s\"), e))"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_49adb483","line":147,"updated":"2015-01-06 12:42:26.000000000","message":"Could we handle more specific exception and add logging?","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6392a1e527564445f297707b31cdc168d14b8fdd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from cinder.image import image_utils"},{"line_number":32,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":33,"context_line":"from cinder import utils"},{"line_number":34,"context_line":"from cinder.volume.drivers.netapp.dataontap.client.api import NaApiError"},{"line_number":35,"context_line":"from cinder.volume.drivers.netapp.dataontap.client import client_cmode"},{"line_number":36,"context_line":"from cinder.volume.drivers.netapp.dataontap import nfs_base"},{"line_number":37,"context_line":"from cinder.volume.drivers.netapp.dataontap import ssc_cmode"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_b37f1316","line":34,"updated":"2015-01-08 18:58:37.000000000","message":"According to a Hacking rules, please, import modules, not objects","commit_id":"dfc02a54b6e746a397ee0222583ab3b063cde208"}],"cinder/volume/drivers/netapp/utils.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"6fa65797a67398306ca41c5532d1e2c8b31b19ea","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"MANAGE_KEY \u003d \"original-source-name-when-managed\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"OBSOLETE_SSC_SPECS \u003d {\u0027netapp:raid_type\u0027: \u0027netapp_raid_type\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_eb4e5837","line":42,"updated":"2015-01-06 10:49:24.000000000","message":"This is only referenced in tests, should it be here?","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"}],"cinder/volume/drivers/nfs.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                vol_ref_share.partition(cfg_share)"},{"line_number":405,"context_line":"            if work_share \u003d\u003d cfg_share:"},{"line_number":406,"context_line":"                file_path \u003d file_path[1:]  # strip off leading path divider"},{"line_number":407,"context_line":"                LOG.debug(\"Found possible share %s; checking mount.\" %"},{"line_number":408,"context_line":"                          work_share)"},{"line_number":409,"context_line":"                nfs_mount \u003d self._get_mount_point_for_share(nfs_share)"},{"line_number":410,"context_line":"                vol_full_path \u003d os.path.join(nfs_mount, file_path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3eaf8e7e","line":407,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                if os.path.exists(vol_full_path) and not \\"},{"line_number":412,"context_line":"                   os.path.isdir(vol_full_path):"},{"line_number":413,"context_line":"                    LOG.debug(\"Found share %(share)s and vol %(path)s on \""},{"line_number":414,"context_line":"                              \"mount %(mnt)s\" %"},{"line_number":415,"context_line":"                              {\u0027share\u0027: nfs_share, \u0027path\u0027: file_path,"},{"line_number":416,"context_line":"                               \u0027mnt\u0027: nfs_mount})"},{"line_number":417,"context_line":"                    return nfs_share, nfs_mount, file_path"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1ebc92ba","line":414,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                               \u0027mnt\u0027: nfs_mount})"},{"line_number":417,"context_line":"                    return nfs_share, nfs_mount, file_path"},{"line_number":418,"context_line":"            else:"},{"line_number":419,"context_line":"                LOG.debug(\"vol_ref %(ref)s not on share %(share)s.\" %"},{"line_number":420,"context_line":"                          {\u0027ref\u0027: vol_ref_share, \u0027share\u0027: nfs_share})"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        raise exception.ManageExistingInvalidReference("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_feb8a6c9","line":419,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        (nfs_share, nfs_mount, vol_path) \u003d \\"},{"line_number":441,"context_line":"            self._get_share_mount_and_vol_from_vol_ref(existing_vol_ref)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        LOG.debug(\"Asked to manage NFS volume %(vol)s, with vol ref %(ref)s\" %"},{"line_number":444,"context_line":"                  {\u0027vol\u0027: volume[\u0027id\u0027],"},{"line_number":445,"context_line":"                   \u0027ref\u0027: existing_vol_ref[\u0027source-name\u0027]})"},{"line_number":446,"context_line":"        self._check_volume_type(volume, nfs_share, vol_path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1e957232","line":443,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        self._check_volume_type(volume, nfs_share, vol_path)"},{"line_number":447,"context_line":"        try:"},{"line_number":448,"context_line":"            if vol_path \u003d\u003d volume[\u0027name\u0027]:"},{"line_number":449,"context_line":"                LOG.debug(\"New Cinder volume %s name matches reference name: \""},{"line_number":450,"context_line":"                          \"no need to rename.\" % volume[\u0027name\u0027])"},{"line_number":451,"context_line":"            else:"},{"line_number":452,"context_line":"                src_vol \u003d os.path.join(nfs_mount, vol_path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3e986e69","line":449,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                dst_vol \u003d os.path.join(nfs_mount, volume[\u0027name\u0027])"},{"line_number":454,"context_line":"                self._execute(\"mv\", src_vol, dst_vol, run_as_root\u003dFalse,"},{"line_number":455,"context_line":"                              check_exit_code\u003dTrue)"},{"line_number":456,"context_line":"                LOG.debug(\"Setting newly managed Cinder volume name to %s\" %"},{"line_number":457,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":458,"context_line":"                self._set_rw_permissions_for_all(dst_vol)"},{"line_number":459,"context_line":"        except (OSError, putils.ProcessExecutionError) as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_7ea596a0","line":456,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                              \u0027msg\u0027: err})"},{"line_number":465,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_msg)"},{"line_number":466,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":467,"context_line":"        admin_metadata[na_utils.MANAGE_KEY] \u003d os.path.join(nfs_share, vol_path)"},{"line_number":468,"context_line":"        return {\u0027provider_location\u0027: nfs_share,"},{"line_number":469,"context_line":"                \u0027admin_metadata\u0027: admin_metadata}"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fe918647","line":467,"updated":"2014-12-22 19:38:07.000000000","message":"Why does generic code have netapp-specific code in it?","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                                 {\u0027name\u0027: existing_vol_ref[\u0027source-name\u0027]})"},{"line_number":499,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_message)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        LOG.debug(\"Reporting size of NFS volume ref %(ref)s as %(size)d GB.\" %"},{"line_number":502,"context_line":"                  {\u0027ref\u0027: existing_vol_ref[\u0027source-name\u0027], \u0027size\u0027: vol_size})"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        return vol_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_fe8a6619","line":501,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f01ac22971ac5e82af4e5944e7b1fc8618b6720c","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":515,"context_line":"        \"\"\""},{"line_number":516,"context_line":"        vol_str \u003d \u0027volume-%s\u0027 % volume[\u0027id\u0027]"},{"line_number":517,"context_line":"        vol_path \u003d os.path.join(volume[\u0027provider_location\u0027], vol_str)"},{"line_number":518,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":519,"context_line":"        LOG.info(_(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_946f53c3","line":516,"updated":"2014-12-24 13:05:44.000000000","message":"Should we use CONF.volume_name_template here?","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        vol_str \u003d \u0027volume-%s\u0027 % volume[\u0027id\u0027]"},{"line_number":517,"context_line":"        vol_path \u003d os.path.join(volume[\u0027provider_location\u0027], vol_str)"},{"line_number":518,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":519,"context_line":"        LOG.info(_(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""},{"line_number":520,"context_line":"                   \"current path \\\"%(cr)s\\\" is no longer being managed.\") %"},{"line_number":521,"context_line":"                 {\u0027ps\u0027: admin_metadata.get(na_utils.MANAGE_KEY) or vol_path,"},{"line_number":522,"context_line":"                  \u0027cr\u0027: vol_path})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_3e814efb","line":519,"updated":"2014-12-22 19:38:07.000000000","message":"LI","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        vol_path \u003d os.path.join(volume[\u0027provider_location\u0027], vol_str)"},{"line_number":518,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":519,"context_line":"        LOG.info(_(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""},{"line_number":520,"context_line":"                   \"current path \\\"%(cr)s\\\" is no longer being managed.\") %"},{"line_number":521,"context_line":"                 {\u0027ps\u0027: admin_metadata.get(na_utils.MANAGE_KEY) or vol_path,"},{"line_number":522,"context_line":"                  \u0027cr\u0027: vol_path})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_5e845a0a","line":520,"updated":"2014-12-22 19:38:07.000000000","message":"% -\u003e ,","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":519,"context_line":"        LOG.info(_(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""},{"line_number":520,"context_line":"                   \"current path \\\"%(cr)s\\\" is no longer being managed.\") %"},{"line_number":521,"context_line":"                 {\u0027ps\u0027: admin_metadata.get(na_utils.MANAGE_KEY) or vol_path,"},{"line_number":522,"context_line":"                  \u0027cr\u0027: vol_path})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9e796231","line":521,"updated":"2014-12-22 19:38:07.000000000","message":"Why does generic code have netapp-specific code in it?","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"6d9ceeea4c9f49234ef7af6362e52457502e21c1","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        self._ensure_shares_mounted()"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # Note we will handle possible DNS usage on share points."},{"line_number":399,"context_line":"        vol_ref_share \u003d self._convert_vol_ref_share_name_to_share_ip("},{"line_number":400,"context_line":"            vol_ref_name)"},{"line_number":401,"context_line":"        for nfs_share in self._mounted_shares:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_b07930fe","line":398,"updated":"2015-01-05 20:57:30.000000000","message":"Can this comment be expanded a bit?\n\nI\u0027m not following why this requires translating hostnames to IPs.","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"52d3fcc1c9f9d17711d6bc6e22297da085e3a4f5","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        self._ensure_shares_mounted()"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # Note we will handle possible DNS usage on share points."},{"line_number":399,"context_line":"        vol_ref_share \u003d self._convert_vol_ref_share_name_to_share_ip("},{"line_number":400,"context_line":"            vol_ref_name)"},{"line_number":401,"context_line":"        for nfs_share in self._mounted_shares:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_ab10d04e","line":398,"in_reply_to":"3a961159_ab9545e5","updated":"2015-01-06 10:40:11.000000000","message":"I think the code is fine, you just need to transcribe the above explanation into the comment so that people aren\u0027t left scratching their head when reading through the code","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"7b51ad4f52e5caf43b7d822f8594b856813c0973","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        self._ensure_shares_mounted()"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        # Note we will handle possible DNS usage on share points."},{"line_number":399,"context_line":"        vol_ref_share \u003d self._convert_vol_ref_share_name_to_share_ip("},{"line_number":400,"context_line":"            vol_ref_name)"},{"line_number":401,"context_line":"        for nfs_share in self._mounted_shares:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_ab9545e5","line":398,"in_reply_to":"3a961159_b07930fe","updated":"2015-01-05 21:27:31.000000000","message":"If a share was declared as \n\n1.2.3.4:/a/b/c \n\nin the nfs_shares_config file, but the admin tries to manage the file located at: \n\nmy.hostname.com:/a/b/c/d.vol\n\nthis might cause a lookup miss on line 401 when searching self._mounted_shares to see if we have an existing mount that would work to access the volume-to-be-managed (string compare instead of IP comparison). \n\nWe could attempt the direct string match first, and only resolve the hostname if there wasn\u0027t a match on line 401 if you think that would be cleaner... However, the more I think through this it\u0027s also possible that the admin used a hostname in the Cinder conf and an IP in the \u0027manage\u0027 call which would still fail (without some sort of reverse lookup). I\u0027m curious to what you think about this Eric?","commit_id":"db36b00dd3e1aada583eb9bd8ed6e6698b12d8b2"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"ffaaafe51e882bfa2c3376745837b929f124f700","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import utils as vutils"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"VERSION \u003d \u00271.2.0\u0027"},{"line_number":36,"context_line":"MANAGE_ORIGINAL_NAME_ADMIN_METADATA \u003d \u0027original-source-name-when-managed\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_94afa89c","line":36,"updated":"2015-01-15 09:21:57.000000000","message":"1. I wouldn\u0027t save this for every imported volume just so that it can be printed on unmanage.\n\n2. If you decide to do it anyway, put it in common code so that the behavior is the same across all drivers.","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":7860,"name":"Ryan Lucio","email":"ryan.lucio@fireeye.com","username":"rlucio"},"change_message_id":"2f7a9ace3bb8b617550b9f92e27254f32e7f705e","unresolved":false,"context_lines":[{"line_number":362,"context_line":"    def _convert_vol_ref_share_name_to_share_ip(self, vol_ref):"},{"line_number":363,"context_line":"        \"\"\"Convert the share point name to an IP address"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        The volume reference may have a DNS name portion in hte share name."},{"line_number":366,"context_line":"        Convert that to an IP address and then restore the entire path."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        :param vol_ref:  A volume reference that may have share in DNS format."}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_2205e80f","line":365,"updated":"2015-01-14 23:03:53.000000000","message":"hte -\u003e the","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"07a314db2f187c59709b03ed3d496f69650e27d3","unresolved":false,"context_lines":[{"line_number":362,"context_line":"    def _convert_vol_ref_share_name_to_share_ip(self, vol_ref):"},{"line_number":363,"context_line":"        \"\"\"Convert the share point name to an IP address"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        The volume reference may have a DNS name portion in hte share name."},{"line_number":366,"context_line":"        Convert that to an IP address and then restore the entire path."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        :param vol_ref:  A volume reference that may have share in DNS format."}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_a37c7072","line":365,"in_reply_to":"3a961159_2205e80f","updated":"2015-01-15 07:27:16.000000000","message":"done","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":7860,"name":"Ryan Lucio","email":"ryan.lucio@fireeye.com","username":"rlucio"},"change_message_id":"2f7a9ace3bb8b617550b9f92e27254f32e7f705e","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        :return:         A volume reference where share is in IP format."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        # First strip out share and convert to IP format."},{"line_number":372,"context_line":"        vol_ref_share_ip \u003d utils.resolve_hostname(vol_ref.split(\u0027:\u0027)[0])"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        # Now place back into volume reference."},{"line_number":375,"context_line":"        vol_ref_share \u003d vol_ref_share_ip + \u0027:\u0027 + vol_ref.split(\u0027:\u0027)[1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_02870c62","line":372,"updated":"2015-01-14 23:03:53.000000000","message":"since you end up using both sides of the split vol_ref, imho you should just do that once and save the array.  just a style thing so the pattern can be managed in a single place.","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"07a314db2f187c59709b03ed3d496f69650e27d3","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        :return:         A volume reference where share is in IP format."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        # First strip out share and convert to IP format."},{"line_number":372,"context_line":"        vol_ref_share_ip \u003d utils.resolve_hostname(vol_ref.split(\u0027:\u0027)[0])"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        # Now place back into volume reference."},{"line_number":375,"context_line":"        vol_ref_share \u003d vol_ref_share_ip + \u0027:\u0027 + vol_ref.split(\u0027:\u0027)[1]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_038b8469","line":372,"in_reply_to":"3a961159_02870c62","updated":"2015-01-15 07:27:16.000000000","message":"done","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"ffaaafe51e882bfa2c3376745837b929f124f700","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                LOG.debug(\"Setting newly managed Cinder volume name to %s\","},{"line_number":462,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":463,"context_line":"                self._set_rw_permissions_for_all(dst_vol)"},{"line_number":464,"context_line":"        except (OSError, putils.ProcessExecutionError) as err:"},{"line_number":465,"context_line":"            exception_msg \u003d (_(\"Failed to manage existing volume %(name)s,\""},{"line_number":466,"context_line":"                               \"because rename operation failed: Error msg: \""},{"line_number":467,"context_line":"                               \"%(msg)s.\") %"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_f4cc6c63","line":464,"updated":"2015-01-15 09:21:57.000000000","message":"Why isn\u0027t the try/except only around the rename, instead of including lines 453-457 in it?","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"657c18d909e030b5ce1450aaf77350bafe5af23c","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                LOG.debug(\"Setting newly managed Cinder volume name to %s\","},{"line_number":462,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":463,"context_line":"                self._set_rw_permissions_for_all(dst_vol)"},{"line_number":464,"context_line":"        except (OSError, putils.ProcessExecutionError) as err:"},{"line_number":465,"context_line":"            exception_msg \u003d (_(\"Failed to manage existing volume %(name)s,\""},{"line_number":466,"context_line":"                               \"because rename operation failed: Error msg: \""},{"line_number":467,"context_line":"                               \"%(msg)s.\") %"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_8cbbf5bc","line":464,"in_reply_to":"3a961159_f4cc6c63","updated":"2015-01-16 10:45:54.000000000","message":"I will put this around both rename and _set_rw_permission","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":7860,"name":"Ryan Lucio","email":"ryan.lucio@fireeye.com","username":"rlucio"},"change_message_id":"2f7a9ace3bb8b617550b9f92e27254f32e7f705e","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        Does not delete the underlying backend storage object. A log entry"},{"line_number":516,"context_line":"        will be made to notify the Admin that the volume is no longer being"},{"line_number":517,"context_line":"        managed. Should driver specific work be required, the driver"},{"line_number":518,"context_line":"        should override this method."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        :param volume: Cinder volume to unmanage"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_6253706c","line":517,"updated":"2015-01-14 23:03:53.000000000","message":"I\u0027m guessing this doc line about \"Should driver specific work...\" comes from the base class driver?  Probably should be removed","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"07a314db2f187c59709b03ed3d496f69650e27d3","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        Does not delete the underlying backend storage object. A log entry"},{"line_number":516,"context_line":"        will be made to notify the Admin that the volume is no longer being"},{"line_number":517,"context_line":"        managed. Should driver specific work be required, the driver"},{"line_number":518,"context_line":"        should override this method."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        :param volume: Cinder volume to unmanage"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_2388806a","line":517,"in_reply_to":"3a961159_6253706c","updated":"2015-01-15 07:27:16.000000000","message":"done","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"4ecdfd19c59336223084811e5b757fd7e19bda7b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import utils as vutils"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"VERSION \u003d \u00271.2.0\u0027"},{"line_number":36,"context_line":"MANAGE_ORIGINAL_NAME_ADMIN_METADATA \u003d \u0027original-source-name-when-managed\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_39a13da9","line":36,"updated":"2015-01-18 11:28:00.000000000","message":"Still didn\u0027t respond to my comment from patch set 8.  I don\u0027t see the point in having only NFS store the original name, and only storing it so that it can be printed if the volume is unmanaged.","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"2e9ffe08808c174c04e5bcf17a1f118b72251889","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from cinder.volume import utils as vutils"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"VERSION \u003d \u00271.2.0\u0027"},{"line_number":36,"context_line":"MANAGE_ORIGINAL_NAME_ADMIN_METADATA \u003d \u0027original-source-name-when-managed\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_4f1c7167","line":36,"in_reply_to":"3a961159_39a13da9","updated":"2015-01-19 10:07:50.000000000","message":"Avishay, we store the original name for drivers used by NetApp, eg. iscsi drvers. This is to let the admin know at the time of unmanaging a volume as to what the original name of the volume was when it got managed. It helps in easily correlating human readable names with the auto-generated uid and also in audit purpose.","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b75f4bcfb757a89c61633170f3f7637806fae8e3","unresolved":false,"context_lines":[{"line_number":493,"context_line":"            self._get_share_mount_and_vol_from_vol_ref(existing_vol_ref)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        try:"},{"line_number":496,"context_line":"            LOG.debug(\"Asked to get size of NFS vol_ref %s.\" %"},{"line_number":497,"context_line":"                      existing_vol_ref[\u0027source-name\u0027])"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            file_path \u003d os.path.join(nfs_mount, vol_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_69b042fe","line":496,"updated":"2015-01-19 14:59:48.000000000","message":"According to the logging guidelines, please change % \u003d\u003e ,","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"3983bf7aefaaa39c9834f60ecc26be8bbc8f1249","unresolved":false,"context_lines":[{"line_number":493,"context_line":"            self._get_share_mount_and_vol_from_vol_ref(existing_vol_ref)"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        try:"},{"line_number":496,"context_line":"            LOG.debug(\"Asked to get size of NFS vol_ref %s.\" %"},{"line_number":497,"context_line":"                      existing_vol_ref[\u0027source-name\u0027])"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            file_path \u003d os.path.join(nfs_mount, vol_path)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_d3838a53","line":496,"in_reply_to":"3a961159_69b042fe","updated":"2015-01-20 07:26:06.000000000","message":"done","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b75f4bcfb757a89c61633170f3f7637806fae8e3","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            file_size \u003d float(utils.get_file_size(file_path)) / units.Gi"},{"line_number":501,"context_line":"            vol_size \u003d int(math.ceil(file_size))"},{"line_number":502,"context_line":"        except (OSError, ValueError):"},{"line_number":503,"context_line":"            exception_message \u003d (_(\"Failed to manage existing volume \""},{"line_number":504,"context_line":"                                   \"%(name)s, because of error in getting \""},{"line_number":505,"context_line":"                                   \"volume size.\") %"},{"line_number":506,"context_line":"                                 {\u0027name\u0027: existing_vol_ref[\u0027source-name\u0027]})"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_49a2a6ae","line":503,"updated":"2015-01-19 14:59:48.000000000","message":"Logging of catched exception will be useful for troubleshooting","commit_id":"2329bdba918ce7b0bc6db322b5b8c248c1192002"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                     doc_html)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def _convert_vol_ref_share_name_to_share_ip(self, vol_ref):"},{"line_number":363,"context_line":"        \"\"\"Convert the share point name to an IP address"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        The volume reference may have a DNS name portion in the share name."},{"line_number":366,"context_line":"        Convert that to an IP address and then restore the entire path."}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_70a3334f","line":363,"updated":"2015-02-05 17:32:13.000000000","message":"Converts","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        The volume reference may have a DNS name portion in the share name."},{"line_number":366,"context_line":"        Convert that to an IP address and then restore the entire path."},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        :param vol_ref:  A volume reference that may have share in DNS format."},{"line_number":369,"context_line":"        :return:         A volume reference where share is in IP format."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        # First strip out share and convert to IP format."}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_1066772a","line":368,"updated":"2015-02-05 17:32:13.000000000","message":"Same description noted by Eric.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        (with possible path) from the given volume reference. Raise exception"},{"line_number":386,"context_line":"        if unsuccessful."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        :param vol_ref: existing volume reference string"},{"line_number":389,"context_line":"        :return:        NFS Share, NFS mount, volume path or raise error"},{"line_number":390,"context_line":"        \"\"\""},{"line_number":391,"context_line":"        # Check that the reference is valid."}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_306b7bf3","line":388,"updated":"2015-02-05 17:32:13.000000000","message":"Same description noted by Eric.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d85f8c6457a65b37c0049aa63b301a904cc376ab","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                          work_share)"},{"line_number":416,"context_line":"                nfs_mount \u003d self._get_mount_point_for_share(nfs_share)"},{"line_number":417,"context_line":"                vol_full_path \u003d os.path.join(nfs_mount, file_path)"},{"line_number":418,"context_line":"                if os.path.exists(vol_full_path) and not \\"},{"line_number":419,"context_line":"                   os.path.isdir(vol_full_path):"},{"line_number":420,"context_line":"                    LOG.debug(\"Found share %(share)s and vol %(path)s on \""},{"line_number":421,"context_line":"                              \"mount %(mnt)s\","}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_ada3ca9c","line":418,"updated":"2015-02-03 10:41:33.000000000","message":"Should be os.path.isfile(vol_full_path) instead of exists \u0026 not isdir?","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"820846dd75d8a69eff33d765f432c14b154af1d2","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                          work_share)"},{"line_number":416,"context_line":"                nfs_mount \u003d self._get_mount_point_for_share(nfs_share)"},{"line_number":417,"context_line":"                vol_full_path \u003d os.path.join(nfs_mount, file_path)"},{"line_number":418,"context_line":"                if os.path.exists(vol_full_path) and not \\"},{"line_number":419,"context_line":"                   os.path.isdir(vol_full_path):"},{"line_number":420,"context_line":"                    LOG.debug(\"Found share %(share)s and vol %(path)s on \""},{"line_number":421,"context_line":"                              \"mount %(mnt)s\","}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_ec0bd68b","line":418,"in_reply_to":"da86d52c_ada3ca9c","updated":"2015-02-04 07:45:20.000000000","message":"Will change it.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":433,"context_line":"    def manage_existing(self, volume, existing_vol_ref):"},{"line_number":434,"context_line":"        \"\"\"Manages an existing volume."},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        The specified Cinder volume is to be taken into Cinder management"},{"line_number":437,"context_line":"        The driver will verify its existence and then rename it to the"},{"line_number":438,"context_line":"        new Cinder volume name. It is expected that the existing volume"},{"line_number":439,"context_line":"        reference is an NFS share point and some [/path]/volume;"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_7016d356","line":436,"updated":"2015-02-05 17:32:13.000000000","message":"... Cinder management.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":441,"context_line":"           or 10.10.32.1:/openstack/some_directory/vol_to_manage"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        :param volume:           Cinder volume to manage"},{"line_number":444,"context_line":"        :param existing_vol_ref: Existing volume to take under management"},{"line_number":445,"context_line":"        \"\"\""},{"line_number":446,"context_line":"        # Attempt to find NFS share, NFS mount, and volume path from vol_ref."},{"line_number":447,"context_line":"        (nfs_share, nfs_mount, vol_path) \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_f3180d77","line":444,"updated":"2015-02-05 17:32:13.000000000","message":"Same description noted by Eric.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":477,"context_line":"                \u0027admin_metadata\u0027: admin_metadata}"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def _check_volume_type(self, volume, share, file_name):"},{"line_number":480,"context_line":"        \"\"\"Match volume type for share file.\"\"\""},{"line_number":481,"context_line":"        pass"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def manage_existing_get_size(self, volume, existing_vol_ref):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_89176344","line":480,"updated":"2015-02-05 17:32:13.000000000","message":"Matches","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d544a32777c7e6b390cf9747c74cbaafcd995e32","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        pass"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def manage_existing_get_size(self, volume, existing_vol_ref):"},{"line_number":484,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        When calculating the size, round up to the next GB."},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_c92cfb9b","line":484,"updated":"2015-02-05 17:32:13.000000000","message":"Returns the","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d85f8c6457a65b37c0049aa63b301a904cc376ab","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":526,"context_line":"        LOG.info(_LI(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""},{"line_number":527,"context_line":"                     \"current path \\\"%(cr)s\\\" is no longer being managed.\"),"},{"line_number":528,"context_line":"                 {\u0027ps\u0027: admin_metadata.get(MANAGE_ORIGINAL_NAME_ADMIN_METADATA)"},{"line_number":529,"context_line":"                  or vol_path, \u0027cr\u0027: vol_path})"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_cd471d4a","line":528,"updated":"2015-02-03 10:41:33.000000000","message":"admin_metadata.get(MANAGE_ORIGINAL_NAME_ADMIN_METADATA, vol_path)","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"820846dd75d8a69eff33d765f432c14b154af1d2","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        admin_metadata \u003d vutils.get_volume_admin_metadata(volume, self.db)"},{"line_number":526,"context_line":"        LOG.info(_LI(\"Cinder NFS volume with original path \\\"%(ps)s\\\" and \""},{"line_number":527,"context_line":"                     \"current path \\\"%(cr)s\\\" is no longer being managed.\"),"},{"line_number":528,"context_line":"                 {\u0027ps\u0027: admin_metadata.get(MANAGE_ORIGINAL_NAME_ADMIN_METADATA)"},{"line_number":529,"context_line":"                  or vol_path, \u0027cr\u0027: vol_path})"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_4c2862e2","line":528,"in_reply_to":"da86d52c_cd471d4a","updated":"2015-02-04 07:45:20.000000000","message":"This should be the name of the exported file before it got managed, but not the latest name/path. This should always contain some value, used get() to avoid any unnecessary runtime errors if db gets manipulated somehow.\n\nBut I guess there should not be any harm if we display current path incase of absent value.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":454,"context_line":"    def _ensure_share_mounted(self, share):"},{"line_number":455,"context_line":"        raise NotImplementedError()"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    def manage_existing(self, volume, existing_vol_ref):"},{"line_number":458,"context_line":"        \"\"\"Manages an existing volume."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        The specified Cinder volume is to be taken into Cinder management"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_1ed9f256","line":457,"updated":"2014-12-22 19:38:07.000000000","message":"What is the point of adding these definitions here, where they are already defined in the parent class?  If you want to add more details like the params, add it to driver.py.","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":482,"context_line":"    def unmanage(self, volume):"},{"line_number":483,"context_line":"        \"\"\"Removes the specified volume from Cinder management."},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        Does not delete the underlying backend storage object. A log entry"},{"line_number":486,"context_line":"        will be made to notify the Admin that the volume is no longer being"},{"line_number":487,"context_line":"        managed. Should driver specific work be required, the driver"},{"line_number":488,"context_line":"        should override this method."}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_9ee4020e","line":485,"updated":"2014-12-22 19:38:07.000000000","message":"The implementation does not require a log entry.","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"24930b155f086236cbb12ccde4e50153b2fed2bc","unresolved":false,"context_lines":[{"line_number":485,"context_line":"        Does not delete the underlying backend storage object. A log entry"},{"line_number":486,"context_line":"        will be made to notify the Admin that the volume is no longer being"},{"line_number":487,"context_line":"        managed. Should driver specific work be required, the driver"},{"line_number":488,"context_line":"        should override this method."},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":491,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_5eb61afa","line":488,"updated":"2014-12-22 19:38:07.000000000","message":"No, the driver MUST override this method, because you changed it from \u0027pass\u0027 to \u0027raise NotImplementedError\u0027.  Why?","commit_id":"1cd7818620514c0bcf20a0ceff5f3c81162ebe18"}],"cinder/volume/utils.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"71e79455d92e925c9dd4290744b94ceb84ce6adb","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    return new_host"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":511,"context_line":"    \"\"\"Provides admin metdadata associated with volume.\"\"\""},{"line_number":512,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":513,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b1622614","line":510,"updated":"2014-12-02 08:25:58.000000000","message":"I don\u0027t think that it\u0027s good place for it here","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"d1fd985d9762a89c29223e958ae4a56025d083f7","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    return new_host"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":511,"context_line":"    \"\"\"Provides admin metdadata associated with volume.\"\"\""},{"line_number":512,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":513,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_85d49147","line":510,"in_reply_to":"5a890539_b1622614","updated":"2014-12-04 18:20:14.000000000","message":"where would you recommend it going? this method is used by all 5 of our drivers, so it makes sense to have a single implementation in a utils-like class. \n\nsee https://review.openstack.org/#/c/138111/ and https://review.openstack.org/#/c/138093/ for where else it is referenced.","commit_id":"26fda976c40e6e4c1ddbc55986ac32ae92f47ab5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"ffaaafe51e882bfa2c3376745837b929f124f700","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    return new_host"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":545,"context_line":"    \"\"\"Provides admin metdadata associated with volume.\"\"\""},{"line_number":546,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":547,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_f4462c20","line":544,"updated":"2015-01-15 09:21:57.000000000","message":"I don\u0027t like this function - it hides the fact that we are elevating the context.  We should always be aware of it.","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"657c18d909e030b5ce1450aaf77350bafe5af23c","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    return new_host"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":545,"context_line":"    \"\"\"Provides admin metdadata associated with volume.\"\"\""},{"line_number":546,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":547,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_cc9eddb7","line":544,"in_reply_to":"3a961159_f4462c20","updated":"2015-01-16 10:45:54.000000000","message":"The method name get_admin_context suggests we are elevating the context. I can mention it in method doc if you want.\n\nAlso to be clear: You dont like the method get_volume_admin_metadata or get_admin_context?","commit_id":"ac81370028dbc180f227569874efae975dee3726"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d0c3e5410aab539037ef61cf3c6f908f62cc75eb","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    return new_host"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":545,"context_line":"    \"\"\"Provides admin metdadata associated with volume."},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    Requires elevated context."}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_246e2797","line":544,"updated":"2015-02-03 19:20:16.000000000","message":"Don\u0027t get the point of this. You\u0027re wrapping a a wrapper. Just use self.db from the driver.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"820846dd75d8a69eff33d765f432c14b154af1d2","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    return new_host"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":545,"context_line":"    \"\"\"Provides admin metdadata associated with volume."},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    Requires elevated context."}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_0ce66ae8","line":544,"in_reply_to":"da86d52c_246e2797","updated":"2015-02-04 07:45:20.000000000","message":"Its just reducing a 2 line routine to single line and providing admin context to the db api method. Saves drivers from import and everytime getting admin context to be passed.","commit_id":"80eb5deca2ecf172d54d951a8312497ae1600b3c"}]}
