)]}'
{"cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4fcaf4e904fd3f9dc2bd5867ed2abe58b834d722","unresolved":false,"context_lines":[{"line_number":2441,"context_line":"            # the value is 0 so that it can execute quickly"},{"line_number":2442,"context_line":"            # To ensure that the worker thread processes the task, this"},{"line_number":2443,"context_line":"            # thread needs to wait for some time"},{"line_number":2444,"context_line":"            time.sleep(5)"},{"line_number":2445,"context_line":""},{"line_number":2446,"context_line":"            mock_tt_client.assert_has_calls("},{"line_number":2447,"context_line":"                [mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS),"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_6ec0d151","line":2444,"updated":"2017-12-14 10:37:27.000000000","message":"Please, remove time.sleep from the tests. We have not to use \u0027sleep\u0027 calls in unit tests at all. We have to mock all sleeps to make our tests faster","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fce6a29bae43963e0a4f75b298991c21b4dc4439","unresolved":false,"context_lines":[{"line_number":2534,"context_line":"            # the value is 0 so that it can execute quickly"},{"line_number":2535,"context_line":"            # To ensure that the worker thread processes the task, this"},{"line_number":2536,"context_line":"            # thread needs to wait for some time"},{"line_number":2537,"context_line":"            time.sleep(5)"},{"line_number":2538,"context_line":""},{"line_number":2539,"context_line":"            mock_tt_client.assert_has_calls("},{"line_number":2540,"context_line":"                [mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS),"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_ee79412f","line":2537,"updated":"2017-12-14 10:41:44.000000000","message":"The same","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fce6a29bae43963e0a4f75b298991c21b4dc4439","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            # the value is 0 so that it can execute quickly"},{"line_number":5572,"context_line":"            # To ensure that the worker thread processes the task, this"},{"line_number":5573,"context_line":"            # thread needs to wait for some time"},{"line_number":5574,"context_line":"            time.sleep(5)"},{"line_number":5575,"context_line":""},{"line_number":5576,"context_line":"            mock_tt_client.assert_has_calls("},{"line_number":5577,"context_line":"                [mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS),"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_ae73394d","line":5574,"updated":"2017-12-14 10:41:44.000000000","message":"The same as above","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d12a376eeefe3985d3f3d217fb85d915b532bd1a","unresolved":false,"context_lines":[{"line_number":2433,"context_line":"                self.standard_login +"},{"line_number":2434,"context_line":"                expected +"},{"line_number":2435,"context_line":"                self.standard_logout)"},{"line_number":2436,"context_line":"            "},{"line_number":2437,"context_line":"            # Wait till all the calls in side_effect are exhausted"},{"line_number":2438,"context_line":"            # If sleep is not introduced, it has been observed that "},{"line_number":2439,"context_line":"            # worker thread doesn\u0027t get chance to execute at all."}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_9c8ea125","line":2436,"updated":"2017-12-14 20:25:52.000000000","message":"Extra spaces.","commit_id":"df1de777872ae697ca4b062aa052a21cd9e7355f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d12a376eeefe3985d3f3d217fb85d915b532bd1a","unresolved":false,"context_lines":[{"line_number":2435,"context_line":"                self.standard_logout)"},{"line_number":2436,"context_line":"            "},{"line_number":2437,"context_line":"            # Wait till all the calls in side_effect are exhausted"},{"line_number":2438,"context_line":"            # If sleep is not introduced, it has been observed that "},{"line_number":2439,"context_line":"            # worker thread doesn\u0027t get chance to execute at all."},{"line_number":2440,"context_line":"            # Hence keeping the sleep bare minimum"},{"line_number":2441,"context_line":"            while mock_tt_client.getTask.call_count \u003c 2:"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_5c981969","line":2438,"updated":"2017-12-14 20:25:52.000000000","message":"Extra space on the end.","commit_id":"df1de777872ae697ca4b062aa052a21cd9e7355f"},{"author":{"_account_id":25805,"name":"Yu Shengzuo","email":"yu.shengzuo@99cloud.net","username":"yuc"},"change_message_id":"24c35e89286d3ed1176b5118e16ad468cc51b664","unresolved":false,"context_lines":[{"line_number":6502,"context_line":"    def test_task_tracker_delete_tmp_snapshot(self):"},{"line_number":6503,"context_line":"        self.setup_driver()"},{"line_number":6504,"context_line":"        mock_tt_client \u003d self.setup_task_tracker_mock_client()"},{"line_number":6505,"context_line":"        mock_tt_client.getTask.side_effect \u003d \\"},{"line_number":6506,"context_line":"            [{\u0027status\u0027: mock_tt_client.TASK_ACTIVE},"},{"line_number":6507,"context_line":"             {\u0027status\u0027: mock_tt_client.TASK_DONE}, ]"},{"line_number":6508,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf8cb3f7_beb3474d","line":6505,"range":{"start_line":6505,"start_character":45,"end_line":6505,"end_character":46},"updated":"2017-12-26 10:11:09.000000000","message":"Bad code-style.\nBetter:\n      mock_tt_client.getTask.side_effect \u003d [\n          xxxxxx","commit_id":"05cd1d5bb9f094f50b75dc9816e61a0950d3e78c"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"e56a9afb948a18cb838c4e71c7b166a8e90089ab","unresolved":false,"context_lines":[{"line_number":6502,"context_line":"    def test_task_tracker_delete_tmp_snapshot(self):"},{"line_number":6503,"context_line":"        self.setup_driver()"},{"line_number":6504,"context_line":"        mock_tt_client \u003d self.setup_task_tracker_mock_client()"},{"line_number":6505,"context_line":"        mock_tt_client.getTask.side_effect \u003d \\"},{"line_number":6506,"context_line":"            [{\u0027status\u0027: mock_tt_client.TASK_ACTIVE},"},{"line_number":6507,"context_line":"             {\u0027status\u0027: mock_tt_client.TASK_DONE}, ]"},{"line_number":6508,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bf8cb3f7_fe8f8f2b","line":6505,"range":{"start_line":6505,"start_character":45,"end_line":6505,"end_character":46},"in_reply_to":"bf8cb3f7_beb3474d","updated":"2017-12-26 10:46:31.000000000","message":"Done","commit_id":"05cd1d5bb9f094f50b75dc9816e61a0950d3e78c"}],"cinder/volume/drivers/hpe/hpe_3par_base.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"652d464c1eb61526cb884a25ab54968f2343c3a1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from cinder import utils"},{"line_number":38,"context_line":"from cinder.volume import driver"},{"line_number":39,"context_line":"from cinder.volume.drivers.hpe import hpe_3par_common as hpecommon"},{"line_number":40,"context_line":"from cinder.volume.drivers.hpe.hpe_task_tracker import TaskTracker"},{"line_number":41,"context_line":"from cinder.volume.drivers.san import san"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_8eae7a2c","line":40,"updated":"2018-01-02 19:05:01.000000000","message":"this should be just \nimport cinder.volume.drivers.hpe.hpe_task_tracker\n\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"ecc09bd0643b54b8712f1c21cb304ca4f64e3940"}],"cinder/volume/drivers/hpe/hpe_3par_common.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":2204,"context_line":"                    type_info[\u0027hpe3par_keys\u0027])"},{"line_number":2205,"context_line":"                # make the 3PAR copy the contents."},{"line_number":2206,"context_line":"                # can\u0027t delete the original until the copy is done."},{"line_number":2207,"context_line":"                task_id \u003d \\"},{"line_number":2208,"context_line":"                    self._copy_volume(snapshot[\u0027name\u0027], vol_name, cpg\u003dcpg,"},{"line_number":2209,"context_line":"                                      snap_cpg\u003dtype_info[\u0027snap_cpg\u0027],"},{"line_number":2210,"context_line":"                                      tpvv\u003dtype_info[\u0027tpvv\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_f4feef69","line":2207,"range":{"start_line":2207,"start_character":15,"end_line":2207,"end_character":27},"updated":"2017-12-14 15:29:14.000000000","message":"Please don\u0027t use \u0027\\\u0027 for line continuation.","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e0f4747facd927a70d1ff638e664649de861f6de","unresolved":false,"context_lines":[{"line_number":130,"context_line":"               default\u003d5,"},{"line_number":131,"context_line":"               help\u003d\"Poll time interval to get task listeners from \""},{"line_number":132,"context_line":"                    \"unprocessed queue\","},{"line_number":133,"context_line":"               deprecated_name\u003d\u0027\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_3ba36da0","line":133,"updated":"2017-12-19 21:26:23.000000000","message":"None of these should have deprecated_name if they are not replacements for deprecated options.","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ff155803d352f0ffb17177316259d1d0b9914858","unresolved":false,"context_lines":[{"line_number":130,"context_line":"               default\u003d5,"},{"line_number":131,"context_line":"               help\u003d\"Poll time interval to get task listeners from \""},{"line_number":132,"context_line":"                    \"unprocessed queue\","},{"line_number":133,"context_line":"               deprecated_name\u003d\u0027\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_b868d6f4","line":133,"in_reply_to":"df87a7cf_3ba36da0","updated":"2017-12-20 10:06:29.000000000","message":"Done","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"43669e79de0dc56c89e36ec6310bde7de5602437","unresolved":false,"context_lines":[{"line_number":130,"context_line":"               default\u003d5,"},{"line_number":131,"context_line":"               help\u003d\"Poll time interval to get task listeners from \""},{"line_number":132,"context_line":"                    \"unprocessed queue\","},{"line_number":133,"context_line":"               deprecated_name\u003d\u0027hpe3par_poll_unprocessed_tasks_after_time\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bf8cb3f7_63523f6a","line":133,"updated":"2017-12-21 14:18:41.000000000","message":"Comment not addressed from patchset 9.","commit_id":"db04d7b9f124a64d40fe1f54c0f10943a5684545"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5e562e16df8dc712bb3ee2e7351a98d59134aabc","unresolved":false,"context_lines":[{"line_number":130,"context_line":"               default\u003d5,"},{"line_number":131,"context_line":"               help\u003d\"Poll time interval to get task listeners from \""},{"line_number":132,"context_line":"                    \"unprocessed queue\","},{"line_number":133,"context_line":"               deprecated_name\u003d\u0027hpe3par_poll_unprocessed_tasks_after_time\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bf8cb3f7_b13886d3","line":133,"updated":"2017-12-21 20:12:42.000000000","message":"Comment still not addressed.","commit_id":"373e3b38e5c1d9885fd04483ee446c08306b0b71"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ddae9a668420be51b238f0ee891c224fa50fb2d6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"               default\u003d5,"},{"line_number":131,"context_line":"               help\u003d\"Poll time interval to get task listeners from \""},{"line_number":132,"context_line":"                    \"unprocessed queue\","},{"line_number":133,"context_line":"               deprecated_name\u003d\u0027hpe3par_poll_unprocessed_tasks_after_time\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"bf8cb3f7_314b0c85","line":133,"in_reply_to":"bf8cb3f7_b13886d3","updated":"2017-12-22 10:52:33.000000000","message":"Thanks Sean for the review! I\u0027ve removed only hpe3par_poll_unprocessed_tasks_after_time deprecated-name added by me as part of this patch. As for the removal of other deprecated-names, there is already a patch (https://review.openstack.org/#/c/528300/) by Ivan Kolodyazhny waiting to be merged.","commit_id":"373e3b38e5c1d9885fd04483ee446c08306b0b71"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"652d464c1eb61526cb884a25ab54968f2343c3a1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"from cinder.i18n import _"},{"line_number":64,"context_line":"from cinder.objects import fields"},{"line_number":65,"context_line":"from cinder.volume import configuration"},{"line_number":66,"context_line":"from cinder.volume.drivers.hpe import hpe_task_listeners"},{"line_number":67,"context_line":"from cinder.volume import qos_specs"},{"line_number":68,"context_line":"from cinder.volume import utils as volume_utils"},{"line_number":69,"context_line":"from cinder.volume import volume_types"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_c926bcb8","line":66,"updated":"2018-01-02 19:05:01.000000000","message":"don\u0027t import objects.\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"ecc09bd0643b54b8712f1c21cb304ca4f64e3940"}],"cinder/volume/drivers/hpe/hpe_task_listeners.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    @utils.trace"},{"line_number":64,"context_line":"    def _delete_snapshot(self, client_3par):"},{"line_number":65,"context_line":"        snapshot_name \u003d self._op_ctxt[\u0027tmp_snapshot_name\u0027]"},{"line_number":66,"context_line":"        LOG.info(\"Deleting temporary snapshot: %s...\", snapshot_name)"},{"line_number":67,"context_line":"        client_3par.deleteVolume(snapshot_name)"},{"line_number":68,"context_line":"        LOG.info(\"Deleted temporary snapshot: %s\", snapshot_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_b43dc72d","line":66,"updated":"2017-12-14 15:29:14.000000000","message":"These should be LOG.debug .","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"}],"cinder/volume/drivers/hpe/hpe_task_tracker.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        Iterates over the list of processed task listener and"},{"line_number":96,"context_line":"        remove them one by one from in-process queue"},{"line_number":97,"context_line":"        :param processed_q: list of processed listeners"},{"line_number":98,"context_line":"        \"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for task_listener in processed_q:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_3478d7f6","line":97,"updated":"2017-12-14 15:29:14.000000000","message":"There should be a blank line before this.","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            LOG.info(\"Getting task info for task_id\u003d%s\", task_id)"},{"line_number":111,"context_line":"            return self._3par_client.getTask(task_id)"},{"line_number":112,"context_line":"        except hpeexceptions.HTTPUnauthorized as ex:"},{"line_number":113,"context_line":"            msg \u003d (_(\"Failed to Login to 3PAR (%(url)s) because %(err)s\") %"},{"line_number":114,"context_line":"                   {\u0027url\u0027: config.hpe3par_api_url, \u0027err\u0027: ex})"},{"line_number":115,"context_line":"            LOG.error(msg)"},{"line_number":116,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_1487d3d9","line":113,"range":{"start_line":113,"start_character":55,"end_line":113,"end_character":63},"updated":"2017-12-14 15:29:14.000000000","message":"due to:","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        \"\"\"Main funtion that track tasks"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        This function is invoked on a separate thread and does the following:"},{"line_number":144,"context_line":"        1.  Moves the unprocessed listeners to in-process queue for processing"},{"line_number":145,"context_line":"        2. Iterates over in-process queue and queries for status of each task"},{"line_number":146,"context_line":"        3. Notifies the listener with the status of the task"},{"line_number":147,"context_line":"        4. If status is active, leaves tracking on for that task"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_3461b73a","line":144,"range":{"start_line":144,"start_character":0,"end_line":144,"end_character":11},"updated":"2017-12-14 15:29:14.000000000","message":"You have an extra space here.  Also proper formatting would be \u0027#.\u0027 to created a numbered list.","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d4b74ad7e46bcd1d433029b316163407f6ef26af","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                        task_listener.task_cancelled(task_info,"},{"line_number":194,"context_line":"                                                     self._3par_client)"},{"line_number":195,"context_line":"                except Exception as ex:"},{"line_number":196,"context_line":"                    LOG.error(ex)"},{"line_number":197,"context_line":"                    # In case of exception from active task listener, add it"},{"line_number":198,"context_line":"                    # for removal by just ignoring the exception and continuing"},{"line_number":199,"context_line":"                    # with the next listener"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_d4d64bc4","line":196,"range":{"start_line":196,"start_character":20,"end_line":196,"end_character":33},"updated":"2017-12-14 15:29:14.000000000","message":"SHould add context before the exception as to where you were when this was hit.","commit_id":"15701742b30b53fb8e8c9fcba311849dab8431a8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e0f4747facd927a70d1ff638e664649de861f6de","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_1ba6a9ac","line":20,"updated":"2017-12-19 21:26:23.000000000","message":"This should be after oslo_log.","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ff155803d352f0ffb17177316259d1d0b9914858","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_eafe89ad","line":20,"in_reply_to":"df87a7cf_1ba6a9ac","updated":"2017-12-20 10:06:29.000000000","message":"import of hpe3parclient (please see next import) is dependent on importutils which is coming from oslo_utils. If oslo_utils is moved belo oslo_log then hpe3parclient would also need to be moved below it. Please suggest if I should still go ahead moving the import down.","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e0f4747facd927a70d1ff638e664649de861f6de","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                task_info \u003d self._get_task_info(task_listener._task_id,"},{"line_number":177,"context_line":"                                                tp_client)"},{"line_number":178,"context_line":"            except Exception as ex:"},{"line_number":179,"context_line":"                msg \u003d \"Failed to get task information: %s\" % ex"},{"line_number":180,"context_line":"                LOG.error(msg)"},{"line_number":181,"context_line":"                # Mark listener as processed to stop tracking"},{"line_number":182,"context_line":"                processed_q.append(task_listener)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_db0b618b","line":179,"range":{"start_line":179,"start_character":57,"end_line":179,"end_character":61},"updated":"2017-12-19 21:26:23.000000000","message":"This should be passed in to the logger to format. So either:\n\nLOG.error(\u0027Failed to get task information: %s\u0027, ex)\n\nOr maybe better:\n\nLOG.exception(\u0027Failed to get task information.\u0027)","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ff155803d352f0ffb17177316259d1d0b9914858","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                task_info \u003d self._get_task_info(task_listener._task_id,"},{"line_number":177,"context_line":"                                                tp_client)"},{"line_number":178,"context_line":"            except Exception as ex:"},{"line_number":179,"context_line":"                msg \u003d \"Failed to get task information: %s\" % ex"},{"line_number":180,"context_line":"                LOG.error(msg)"},{"line_number":181,"context_line":"                # Mark listener as processed to stop tracking"},{"line_number":182,"context_line":"                processed_q.append(task_listener)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_aabe4162","line":179,"range":{"start_line":179,"start_character":57,"end_line":179,"end_character":61},"in_reply_to":"df87a7cf_db0b618b","updated":"2017-12-20 10:06:29.000000000","message":"Done","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e0f4747facd927a70d1ff638e664649de861f6de","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                elif task_info[\u0027status\u0027] \u003d\u003d tp_client.TASK_CANCELLED:"},{"line_number":195,"context_line":"                    task_listener.task_cancelled(task_info, tp_client)"},{"line_number":196,"context_line":"            except Exception as ex:"},{"line_number":197,"context_line":"                msg \u003d (_(\"Task listener failed while executing action: \""},{"line_number":198,"context_line":"                         \"%(err)s\") % {\u0027err\u0027: ex})"},{"line_number":199,"context_line":"                LOG.error(msg)"},{"line_number":200,"context_line":"                # In case of exception from active task listener, add it"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_1bed49b6","line":197,"range":{"start_line":197,"start_character":23,"end_line":197,"end_character":25},"updated":"2017-12-19 21:26:23.000000000","message":"Should not be translated when just used for logging.\n\nSame comment applies here as above.","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ff155803d352f0ffb17177316259d1d0b9914858","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                elif task_info[\u0027status\u0027] \u003d\u003d tp_client.TASK_CANCELLED:"},{"line_number":195,"context_line":"                    task_listener.task_cancelled(task_info, tp_client)"},{"line_number":196,"context_line":"            except Exception as ex:"},{"line_number":197,"context_line":"                msg \u003d (_(\"Task listener failed while executing action: \""},{"line_number":198,"context_line":"                         \"%(err)s\") % {\u0027err\u0027: ex})"},{"line_number":199,"context_line":"                LOG.error(msg)"},{"line_number":200,"context_line":"                # In case of exception from active task listener, add it"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_cac385ec","line":197,"range":{"start_line":197,"start_character":23,"end_line":197,"end_character":25},"in_reply_to":"df87a7cf_1bed49b6","updated":"2017-12-20 10:06:29.000000000","message":"Done","commit_id":"be2c4209e6df689620fa2c4d8d3aa585429e9bcc"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"43669e79de0dc56c89e36ec6310bde7de5602437","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf8cb3f7_c3c6ab17","line":20,"updated":"2017-12-21 14:18:41.000000000","message":"Comment not addressed from patchset 9.","commit_id":"db04d7b9f124a64d40fe1f54c0f10943a5684545"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5e562e16df8dc712bb3ee2e7351a98d59134aabc","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf8cb3f7_71475e4d","line":20,"updated":"2017-12-21 20:12:42.000000000","message":"hpe3par client should be importing this internally if it needs it. It should not be dependent on the consuming code knowing and importing it ahead of time.","commit_id":"373e3b38e5c1d9885fd04483ee446c08306b0b71"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"ddae9a668420be51b238f0ee891c224fa50fb2d6","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf8cb3f7_d15f403f","line":20,"in_reply_to":"bf8cb3f7_71475e4d","updated":"2017-12-22 10:52:33.000000000","message":"Done","commit_id":"373e3b38e5c1d9885fd04483ee446c08306b0b71"},{"author":{"_account_id":26379,"name":"Imran Ansari","email":"imran.ansari@hpe.com","username":"imran.ansari"},"change_message_id":"38db0d39fb406ad25e13e49ed27466bf9f78a13d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import threading"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils import importutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"hpe3parclient \u003d importutils.try_import(\"hpe3parclient\")"},{"line_number":23,"context_line":"if hpe3parclient:"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf8cb3f7_a8fa4d3f","line":20,"in_reply_to":"bf8cb3f7_71475e4d","updated":"2017-12-22 17:51:03.000000000","message":"Hi Sean - hpe3parclient is not dependent on oslo_utils.importutils. Actually hpe3parclient is an external library that the driver is dependent upon. Since this library is not going to be present on CI systems, we need a conditional import for it so that things like autodoc don\u0027t break. \nCould you please suggest if there is any alternate way to get around this? In this case would you suggest I make it conditional again and push the patch (as of now my patch is broken due to autodoc as I\u0027ve removed conditional import)?\nThx much!","commit_id":"373e3b38e5c1d9885fd04483ee446c08306b0b71"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"9eede1b864448919fc0da14716a3f759044f3aff","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"MIN_CLIENT_VERSION \u003d \u00274.2.0\u0027"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"\"\"\"OpenStack task tracking for 3PAR storage array asynchronous tasks."}],"source_content_type":"text/x-python","patch_set":17,"id":"9f91af0f_389e9463","line":35,"updated":"2018-01-02 16:49:35.000000000","message":"Shouldn\u0027t this be imported from hpe_3par_common instead of defined again here?","commit_id":"ecc09bd0643b54b8712f1c21cb304ca4f64e3940"}]}
