)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     rajinir \u003crajini_ram@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-19 10:40:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Volume manage/unmanage support for Eqlx driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow cinder to manage existing"},{"line_number":10,"context_line":"volumes on Dell Equallogic backend and also"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_0be055f9","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":39},"updated":"2016-05-20 15:00:54.000000000","message":"Dell PS","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     rajinir \u003crajini_ram@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-19 10:40:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Volume manage/unmanage support for Eqlx driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow cinder to manage existing"},{"line_number":10,"context_line":"volumes on Dell Equallogic backend and also"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_83c6e965","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":39},"in_reply_to":"bab6814e_0be055f9","updated":"2016-05-20 15:46:48.000000000","message":"Ok. I will add in paranthesis","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Volume manage/unmanage support for Eqlx driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow cinder to manage existing"},{"line_number":10,"context_line":"volumes on Dell Equallogic backend and also"},{"line_number":11,"context_line":"unmanage them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_6b22c153","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":26},"updated":"2016-05-20 15:00:54.000000000","message":"PS","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Volume manage/unmanage support for Eqlx driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change will allow cinder to manage existing"},{"line_number":10,"context_line":"volumes on Dell Equallogic backend and also"},{"line_number":11,"context_line":"unmanage them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bab6814e_a3a7adbb","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":26},"in_reply_to":"bab6814e_6b22c153","updated":"2016-05-20 15:46:48.000000000","message":"I will add in paranthesis","commit_id":"97be880ad96174658a1e198525c04cebb5687864"}],"cinder/tests/unit/test_eqlx.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            self.assertRaises(exception.VolumeNotFound,"},{"line_number":263,"context_line":"                              self.driver._get_volume_info, self.volume_name)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_manage_existing(self):"},{"line_number":266,"context_line":"        ref \u003d {\u0027source-name\u0027: self.volume_name}"},{"line_number":267,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":268,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_0bea15ac","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":27},"updated":"2016-05-20 15:00:54.000000000","message":"test_manage_existing -\u003e test_manage_existing_volume","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            self.assertRaises(exception.VolumeNotFound,"},{"line_number":263,"context_line":"                              self.driver._get_volume_info, self.volume_name)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_manage_existing(self):"},{"line_number":266,"context_line":"        ref \u003d {\u0027source-name\u0027: self.volume_name}"},{"line_number":267,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":268,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_038039f6","line":265,"range":{"start_line":265,"start_character":8,"end_line":265,"end_character":27},"in_reply_to":"bab6814e_0bea15ac","updated":"2016-05-20 15:46:48.000000000","message":"This name matches with the API name for easy reference. I would like to leave it like it is","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                model_update \u003d self.driver.manage_existing(self.volume, ref)"},{"line_number":274,"context_line":"                self.assertEqual(self._model_update, model_update)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"},{"line_number":278,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":279,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6bfac176","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":40},"updated":"2016-05-20 15:00:54.000000000","message":"test_manage_existing_invalid_ref -\u003e test_manage_existing_volume_invalid_ref","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                model_update \u003d self.driver.manage_existing(self.volume, ref)"},{"line_number":274,"context_line":"                self.assertEqual(self._model_update, model_update)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"},{"line_number":278,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":279,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_437ec119","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":40},"in_reply_to":"bab6814e_6bfac176","updated":"2016-05-20 15:46:48.000000000","message":"ditto","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":282,"context_line":"                              self.driver.manage_existing, self.volume, ref)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":285,"context_line":"        ref \u003d {\u0027source-name\u0027: self.volume_name}"},{"line_number":286,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":287,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_abf02992","line":284,"range":{"start_line":284,"start_character":8,"end_line":284,"end_character":37},"updated":"2016-05-20 15:00:54.000000000","message":"ditto","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            self.assertRaises(exception.ManageExistingInvalidReference,"},{"line_number":282,"context_line":"                              self.driver.manage_existing, self.volume, ref)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def test_manage_existing_get_size(self):"},{"line_number":285,"context_line":"        ref \u003d {\u0027source-name\u0027: self.volume_name}"},{"line_number":286,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":287,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_c305917a","line":284,"range":{"start_line":284,"start_character":8,"end_line":284,"end_character":37},"in_reply_to":"bab6814e_abf02992","updated":"2016-05-20 15:46:48.000000000","message":"ditto","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"3f5a4fe3046de5c43975b95accdb21f65379d952","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            size \u003d self.driver.manage_existing_get_size(self.volume, ref)"},{"line_number":290,"context_line":"            self.assertEqual(float(\u00275.0\u0027), size)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def test_manage_existing_get_size_invalid_ref(self):"},{"line_number":293,"context_line":"        \"\"\"Error on manage with invalid reference.\"\"\""},{"line_number":294,"context_line":"        ref \u003d {}"},{"line_number":295,"context_line":"        self.assertRaises(exception.ManageExistingInvalidReference,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_eb2cf103","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":49},"updated":"2016-05-20 15:00:54.000000000","message":"ditto","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"b1d1c6882134b87d584578fc21c993c1180d8ac7","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            size \u003d self.driver.manage_existing_get_size(self.volume, ref)"},{"line_number":290,"context_line":"            self.assertEqual(float(\u00275.0\u0027), size)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def test_manage_existing_get_size_invalid_ref(self):"},{"line_number":293,"context_line":"        \"\"\"Error on manage with invalid reference.\"\"\""},{"line_number":294,"context_line":"        ref \u003d {}"},{"line_number":295,"context_line":"        self.assertRaises(exception.ManageExistingInvalidReference,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_03331963","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":49},"in_reply_to":"bab6814e_eb2cf103","updated":"2016-05-20 15:46:48.000000000","message":"ditto","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":253,"context_line":"            mock_eql_execute.return_value \u003d self.fake_volume_output"},{"line_number":254,"context_line":"            data \u003d self.driver._get_volume_info(self.volume)"},{"line_number":255,"context_line":"            self.assertEqual(self.fake_volume_info, data)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def test_get_volume_info_negative(self):"},{"line_number":258,"context_line":"        with mock.patch.object(self.driver,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_c8f25a9a","line":255,"updated":"2016-06-06 07:41:38.000000000","message":"We can also assert for the command passed to _eql_execute.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":253,"context_line":"            mock_eql_execute.return_value \u003d self.fake_volume_output"},{"line_number":254,"context_line":"            data \u003d self.driver._get_volume_info(self.volume)"},{"line_number":255,"context_line":"            self.assertEqual(self.fake_volume_info, data)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    def test_get_volume_info_negative(self):"},{"line_number":258,"context_line":"        with mock.patch.object(self.driver,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_00f47658","line":255,"in_reply_to":"7aa08908_c8f25a9a","updated":"2016-06-08 19:55:34.000000000","message":"Nice to have, will add","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                mock_volume_info.return_value \u003d self.fake_volume_info"},{"line_number":272,"context_line":"                mock_eql_execute.return_value \u003d self.fake_iqn_return"},{"line_number":273,"context_line":"                model_update \u003d self.driver.manage_existing(self.volume, ref)"},{"line_number":274,"context_line":"                self.assertEqual(self._model_update, model_update)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_c8e53aa9","line":274,"updated":"2016-06-06 07:41:38.000000000","message":"We can also assert for the commands passed to _eql_execute.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                mock_volume_info.return_value \u003d self.fake_volume_info"},{"line_number":272,"context_line":"                mock_eql_execute.return_value \u003d self.fake_iqn_return"},{"line_number":273,"context_line":"                model_update \u003d self.driver.manage_existing(self.volume, ref)"},{"line_number":274,"context_line":"                self.assertEqual(self._model_update, model_update)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_a0de42da","line":274,"in_reply_to":"7aa08908_c8e53aa9","updated":"2016-06-08 19:55:34.000000000","message":"ditto","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"},{"line_number":278,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":279,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":280,"context_line":"            mock_eql_execute.return_value \u003d self.fake_iqn_return"},{"line_number":281,"context_line":"            self.assertRaises(exception.InvalidInput,"},{"line_number":282,"context_line":"                              self.driver.manage_existing, self.volume, ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8802123d","line":279,"updated":"2016-06-06 07:41:38.000000000","message":"I don\u0027t think we need this mock.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    def test_manage_existing_invalid_ref(self):"},{"line_number":277,"context_line":"        ref \u003d {}"},{"line_number":278,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":279,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":280,"context_line":"            mock_eql_execute.return_value \u003d self.fake_iqn_return"},{"line_number":281,"context_line":"            self.assertRaises(exception.InvalidInput,"},{"line_number":282,"context_line":"                              self.driver.manage_existing, self.volume, ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_80d986f5","line":279,"in_reply_to":"7aa08908_8802123d","updated":"2016-06-08 19:55:34.000000000","message":"will remove","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":301,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":302,"context_line":"            mock_eql_execute.return_value \u003d None"},{"line_number":303,"context_line":"            self.driver.unmanage(self.volume)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def test_initialize_connection(self):"},{"line_number":306,"context_line":"        volume \u003d {\u0027name\u0027: self.volume_name}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8825f2c3","line":303,"updated":"2016-06-06 07:41:38.000000000","message":"We can also assert for the command passed to _eql_execute.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"17e5b493ac08342e394367bf70cb51a46c748f3e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":254,"context_line":"            mock_eql_execute.return_value \u003d self.fake_volume_output"},{"line_number":255,"context_line":"            data \u003d self.driver._get_volume_info(self.volume)"},{"line_number":256,"context_line":"            mock_eql_execute.assert_called_with(*attrs)"},{"line_number":257,"context_line":"            self.assertEqual(self.fake_volume_info, data)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_get_volume_info_negative(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_f14c909f","line":256,"range":{"start_line":256,"start_character":29,"end_line":256,"end_character":47},"updated":"2016-06-09 05:11:25.000000000","message":"assert_called_once_with is even better","commit_id":"62b0acb5035beab5651e97eb29515a6dc129e064"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"17e5b493ac08342e394367bf70cb51a46c748f3e","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                mock_volume_info.return_value \u003d self.fake_volume_info"},{"line_number":276,"context_line":"                mock_eql_execute.return_value \u003d self.fake_iqn_return"},{"line_number":277,"context_line":"                model_update \u003d self.driver.manage_existing(self.volume, ref)"},{"line_number":278,"context_line":"                mock_eql_execute.assert_called_with(*attrs)"},{"line_number":279,"context_line":"                self.assertEqual(self._model_update, model_update)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_manage_existing_invalid_ref(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_f133f011","line":278,"range":{"start_line":278,"start_character":33,"end_line":278,"end_character":51},"updated":"2016-06-09 05:11:25.000000000","message":"same comment","commit_id":"62b0acb5035beab5651e97eb29515a6dc129e064"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"17e5b493ac08342e394367bf70cb51a46c748f3e","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_unmanage(self):"},{"line_number":302,"context_line":"        with mock.patch.object(self.driver,"},{"line_number":303,"context_line":"                               \u0027_eql_execute\u0027) as mock_eql_execute:"},{"line_number":304,"context_line":"            mock_eql_execute.return_value \u003d None"},{"line_number":305,"context_line":"            self.driver.unmanage(self.volume)"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_bc2bff80","line":303,"updated":"2016-06-09 05:11:25.000000000","message":"It\u0027s better to mock _set_volume_description and assert whether it is called with proper arguments.\n\nOr as I suggested in the last patch, we can assert for _eql_execute call.","commit_id":"62b0acb5035beab5651e97eb29515a6dc129e064"}],"cinder/volume/drivers/eqlx.py":[{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"774f281fd75ad0a48c0132068588aecec9cd60e5","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def _get_existing_volume_ref_name(self, ref):"},{"line_number":661,"context_line":"        existing_volume_name \u003d None"},{"line_number":662,"context_line":"        if \u0027source-name\u0027 in ref:"},{"line_number":663,"context_line":"            existing_volume_name \u003d ref[\u0027source-name\u0027]"},{"line_number":664,"context_line":"        elif \u0027source-id\u0027 in ref:"},{"line_number":665,"context_line":"            existing_volume_name \u003d ref[\u0027source-id\u0027]"},{"line_number":666,"context_line":"        else:"},{"line_number":667,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":668,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a4a09344","line":665,"range":{"start_line":662,"start_character":0,"end_line":665,"end_character":51},"updated":"2016-05-19 16:05:30.000000000","message":"So this looks for the volume name no matter what they specify as an ref type? Is volume name always unique?","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"a4382392d0b6c28b857793d16dd83f5b385eb44c","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def _get_existing_volume_ref_name(self, ref):"},{"line_number":661,"context_line":"        existing_volume_name \u003d None"},{"line_number":662,"context_line":"        if \u0027source-name\u0027 in ref:"},{"line_number":663,"context_line":"            existing_volume_name \u003d ref[\u0027source-name\u0027]"},{"line_number":664,"context_line":"        elif \u0027source-id\u0027 in ref:"},{"line_number":665,"context_line":"            existing_volume_name \u003d ref[\u0027source-id\u0027]"},{"line_number":666,"context_line":"        else:"},{"line_number":667,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":668,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_5fa530b3","line":665,"range":{"start_line":662,"start_character":0,"end_line":665,"end_character":51},"in_reply_to":"bab6814e_a4a09344","updated":"2016-05-19 16:09:54.000000000","message":"Yes, volume Name is unique in the backend and is of the format volume-\u003cuuid\u003e. This should be confused with the display_name.","commit_id":"97be880ad96174658a1e198525c04cebb5687864"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                if line.startswith(\u0027Size:\u0027):"},{"line_number":383,"context_line":"                    out_tup \u003d line.rstrip().partition(\u0027 \u0027)"},{"line_number":384,"context_line":"                    data[\u0027size\u0027] \u003d self._get_space_in_gb(out_tup[-1])"},{"line_number":385,"context_line":"                if line.startswith(\u0027iSCSI Name:\u0027):"},{"line_number":386,"context_line":"                    out_tup \u003d line.rstrip().partition(\u0027: \u0027)"},{"line_number":387,"context_line":"                    data[\u0027iSCSI_Name\u0027] \u003d out_tup[-1]"},{"line_number":388,"context_line":"            return data"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_9540cda6","line":385,"range":{"start_line":385,"start_character":16,"end_line":385,"end_character":19},"updated":"2016-05-26 18:04:34.000000000","message":"elif","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                if line.startswith(\u0027Size:\u0027):"},{"line_number":383,"context_line":"                    out_tup \u003d line.rstrip().partition(\u0027 \u0027)"},{"line_number":384,"context_line":"                    data[\u0027size\u0027] \u003d self._get_space_in_gb(out_tup[-1])"},{"line_number":385,"context_line":"                if line.startswith(\u0027iSCSI Name:\u0027):"},{"line_number":386,"context_line":"                    out_tup \u003d line.rstrip().partition(\u0027: \u0027)"},{"line_number":387,"context_line":"                    data[\u0027iSCSI_Name\u0027] \u003d out_tup[-1]"},{"line_number":388,"context_line":"            return data"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_3370f4a3","line":385,"range":{"start_line":385,"start_character":16,"end_line":385,"end_character":19},"in_reply_to":"bab6814e_9540cda6","updated":"2016-06-01 17:11:32.000000000","message":"Yes","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        except processutils.ProcessExecutionError as err:"},{"line_number":390,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":391,"context_line":"                if err.stdout.find(\u0027does not exist.\\n\u0027) \u003e -1:"},{"line_number":392,"context_line":"                    LOG.debug(\u0027Volume %s does not exist, \u0027"},{"line_number":393,"context_line":"                              \u0027it may have already been deleted\u0027,"},{"line_number":394,"context_line":"                              volume_name)"},{"line_number":395,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dvolume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_b5dfd1d4","line":392,"range":{"start_line":392,"start_character":24,"end_line":392,"end_character":29},"updated":"2016-05-26 18:04:34.000000000","message":"error","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        except processutils.ProcessExecutionError as err:"},{"line_number":390,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":391,"context_line":"                if err.stdout.find(\u0027does not exist.\\n\u0027) \u003e -1:"},{"line_number":392,"context_line":"                    LOG.debug(\u0027Volume %s does not exist, \u0027"},{"line_number":393,"context_line":"                              \u0027it may have already been deleted\u0027,"},{"line_number":394,"context_line":"                              volume_name)"},{"line_number":395,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dvolume_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_d361a8d4","line":392,"range":{"start_line":392,"start_character":24,"end_line":392,"end_character":29},"in_reply_to":"bab6814e_b5dfd1d4","updated":"2016-06-01 17:11:32.000000000","message":"Yes","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                    LOG.debug(\u0027Volume %s does not exist, \u0027"},{"line_number":393,"context_line":"                              \u0027it may have already been deleted\u0027,"},{"line_number":394,"context_line":"                              volume_name)"},{"line_number":395,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dvolume_name)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def _check_volume(self, volume):"},{"line_number":398,"context_line":"        \"\"\"Check if the volume exists on the Array.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_d8c56c5c","line":395,"range":{"start_line":395,"start_character":36,"end_line":395,"end_character":50},"updated":"2016-05-26 18:04:34.000000000","message":"We should raise ManageExistingInvalidReference.","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                    LOG.debug(\u0027Volume %s does not exist, \u0027"},{"line_number":393,"context_line":"                              \u0027it may have already been deleted\u0027,"},{"line_number":394,"context_line":"                              volume_name)"},{"line_number":395,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dvolume_name)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def _check_volume(self, volume):"},{"line_number":398,"context_line":"        \"\"\"Check if the volume exists on the Array.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_f5367901","line":395,"range":{"start_line":395,"start_character":20,"end_line":395,"end_character":25},"updated":"2016-05-26 18:04:34.000000000","message":"Why do we need excutils.save_and_reraise_exception() in this case?\n\nI think it is better to write:\n\nif err.stdout.find(..):\n  LOG.error(..)\n  raise exception.VolumeNotFound(volume_id\u003dvolume_name)\nelse:\n  raise","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                    LOG.debug(\u0027Volume %s does not exist, \u0027"},{"line_number":393,"context_line":"                              \u0027it may have already been deleted\u0027,"},{"line_number":394,"context_line":"                              volume_name)"},{"line_number":395,"context_line":"                    raise exception.VolumeNotFound(volume_id\u003dvolume_name)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def _check_volume(self, volume):"},{"line_number":398,"context_line":"        \"\"\"Check if the volume exists on the Array.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_73ad5ce8","line":395,"range":{"start_line":395,"start_character":20,"end_line":395,"end_character":25},"in_reply_to":"bab6814e_f5367901","updated":"2016-06-01 17:11:32.000000000","message":"Agree, it is better to raise the ManageExistingInvalidReference","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":477,"context_line":"                              \u0027for volume \"%s\".\u0027),"},{"line_number":478,"context_line":"                          volume[\u0027name\u0027])"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def set_volume_description(self, volume, description):"},{"line_number":481,"context_line":"        \"\"\"Set the description of the volume\"\"\""},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            cmd \u003d [\u0027volume\u0027, \u0027select\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_58adfc82","line":480,"range":{"start_line":480,"start_character":8,"end_line":480,"end_character":30},"updated":"2016-05-26 18:04:34.000000000","message":"Prefix _ for private methods.","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":668,"context_line":"        else:"},{"line_number":669,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":670,"context_line":"            LOG.error(msg)"},{"line_number":671,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":672,"context_line":"                existing_ref\u003dref, reason\u003dmsg)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        return existing_volume_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_5855fcbf","line":671,"updated":"2016-05-26 18:04:34.000000000","message":"I think this should be InvalidInput.\n\nManageExistingInvalidReference is raised if the provided reference doesn\u0027t correspond to a backend object.","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":668,"context_line":"        else:"},{"line_number":669,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":670,"context_line":"            LOG.error(msg)"},{"line_number":671,"context_line":"            raise exception.ManageExistingInvalidReference("},{"line_number":672,"context_line":"                existing_ref\u003dref, reason\u003dmsg)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        return existing_volume_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_537bf87a","line":671,"in_reply_to":"bab6814e_5855fcbf","updated":"2016-06-01 17:11:32.000000000","message":"Yes","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":680,"context_line":"            cmd \u003d [\u0027volume\u0027, \u0027rename\u0027,"},{"line_number":681,"context_line":"                   existing_volume_name, volume[\u0027name\u0027]]"},{"line_number":682,"context_line":"            self._eql_execute(*cmd)"},{"line_number":683,"context_line":"            self.set_volume_description(volume, \u0027\"Openstack Managed\"\u0027)"},{"line_number":684,"context_line":"            self.add_multihost_access(volume)"},{"line_number":685,"context_line":"            data \u003d self._get_volume_info(volume[\u0027name\u0027])"},{"line_number":686,"context_line":"            updates \u003d self._get_model_update(data[\u0027iSCSI_Name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_987da41e","line":683,"range":{"start_line":683,"start_character":50,"end_line":683,"end_character":59},"updated":"2016-05-26 18:04:34.000000000","message":"nit: OpenStack","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":680,"context_line":"            cmd \u003d [\u0027volume\u0027, \u0027rename\u0027,"},{"line_number":681,"context_line":"                   existing_volume_name, volume[\u0027name\u0027]]"},{"line_number":682,"context_line":"            self._eql_execute(*cmd)"},{"line_number":683,"context_line":"            self.set_volume_description(volume, \u0027\"Openstack Managed\"\u0027)"},{"line_number":684,"context_line":"            self.add_multihost_access(volume)"},{"line_number":685,"context_line":"            data \u003d self._get_volume_info(volume[\u0027name\u0027])"},{"line_number":686,"context_line":"            updates \u003d self._get_model_update(data[\u0027iSCSI_Name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_9399e0c6","line":683,"range":{"start_line":683,"start_character":50,"end_line":683,"end_character":59},"in_reply_to":"bab6814e_987da41e","updated":"2016-06-01 17:11:32.000000000","message":"Fixed","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":704,"context_line":"        \"\"\""},{"line_number":705,"context_line":"        existing_volume_name \u003d self._get_existing_volume_ref_name(existing_ref)"},{"line_number":706,"context_line":"        data \u003d self._get_volume_info(existing_volume_name)"},{"line_number":707,"context_line":"        return data[\u0027size\u0027]"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"    def unmanage(self, volume):"},{"line_number":710,"context_line":"        \"\"\"Removes the specified volume from Cinder management."}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_1896d4ef","line":707,"updated":"2016-05-26 18:04:34.000000000","message":"I don\u0027t think _get_space_in_gb is rounding up the size to next GB; we should return 2 for 1536 MB.","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":704,"context_line":"        \"\"\""},{"line_number":705,"context_line":"        existing_volume_name \u003d self._get_existing_volume_ref_name(existing_ref)"},{"line_number":706,"context_line":"        data \u003d self._get_volume_info(existing_volume_name)"},{"line_number":707,"context_line":"        return data[\u0027size\u0027]"},{"line_number":708,"context_line":""},{"line_number":709,"context_line":"    def unmanage(self, volume):"},{"line_number":710,"context_line":"        \"\"\"Removes the specified volume from Cinder management."}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_13ecd028","line":707,"in_reply_to":"bab6814e_1896d4ef","updated":"2016-06-01 17:11:32.000000000","message":"Fixed and added unit test","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"81e73efa410aecd168d8537ccb15918732730d37","unresolved":false,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        Does not delete the underlying backend storage object."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        For most drivers, this will not need to do anything.  However, some"},{"line_number":715,"context_line":"        drivers might use this call as an opportunity to clean up any"},{"line_number":716,"context_line":"        Cinder-specific configuration that they have associated with the"},{"line_number":717,"context_line":"        backend storage object or mark it as unmanaged in some way."},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":720,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_18bd3468","line":717,"range":{"start_line":714,"start_character":8,"end_line":717,"end_character":67},"updated":"2016-05-26 18:04:34.000000000","message":"Please remove this.","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"2143aa44a27b850f534efdc6d3c4043a4c67a17a","unresolved":false,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        Does not delete the underlying backend storage object."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        For most drivers, this will not need to do anything.  However, some"},{"line_number":715,"context_line":"        drivers might use this call as an opportunity to clean up any"},{"line_number":716,"context_line":"        Cinder-specific configuration that they have associated with the"},{"line_number":717,"context_line":"        backend storage object or mark it as unmanaged in some way."},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        :param volume: Cinder volume to unmanage"},{"line_number":720,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_33f594ec","line":717,"range":{"start_line":714,"start_character":8,"end_line":717,"end_character":67},"in_reply_to":"bab6814e_18bd3468","updated":"2016-06-01 17:11:32.000000000","message":"Done","commit_id":"63b05852ddf01adfc135981c12c593d800dbf06f"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        elif val.endswith(\u0027TB\u0027):"},{"line_number":324,"context_line":"            scale \u003d 1.0 * 1024"},{"line_number":325,"context_line":"            part \u003d \u0027TB\u0027"},{"line_number":326,"context_line":"        return math.ceil(scale * float(val.partition(part)[0]))"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _update_volume_stats(self):"},{"line_number":329,"context_line":"        \"\"\"Retrieve stats info from eqlx group.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_28bb1e74","line":326,"updated":"2016-06-06 07:41:38.000000000","message":"I\u0027m not sure whether we need to return a float here? I think we can cast to int after the ceil.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        elif val.endswith(\u0027TB\u0027):"},{"line_number":324,"context_line":"            scale \u003d 1.0 * 1024"},{"line_number":325,"context_line":"            part \u003d \u0027TB\u0027"},{"line_number":326,"context_line":"        return math.ceil(scale * float(val.partition(part)[0]))"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _update_volume_stats(self):"},{"line_number":329,"context_line":"        \"\"\"Retrieve stats info from eqlx group.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b9d16d25","line":326,"in_reply_to":"7aa08908_28bb1e74","updated":"2016-06-08 19:55:34.000000000","message":"Does it matter. This code is existing and I hesitate to change it for no good reason","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f385a2a137bd673447e1577b1f1eae8ee7bff3e8","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        elif val.endswith(\u0027TB\u0027):"},{"line_number":324,"context_line":"            scale \u003d 1.0 * 1024"},{"line_number":325,"context_line":"            part \u003d \u0027TB\u0027"},{"line_number":326,"context_line":"        return math.ceil(scale * float(val.partition(part)[0]))"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _update_volume_stats(self):"},{"line_number":329,"context_line":"        \"\"\"Retrieve stats info from eqlx group.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_7ca7d7a6","line":326,"in_reply_to":"7aa08908_b9d16d25","updated":"2016-06-09 05:09:55.000000000","message":"In Python 2 ceil returns a float and it is int in Python 3. It\u0027s better to return ceil as int.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        if \u0027source-name\u0027 in ref:"},{"line_number":664,"context_line":"            existing_volume_name \u003d ref[\u0027source-name\u0027]"},{"line_number":665,"context_line":"        elif \u0027source-id\u0027 in ref:"},{"line_number":666,"context_line":"            existing_volume_name \u003d ref[\u0027source-id\u0027]"},{"line_number":667,"context_line":"        else:"},{"line_number":668,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":669,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_68e4060d","line":666,"updated":"2016-06-06 07:41:38.000000000","message":"If it is volume \"name\" in the backend, we shouldn\u0027t expect it to be set in source-id; it should be set in source-name.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        if \u0027source-name\u0027 in ref:"},{"line_number":664,"context_line":"            existing_volume_name \u003d ref[\u0027source-name\u0027]"},{"line_number":665,"context_line":"        elif \u0027source-id\u0027 in ref:"},{"line_number":666,"context_line":"            existing_volume_name \u003d ref[\u0027source-id\u0027]"},{"line_number":667,"context_line":"        else:"},{"line_number":668,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":669,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_be28339b","line":666,"in_reply_to":"7aa08908_68e4060d","updated":"2016-06-08 19:55:34.000000000","message":"Name and Id are same in the backend and unique. Let\u0027s not change this code.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f385a2a137bd673447e1577b1f1eae8ee7bff3e8","unresolved":false,"context_lines":[{"line_number":663,"context_line":"        if \u0027source-name\u0027 in ref:"},{"line_number":664,"context_line":"            existing_volume_name \u003d ref[\u0027source-name\u0027]"},{"line_number":665,"context_line":"        elif \u0027source-id\u0027 in ref:"},{"line_number":666,"context_line":"            existing_volume_name \u003d ref[\u0027source-id\u0027]"},{"line_number":667,"context_line":"        else:"},{"line_number":668,"context_line":"            msg \u003d _(\u0027Reference must contain source-id or source-name.\u0027)"},{"line_number":669,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_9c4d63c6","line":666,"in_reply_to":"7aa08908_be28339b","updated":"2016-06-09 05:09:55.000000000","message":"Ok so I assume that the backend volume has two attributes  name and id and they have the same value.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"f6aa0732b111b564d34cb84f9b0e101c27300d70","unresolved":false,"context_lines":[{"line_number":713,"context_line":"        \"\"\""},{"line_number":714,"context_line":"        try:"},{"line_number":715,"context_line":"            self._set_volume_description(volume, \u0027\"OpenStack UnManaged\"\u0027)"},{"line_number":716,"context_line":"            LOG.info(_LI(\"Virtual volume %(disp)s \u0027%(vol)s\u0027 is no \""},{"line_number":717,"context_line":"                     \"longer managed.\"),"},{"line_number":718,"context_line":"                     {\u0027disp\u0027: volume[\u0027display_name\u0027],"},{"line_number":719,"context_line":"                      \u0027vol\u0027: volume[\u0027name\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_c8c41a42","line":716,"range":{"start_line":716,"start_character":40,"end_line":716,"end_character":50},"updated":"2016-06-06 07:41:38.000000000","message":"display name is not part of the backend volume name, so we can remove it.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"},{"author":{"_account_id":10379,"name":"Rajini Karthik","email":"rrajini@gmail.com","username":"rajinir"},"change_message_id":"7a5f602fdd2c7ff13f2f220a50061df799188457","unresolved":false,"context_lines":[{"line_number":713,"context_line":"        \"\"\""},{"line_number":714,"context_line":"        try:"},{"line_number":715,"context_line":"            self._set_volume_description(volume, \u0027\"OpenStack UnManaged\"\u0027)"},{"line_number":716,"context_line":"            LOG.info(_LI(\"Virtual volume %(disp)s \u0027%(vol)s\u0027 is no \""},{"line_number":717,"context_line":"                     \"longer managed.\"),"},{"line_number":718,"context_line":"                     {\u0027disp\u0027: volume[\u0027display_name\u0027],"},{"line_number":719,"context_line":"                      \u0027vol\u0027: volume[\u0027name\u0027]})"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_9e0a9724","line":716,"range":{"start_line":716,"start_character":40,"end_line":716,"end_character":50},"in_reply_to":"7aa08908_c8c41a42","updated":"2016-06-08 19:55:34.000000000","message":"Its just info message. Helps to identify the volume being mapped.","commit_id":"7dc5e6b3d12b8b6b8871057846ffc6e835f9b541"}]}
