)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"99fb0d8a8b8f50a3101a52111d2c481f639765e2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specify the ports for compute nodes and copy functions in VSP drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds a new config option ``vsp_compute_target_ports`` to specify IDs"},{"line_number":10,"context_line":"of the storage ports used to attach volumes to compute nodes."},{"line_number":11,"context_line":"Also adds a new config option ``vsp_horcm_pair_target_ports`` to"},{"line_number":12,"context_line":"specify IDs of the storage ports used to copy functions by Hitachi"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a3905b3_4f3fdf86","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":51},"updated":"2017-01-23 12:40:48.000000000","message":"What is the benefit of using a separate option to specify the compute ports instead of doing the way its done (using a single parameter with all ports controller and compute)?","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"783373a30ec06ad4146abac0d4f07d0c584dc522","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specify the ports for compute nodes and copy functions in VSP drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds a new config option ``vsp_compute_target_ports`` to specify IDs"},{"line_number":10,"context_line":"of the storage ports used to attach volumes to compute nodes."},{"line_number":11,"context_line":"Also adds a new config option ``vsp_horcm_pair_target_ports`` to"},{"line_number":12,"context_line":"specify IDs of the storage ports used to copy functions by Hitachi"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a3905b3_e5cfa353","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":51},"in_reply_to":"5a3905b3_4f3fdf86","updated":"2017-01-24 05:33:56.000000000","message":"This parameter will be used to improve the performance of I/O between the compute node and the storage by dividing the port.\nHitachi VSP drivers execute the storage operation through the specified port. If you use this parameter, it is possible to separate the control port used for the storage operation and the data I/O port used by the Compute node.","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1adeae6ccc88b4c5416bbcb10a3909b17289bf19","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kazumasa Nomura \u003ckazumasa.nomura.rx@hitachi.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-26 06:35:01 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specify the ports for compute nodes and copy functions in VSP drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds a new config option ``vsp_compute_target_ports`` to specify IDs"},{"line_number":10,"context_line":"of the storage ports used to attach volumes to compute nodes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a461143_3d951088","line":7,"updated":"2017-02-01 18:10:25.000000000","message":"Not a downvote, but try to keep summary lines within 50 characters.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"163b37765208cbfaa6bcff34c5fbab8e42bf703d"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"c65d118bd8fd8718ca29104b3c39ec7e380587b5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kazumasa Nomura \u003ckazumasa.nomura.rx@hitachi.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-26 06:35:01 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Specify the ports for compute nodes and copy functions in VSP drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds a new config option ``vsp_compute_target_ports`` to specify IDs"},{"line_number":10,"context_line":"of the storage ports used to attach volumes to compute nodes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a461143_c1ffc6a8","line":7,"in_reply_to":"3a461143_3d951088","updated":"2017-02-01 19:30:25.000000000","message":"Done","commit_id":"163b37765208cbfaa6bcff34c5fbab8e42bf703d"}],"cinder/tests/unit/volume/drivers/hitachi/test_hitachi_vsp_horcm_fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":953,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":954,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":955,"context_line":"    def test_do_setup_only_target_ports_not_specified(self, *args):"},{"line_number":956,"context_line":"        \"\"\"Normal case: Only target_ports is not specified.\"\"\""},{"line_number":957,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":958,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_0be399a4","line":955,"range":{"start_line":955,"start_character":60,"end_line":955,"end_character":65},"updated":"2017-01-12 18:40:54.000000000","message":"Please replace *args with individual parameter names for each mock.patch.objects.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":953,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":954,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":955,"context_line":"    def test_do_setup_only_target_ports_not_specified(self, *args):"},{"line_number":956,"context_line":"        \"\"\"Normal case: Only target_ports is not specified.\"\"\""},{"line_number":957,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":958,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_3473114f","line":955,"range":{"start_line":955,"start_character":60,"end_line":955,"end_character":65},"in_reply_to":"9a57fde8_0be399a4","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":965,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":966,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":967,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":968,"context_line":"    def test_do_setup_only_compute_target_ports_not_specified(self, *args):"},{"line_number":969,"context_line":"        \"\"\"Normal case: Only compute_target_ports is not specified.\"\"\""},{"line_number":970,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":971,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_4bf3e173","line":968,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":965,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":966,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":967,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":968,"context_line":"    def test_do_setup_only_compute_target_ports_not_specified(self, *args):"},{"line_number":969,"context_line":"        \"\"\"Normal case: Only compute_target_ports is not specified.\"\"\""},{"line_number":970,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":971,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_7493d94f","line":968,"in_reply_to":"9a57fde8_4bf3e173","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":978,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":979,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":980,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":981,"context_line":"    def test_do_setup_only_pair_target_ports_not_specified(self, *args):"},{"line_number":982,"context_line":"        \"\"\"Normal case: Only pair_target_ports is not specified.\"\"\""},{"line_number":983,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":984,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_8bedc98d","line":981,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":978,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":979,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":980,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":981,"context_line":"    def test_do_setup_only_pair_target_ports_not_specified(self, *args):"},{"line_number":982,"context_line":"        \"\"\"Normal case: Only pair_target_ports is not specified.\"\"\""},{"line_number":983,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":984,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_d4a48da7","line":981,"in_reply_to":"9a57fde8_8bedc98d","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":988,"context_line":"        drv.do_setup(None)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":991,"context_line":"    def test_do_setup_compute_target_ports_not_specified(self, *args):"},{"line_number":992,"context_line":"        \"\"\"Error case: Parameter error(compute_target_ports).(MSGID0601-E).\"\"\""},{"line_number":993,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":994,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_ab028d3c","line":991,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":988,"context_line":"        drv.do_setup(None)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":991,"context_line":"    def test_do_setup_compute_target_ports_not_specified(self, *args):"},{"line_number":992,"context_line":"        \"\"\"Error case: Parameter error(compute_target_ports).(MSGID0601-E).\"\"\""},{"line_number":993,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":994,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_f49fc94d","line":991,"in_reply_to":"9a57fde8_ab028d3c","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1002,"context_line":"    def test_do_setup_pair_target_ports_not_specified(self, *args):"},{"line_number":1003,"context_line":"        \"\"\"Error case: Parameter error(pair_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1004,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1005,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_0bfab942","line":1002,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":999,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1002,"context_line":"    def test_do_setup_pair_target_ports_not_specified(self, *args):"},{"line_number":1003,"context_line":"        \"\"\"Error case: Parameter error(pair_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1004,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1005,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_14aff581","line":1002,"in_reply_to":"9a57fde8_0bfab942","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1116,"context_line":"    def test_do_setup_compute_target_ports_not_found(self, *args):"},{"line_number":1117,"context_line":"        \"\"\"Error case: Compute target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1118,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1119,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_4b9a0116","line":1116,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1116,"context_line":"    def test_do_setup_compute_target_ports_not_found(self, *args):"},{"line_number":1117,"context_line":"        \"\"\"Error case: Compute target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1118,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1119,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_34aa3171","line":1116,"in_reply_to":"9a57fde8_4b9a0116","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1127,"context_line":"    def test_do_setup_pair_target_ports_not_found(self, *args):"},{"line_number":1128,"context_line":"        \"\"\"Error case: Pair target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1129,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1130,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_6b9fc503","line":1127,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1127,"context_line":"    def test_do_setup_pair_target_ports_not_found(self, *args):"},{"line_number":1128,"context_line":"        \"\"\"Error case: Pair target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1129,"context_line":"        drv \u003d vsp_fc.VSPFCDriver("},{"line_number":1130,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_74baf9c1","line":1127,"in_reply_to":"9a57fde8_6b9fc503","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"    @mock.patch.object("},{"line_number":1507,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1508,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1509,"context_line":"    def test_initialize_connection_target_port_not_specified(self, *args):"},{"line_number":1510,"context_line":"        \"\"\"Normal case: target_port is not specified.\"\"\""},{"line_number":1511,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1512,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_ab89adcc","line":1509,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"    @mock.patch.object("},{"line_number":1507,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1508,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1509,"context_line":"    def test_initialize_connection_target_port_not_specified(self, *args):"},{"line_number":1510,"context_line":"        \"\"\"Normal case: target_port is not specified.\"\"\""},{"line_number":1511,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1512,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_94b125e4","line":1509,"in_reply_to":"9a57fde8_ab89adcc","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    @mock.patch.object("},{"line_number":1528,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1529,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1530,"context_line":"    def test_initialize_connection_compute_port_not_specified(self, *args):"},{"line_number":1531,"context_line":"        \"\"\"Normal case: compute_target_port is not specified.\"\"\""},{"line_number":1532,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1533,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_cb86f1b8","line":1530,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    @mock.patch.object("},{"line_number":1528,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1529,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1530,"context_line":"    def test_initialize_connection_compute_port_not_specified(self, *args):"},{"line_number":1531,"context_line":"        \"\"\"Normal case: compute_target_port is not specified.\"\"\""},{"line_number":1532,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1533,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_b4b461d1","line":1530,"in_reply_to":"9a57fde8_cb86f1b8","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"}],"cinder/tests/unit/volume/drivers/hitachi/test_hitachi_vsp_horcm_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1024,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1025,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1026,"context_line":"    def test_do_setup_only_target_ports_not_specified(self, *args):"},{"line_number":1027,"context_line":"        \"\"\"Normal case: Only target_ports is not specified.\"\"\""},{"line_number":1028,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1029,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_4b1761a3","line":1026,"range":{"start_line":1026,"start_character":60,"end_line":1026,"end_character":65},"updated":"2017-01-12 18:40:54.000000000","message":"Please use different parameters for different mock.patch.objects instead of using *args.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1024,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1025,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1026,"context_line":"    def test_do_setup_only_target_ports_not_specified(self, *args):"},{"line_number":1027,"context_line":"        \"\"\"Normal case: Only target_ports is not specified.\"\"\""},{"line_number":1028,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1029,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_14c61548","line":1026,"range":{"start_line":1026,"start_character":60,"end_line":1026,"end_character":65},"in_reply_to":"9a57fde8_4b1761a3","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1037,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1038,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1039,"context_line":"    def test_do_setup_only_compute_target_ports_not_specified(self, *args):"},{"line_number":1040,"context_line":"        \"\"\"Normal case: Only compute_target_ports is not specified.\"\"\""},{"line_number":1041,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1042,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_ab260d14","line":1039,"range":{"start_line":1039,"start_character":68,"end_line":1039,"end_character":73},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1037,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1038,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1039,"context_line":"    def test_do_setup_only_compute_target_ports_not_specified(self, *args):"},{"line_number":1040,"context_line":"        \"\"\"Normal case: Only compute_target_ports is not specified.\"\"\""},{"line_number":1041,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1042,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_34c1512f","line":1039,"range":{"start_line":1039,"start_character":68,"end_line":1039,"end_character":73},"in_reply_to":"9a57fde8_ab260d14","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1050,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1051,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1052,"context_line":"    def test_do_setup_only_pair_target_ports_not_specified(self, *args):"},{"line_number":1053,"context_line":"        \"\"\"Normal case: Only pair_target_ports is not specified.\"\"\""},{"line_number":1054,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1055,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_cb235104","line":1052,"range":{"start_line":1052,"start_character":65,"end_line":1052,"end_character":70},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"        utils, \u0027brick_get_connector_properties\u0027,"},{"line_number":1050,"context_line":"        side_effect\u003d_brick_get_connector_properties)"},{"line_number":1051,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1052,"context_line":"    def test_do_setup_only_pair_target_ports_not_specified(self, *args):"},{"line_number":1053,"context_line":"        \"\"\"Normal case: Only pair_target_ports is not specified.\"\"\""},{"line_number":1054,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1055,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_54dedd11","line":1052,"range":{"start_line":1052,"start_character":65,"end_line":1052,"end_character":70},"in_reply_to":"9a57fde8_cb235104","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1059,"context_line":"        drv.do_setup(None)"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1062,"context_line":"    def test_do_setup_compute_target_ports_not_specified(self, *args):"},{"line_number":1063,"context_line":"        \"\"\"Error case: Parameter error(compute_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1064,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1065,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_2b793dfd","line":1062,"range":{"start_line":1062,"start_character":63,"end_line":1062,"end_character":68},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1059,"context_line":"        drv.do_setup(None)"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1062,"context_line":"    def test_do_setup_compute_target_ports_not_specified(self, *args):"},{"line_number":1063,"context_line":"        \"\"\"Error case: Parameter error(compute_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1064,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1065,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_74e119d0","line":1062,"range":{"start_line":1062,"start_character":63,"end_line":1062,"end_character":68},"in_reply_to":"9a57fde8_2b793dfd","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1073,"context_line":"    def test_do_setup_pair_target_ports_not_specified(self, *args):"},{"line_number":1074,"context_line":"        \"\"\"Error case: Parameter error(pair_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1075,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1076,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_ab6d2d34","line":1073,"range":{"start_line":1073,"start_character":60,"end_line":1073,"end_character":65},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1073,"context_line":"    def test_do_setup_pair_target_ports_not_specified(self, *args):"},{"line_number":1074,"context_line":"        \"\"\"Error case: Parameter error(pair_target_ports).(MSGID0601-E).\"\"\""},{"line_number":1075,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1076,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_94e845b6","line":1073,"range":{"start_line":1073,"start_character":60,"end_line":1073,"end_character":65},"in_reply_to":"9a57fde8_ab6d2d34","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1187,"context_line":"    def test_do_setup_compute_target_ports_not_found(self, *args):"},{"line_number":1188,"context_line":"        \"\"\"Error case: Compute target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1189,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1190,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_eb773500","line":1187,"range":{"start_line":1187,"start_character":59,"end_line":1187,"end_character":64},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1187,"context_line":"    def test_do_setup_compute_target_ports_not_found(self, *args):"},{"line_number":1188,"context_line":"        \"\"\"Error case: Compute target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1189,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1190,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_b4eb81af","line":1187,"range":{"start_line":1187,"start_character":59,"end_line":1187,"end_character":64},"in_reply_to":"9a57fde8_eb773500","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1196,"context_line":""},{"line_number":1197,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1198,"context_line":"    def test_do_setup_pair_target_ports_not_found(self, *args):"},{"line_number":1199,"context_line":"        \"\"\"Error case: Pair target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1200,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1201,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_0b7559f8","line":1198,"range":{"start_line":1198,"start_character":56,"end_line":1198,"end_character":61},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"        self.assertRaises(exception.VSPError, drv.do_setup, None)"},{"line_number":1196,"context_line":""},{"line_number":1197,"context_line":"    @mock.patch.object(vsp_utils, \u0027execute\u0027, side_effect\u003d_execute)"},{"line_number":1198,"context_line":"    def test_do_setup_pair_target_ports_not_found(self, *args):"},{"line_number":1199,"context_line":"        \"\"\"Error case: Pair target port does not exist(MSGID0650-E).\"\"\""},{"line_number":1200,"context_line":"        drv \u003d vsp_iscsi.VSPISCSIDriver("},{"line_number":1201,"context_line":"            configuration\u003dself.configuration, db\u003ddb)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_d4d2cdff","line":1198,"range":{"start_line":1198,"start_character":56,"end_line":1198,"end_character":61},"in_reply_to":"9a57fde8_0b7559f8","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1590,"context_line":"    @mock.patch.object("},{"line_number":1591,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1592,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1593,"context_line":"    def test_initialize_connection_target_port_not_specified(self, *args):"},{"line_number":1594,"context_line":"        \"\"\"Normal case: target_port is not specified.\"\"\""},{"line_number":1595,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1596,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_6b5a6585","line":1593,"range":{"start_line":1593,"start_character":67,"end_line":1593,"end_character":72},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1590,"context_line":"    @mock.patch.object("},{"line_number":1591,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1592,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1593,"context_line":"    def test_initialize_connection_target_port_not_specified(self, *args):"},{"line_number":1594,"context_line":"        \"\"\"Normal case: target_port is not specified.\"\"\""},{"line_number":1595,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1596,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_f4cd095e","line":1593,"range":{"start_line":1593,"start_character":67,"end_line":1593,"end_character":72},"in_reply_to":"9a57fde8_6b5a6585","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":1616,"context_line":"    @mock.patch.object("},{"line_number":1617,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1618,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1619,"context_line":"    def test_initialize_connection_compute_port_not_specified(self, *args):"},{"line_number":1620,"context_line":"        \"\"\"Normal case: compute_target_port is not specified.\"\"\""},{"line_number":1621,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1622,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_cb519164","line":1619,"range":{"start_line":1619,"start_character":68,"end_line":1619,"end_character":73},"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":1616,"context_line":"    @mock.patch.object("},{"line_number":1617,"context_line":"        db, \u0027volume_admin_metadata_get\u0027,"},{"line_number":1618,"context_line":"        side_effect\u003d_volume_admin_metadata_get)"},{"line_number":1619,"context_line":"    def test_initialize_connection_compute_port_not_specified(self, *args):"},{"line_number":1620,"context_line":"        \"\"\"Normal case: compute_target_port is not specified.\"\"\""},{"line_number":1621,"context_line":"        compute_connector \u003d DEFAULT_CONNECTOR.copy()"},{"line_number":1622,"context_line":"        compute_connector[\u0027ip\u0027] \u003d \u0027127.0.0.2\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_14dd350e","line":1619,"range":{"start_line":1619,"start_character":68,"end_line":1619,"end_character":73},"in_reply_to":"9a57fde8_cb519164","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"}],"cinder/volume/drivers/hitachi/vsp_common.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":629,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER,"},{"line_number":630,"context_line":"                                   param\u003d\u0027vsp_target_ports or \u0027"},{"line_number":631,"context_line":"                                   \u0027vsp_compute_target_ports\u0027)"},{"line_number":632,"context_line":"            raise exception.VSPError(msg)"},{"line_number":633,"context_line":"        for opt in _REQUIRED_COMMON_OPTS:"},{"line_number":634,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":635,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_8b030973","line":632,"updated":"2017-01-12 18:40:54.000000000","message":"Formatting messages in a totally different file is not good.  It\u0027s hard to see what it is.  MSG.INVALID_PARAMETER uses _LE.  Here since the same message goes to the exception, you should use _(\"xxxx\") instead, not _LE(\"xxxx\").","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":629,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER,"},{"line_number":630,"context_line":"                                   param\u003d\u0027vsp_target_ports or \u0027"},{"line_number":631,"context_line":"                                   \u0027vsp_compute_target_ports\u0027)"},{"line_number":632,"context_line":"            raise exception.VSPError(msg)"},{"line_number":633,"context_line":"        for opt in _REQUIRED_COMMON_OPTS:"},{"line_number":634,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":635,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_94368550","line":632,"in_reply_to":"9a57fde8_8b030973","updated":"2017-01-16 12:33:04.000000000","message":"Replaced _LE with _ in vsp_utils.VSPMsg.output_log.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        for opt in _REQUIRED_COMMON_OPTS:"},{"line_number":634,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":635,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"},{"line_number":636,"context_line":"                raise exception.VSPError(msg)"},{"line_number":637,"context_line":"        if self.storage_info[\u0027protocol\u0027] \u003d\u003d \u0027iSCSI\u0027:"},{"line_number":638,"context_line":"            self.check_param_iscsi()"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_abf8cd7d","line":636,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        for opt in _REQUIRED_COMMON_OPTS:"},{"line_number":634,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":635,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"},{"line_number":636,"context_line":"                raise exception.VSPError(msg)"},{"line_number":637,"context_line":"        if self.storage_info[\u0027protocol\u0027] \u003d\u003d \u0027iSCSI\u0027:"},{"line_number":638,"context_line":"            self.check_param_iscsi()"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_3446b1bf","line":636,"in_reply_to":"9a57fde8_abf8cd7d","updated":"2017-01-16 12:33:04.000000000","message":"same as above.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                not self.storage_info[\u0027compute_ports\u0027]):"},{"line_number":688,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":689,"context_line":"                                   resource\u003d\"Compute target ports\")"},{"line_number":690,"context_line":"            raise exception.VSPError(msg)"},{"line_number":691,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE, object\u003d\u0027target port list\u0027,"},{"line_number":692,"context_line":"                         value\u003dself.storage_info[\u0027ports\u0027])"},{"line_number":693,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_0bf0f98f","line":690,"updated":"2017-01-12 18:40:54.000000000","message":"same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":687,"context_line":"                not self.storage_info[\u0027compute_ports\u0027]):"},{"line_number":688,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":689,"context_line":"                                   resource\u003d\"Compute target ports\")"},{"line_number":690,"context_line":"            raise exception.VSPError(msg)"},{"line_number":691,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE, object\u003d\u0027target port list\u0027,"},{"line_number":692,"context_line":"                         value\u003dself.storage_info[\u0027ports\u0027])"},{"line_number":693,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_14229500","line":690,"in_reply_to":"9a57fde8_0bf0f98f","updated":"2017-01-16 12:33:04.000000000","message":"same as above.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"99fb0d8a8b8f50a3101a52111d2c481f639765e2","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            \u0027protocol\u0027: driverinfo[\u0027proto\u0027],"},{"line_number":147,"context_line":"            \u0027pool_id\u0027: None,"},{"line_number":148,"context_line":"            \u0027ldev_range\u0027: [],"},{"line_number":149,"context_line":"            \u0027ports\u0027: [],"},{"line_number":150,"context_line":"            \u0027compute_ports\u0027: [],"},{"line_number":151,"context_line":"            \u0027pair_ports\u0027: [],"},{"line_number":152,"context_line":"            \u0027wwns\u0027: {},"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_ef67abb4","line":149,"range":{"start_line":149,"start_character":13,"end_line":149,"end_character":24},"updated":"2017-01-23 12:40:48.000000000","message":"controller_ports?","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"783373a30ec06ad4146abac0d4f07d0c584dc522","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            \u0027protocol\u0027: driverinfo[\u0027proto\u0027],"},{"line_number":147,"context_line":"            \u0027pool_id\u0027: None,"},{"line_number":148,"context_line":"            \u0027ldev_range\u0027: [],"},{"line_number":149,"context_line":"            \u0027ports\u0027: [],"},{"line_number":150,"context_line":"            \u0027compute_ports\u0027: [],"},{"line_number":151,"context_line":"            \u0027pair_ports\u0027: [],"},{"line_number":152,"context_line":"            \u0027wwns\u0027: {},"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_05202ff6","line":149,"range":{"start_line":149,"start_character":13,"end_line":149,"end_character":24},"in_reply_to":"5a3905b3_ef67abb4","updated":"2017-01-24 05:33:56.000000000","message":"Done","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"}],"cinder/volume/drivers/hitachi/vsp_horcm.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":212,"context_line":"             \u0027Interface configuration file as needed.\u0027),"},{"line_number":213,"context_line":"    cfg.ListOpt("},{"line_number":214,"context_line":"        \u0027vsp_horcm_pair_target_ports\u0027,"},{"line_number":215,"context_line":"        help\u003d\u0027IDs of the storage ports used to copy volumes by ShadowImage or \u0027"},{"line_number":216,"context_line":"             \u0027Thin Image. To specify multiple ports, connect them by commas \u0027"},{"line_number":217,"context_line":"             \u0027(e.g. CL1-A,CL2-A).\u0027),"},{"line_number":218,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_6bb0a5de","line":215,"updated":"2017-01-12 18:40:54.000000000","message":"Shadow Image since you have \"Thin Image\".","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":212,"context_line":"             \u0027Interface configuration file as needed.\u0027),"},{"line_number":213,"context_line":"    cfg.ListOpt("},{"line_number":214,"context_line":"        \u0027vsp_horcm_pair_target_ports\u0027,"},{"line_number":215,"context_line":"        help\u003d\u0027IDs of the storage ports used to copy volumes by ShadowImage or \u0027"},{"line_number":216,"context_line":"             \u0027Thin Image. To specify multiple ports, connect them by commas \u0027"},{"line_number":217,"context_line":"             \u0027(e.g. CL1-A,CL2-A).\u0027),"},{"line_number":218,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_9484c5d4","line":215,"in_reply_to":"9a57fde8_6bb0a5de","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER,"},{"line_number":877,"context_line":"                                   param\u003d\u0027vsp_target_ports or \u0027"},{"line_number":878,"context_line":"                                   \u0027vsp_horcm_pair_target_ports\u0027)"},{"line_number":879,"context_line":"            raise exception.VSPError(msg)"},{"line_number":880,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE, object\u003d\u0027LDEV range\u0027,"},{"line_number":881,"context_line":"                         value\u003dself.storage_info[\u0027ldev_range\u0027])"},{"line_number":882,"context_line":"        for opt in _REQUIRED_HORCM_OPTS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_8bece9c8","line":879,"updated":"2017-01-12 18:40:54.000000000","message":"Formatting messages in a totally different file is not good.  It\u0027s hard to see what it is.  MSG.INVALID_PARAMETER uses _LE.  Here since the same message goes to the exception, you should use _(\"xxxx\") instead, not _LE(\"xxxx\").","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":876,"context_line":"            msg \u003d utils.output_log(MSG.INVALID_PARAMETER,"},{"line_number":877,"context_line":"                                   param\u003d\u0027vsp_target_ports or \u0027"},{"line_number":878,"context_line":"                                   \u0027vsp_horcm_pair_target_ports\u0027)"},{"line_number":879,"context_line":"            raise exception.VSPError(msg)"},{"line_number":880,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE, object\u003d\u0027LDEV range\u0027,"},{"line_number":881,"context_line":"                         value\u003dself.storage_info[\u0027ldev_range\u0027])"},{"line_number":882,"context_line":"        for opt in _REQUIRED_HORCM_OPTS:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_3474f1fb","line":879,"in_reply_to":"9a57fde8_8bece9c8","updated":"2017-01-16 12:33:04.000000000","message":"Replaced _LE with _ in vsp_utils.VSPMsg.output_log.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        for opt in _REQUIRED_HORCM_OPTS:"},{"line_number":883,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":884,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"},{"line_number":885,"context_line":"                raise exception.VSPError(msg)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    def _set_copy_groups(self, host_ip):"},{"line_number":888,"context_line":"        \"\"\"Initialize an instance variable for ShadowImage copy groups.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_ebdbb519","line":885,"updated":"2017-01-12 18:40:54.000000000","message":"Same","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        for opt in _REQUIRED_HORCM_OPTS:"},{"line_number":883,"context_line":"            if not self.conf.safe_get(opt):"},{"line_number":884,"context_line":"                msg \u003d utils.output_log(MSG.INVALID_PARAMETER, param\u003dopt)"},{"line_number":885,"context_line":"                raise exception.VSPError(msg)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    def _set_copy_groups(self, host_ip):"},{"line_number":888,"context_line":"        \"\"\"Initialize an instance variable for ShadowImage copy groups.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_7464b948","line":885,"in_reply_to":"9a57fde8_ebdbb519","updated":"2017-01-16 12:33:04.000000000","message":"same as above.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"}],"cinder/volume/drivers/hitachi/vsp_horcm_fc.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if pair_target_ports and not self.storage_info[\u0027pair_ports\u0027]:"},{"line_number":66,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":67,"context_line":"                                   resource\u003d\"Pair target ports\")"},{"line_number":68,"context_line":"            raise exception.VSPError(msg)"},{"line_number":69,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"},{"line_number":70,"context_line":"                         object\u003d\u0027pair target port list\u0027,"},{"line_number":71,"context_line":"                         value\u003dself.storage_info[\u0027pair_ports\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_8b9ea954","line":68,"updated":"2017-01-12 18:40:54.000000000","message":"Formatting messages in a totally different file is not good.  It\u0027s hard to see what it is.  MSG.RESOURCE_NOT_FOUND uses _LE.  Here since the same message goes to the exception, you should use _(\"xxxx\") instead, not _LE(\"xxxx\").","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if pair_target_ports and not self.storage_info[\u0027pair_ports\u0027]:"},{"line_number":66,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":67,"context_line":"                                   resource\u003d\"Pair target ports\")"},{"line_number":68,"context_line":"            raise exception.VSPError(msg)"},{"line_number":69,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"},{"line_number":70,"context_line":"                         object\u003d\u0027pair target port list\u0027,"},{"line_number":71,"context_line":"                         value\u003dself.storage_info[\u0027pair_ports\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_54c89d22","line":68,"in_reply_to":"9a57fde8_8b9ea954","updated":"2017-01-16 12:33:04.000000000","message":"Replaced _LE with _ in vsp_utils.VSPMsg.output_log.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"}],"cinder/volume/drivers/hitachi/vsp_horcm_iscsi.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if pair_target_ports and not self.storage_info[\u0027pair_ports\u0027]:"},{"line_number":66,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":67,"context_line":"                                   resource\u003d\"Pair target ports\")"},{"line_number":68,"context_line":"            raise exception.VSPError(msg)"},{"line_number":69,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"},{"line_number":70,"context_line":"                         object\u003d\u0027pair target port list\u0027,"},{"line_number":71,"context_line":"                         value\u003dself.storage_info[\u0027pair_ports\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_0b9d5965","line":68,"updated":"2017-01-12 18:40:54.000000000","message":"Formatting messages in a totally different file is not good.  It\u0027s hard to see what it is.  MSG.RESOURCE_NOT_FOUND uses _LE.  Here since the same message goes to the exception, you should use _(\"xxxx\") instead, not _LE(\"xxxx\").","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if pair_target_ports and not self.storage_info[\u0027pair_ports\u0027]:"},{"line_number":66,"context_line":"            msg \u003d utils.output_log(MSG.RESOURCE_NOT_FOUND,"},{"line_number":67,"context_line":"                                   resource\u003d\"Pair target ports\")"},{"line_number":68,"context_line":"            raise exception.VSPError(msg)"},{"line_number":69,"context_line":"        utils.output_log(MSG.SET_CONFIG_VALUE,"},{"line_number":70,"context_line":"                         object\u003d\u0027pair target port list\u0027,"},{"line_number":71,"context_line":"                         value\u003dself.storage_info[\u0027pair_ports\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_74cbd91e","line":68,"in_reply_to":"9a57fde8_0b9d5965","updated":"2017-01-16 12:33:04.000000000","message":"Replaced _LE with _ in vsp_utils.VSPMsg.output_log.","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"}],"cinder/volume/drivers/hitachi/vsp_utils.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"99fb0d8a8b8f50a3101a52111d2c481f639765e2","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    def output_log(self, **kwargs):"},{"line_number":488,"context_line":"        \"\"\"Output the message to the log file and return the message.\"\"\""},{"line_number":489,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":490,"context_line":"        if self.level \u003d\u003d base_logging.INFO:"},{"line_number":491,"context_line":"            translation_func \u003d _LI"},{"line_number":492,"context_line":"        elif self.level \u003d\u003d base_logging.WARNING:"},{"line_number":493,"context_line":"            translation_func \u003d _LW"},{"line_number":494,"context_line":"        else:"},{"line_number":495,"context_line":"            translation_func \u003d _LE"},{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                translation_func(\"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\"),"},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":499,"context_line":"        return _(\u0027%s\u0027) % msg"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_f24954b8","line":497,"range":{"start_line":490,"start_character":0,"end_line":497,"end_character":33},"updated":"2017-01-23 12:40:48.000000000","message":"You can\u0027t remove the translations tags (_LW, _LE, etc) and make then generic. This way transifex[1] won\u0027t be able to generate the translation strings.\n\n[1] https://gist.github.com/gabrielhurley/2969337#transifex","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"783373a30ec06ad4146abac0d4f07d0c584dc522","unresolved":false,"context_lines":[{"line_number":487,"context_line":"    def output_log(self, **kwargs):"},{"line_number":488,"context_line":"        \"\"\"Output the message to the log file and return the message.\"\"\""},{"line_number":489,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":490,"context_line":"        if self.level \u003d\u003d base_logging.INFO:"},{"line_number":491,"context_line":"            translation_func \u003d _LI"},{"line_number":492,"context_line":"        elif self.level \u003d\u003d base_logging.WARNING:"},{"line_number":493,"context_line":"            translation_func \u003d _LW"},{"line_number":494,"context_line":"        else:"},{"line_number":495,"context_line":"            translation_func \u003d _LE"},{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                translation_func(\"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\"),"},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":499,"context_line":"        return _(\u0027%s\u0027) % msg"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_85fdff6f","line":497,"range":{"start_line":490,"start_character":0,"end_line":497,"end_character":33},"in_reply_to":"5a3905b3_f24954b8","updated":"2017-01-24 05:33:56.000000000","message":"Done","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"0752c0095a22785fe15b0e132e91e08e0a63e4d2","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                translation_func(\"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\"),"},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":499,"context_line":"        return _(\u0027%s\u0027) % msg"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def output_log(msg_enum, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_a8bdb0b8","line":499,"range":{"start_line":499,"start_character":15,"end_line":499,"end_character":28},"updated":"2017-01-23 03:06:49.000000000","message":"_(msg) should be good.","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"783373a30ec06ad4146abac0d4f07d0c584dc522","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                translation_func(\"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\"),"},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":499,"context_line":"        return _(\u0027%s\u0027) % msg"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def output_log(msg_enum, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a3905b3_a5003b67","line":499,"range":{"start_line":499,"start_character":15,"end_line":499,"end_character":28},"in_reply_to":"5a3905b3_a8bdb0b8","updated":"2017-01-24 05:33:56.000000000","message":"I can\u0027t use _(msg) due to an error of jenkins test.","commit_id":"1927eed47d9c17089d11ab9f5315d32116251667"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"0804ff7f74aa439b66a39d6295e0589cc6aff45d","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        self.msg \u003d error_info[\u0027msg\u0027]"},{"line_number":485,"context_line":"        self.suffix \u003d error_info[\u0027suffix\u0027]"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def output_log(self, **kwargs):"},{"line_number":488,"context_line":"        \"\"\"Output the message to the log file and return the message.\"\"\""},{"line_number":489,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":490,"context_line":"        if self.level \u003d\u003d base_logging.INFO:"},{"line_number":491,"context_line":"            translated_msg \u003d _LI(\u0027%s\u0027) % msg"},{"line_number":492,"context_line":"        elif self.level \u003d\u003d base_logging.WARNING:"},{"line_number":493,"context_line":"            translated_msg \u003d _LW(\u0027%s\u0027) % msg"},{"line_number":494,"context_line":"        else:"},{"line_number":495,"context_line":"            translated_msg \u003d _LE(\u0027%s\u0027) % msg"},{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                \"MSGID%(msg_id)04d-%(msg_suffix)s: %(translated_msg)s\","},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix,"},{"line_number":499,"context_line":"                 \u0027translated_msg\u0027: translated_msg})"},{"line_number":500,"context_line":"        return _(\u0027%s\u0027) % msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a3905b3_1392304c","line":497,"range":{"start_line":487,"start_character":3,"end_line":497,"end_character":71},"updated":"2017-01-24 10:29:34.000000000","message":"-1: You actually need to add those translations at the code like they where in your first patch.","commit_id":"37b27458ae1046c5ed00976dcef650ee8616114d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"ef8ffc3e1e9495bc705ed1dc9ef463437fe1c4dc","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        self.msg \u003d error_info[\u0027msg\u0027]"},{"line_number":485,"context_line":"        self.suffix \u003d error_info[\u0027suffix\u0027]"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def output_log(self, **kwargs):"},{"line_number":488,"context_line":"        \"\"\"Output the message to the log file and return the message.\"\"\""},{"line_number":489,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":490,"context_line":"        if self.level \u003d\u003d base_logging.INFO:"},{"line_number":491,"context_line":"            translated_msg \u003d _LI(\u0027%s\u0027) % msg"},{"line_number":492,"context_line":"        elif self.level \u003d\u003d base_logging.WARNING:"},{"line_number":493,"context_line":"            translated_msg \u003d _LW(\u0027%s\u0027) % msg"},{"line_number":494,"context_line":"        else:"},{"line_number":495,"context_line":"            translated_msg \u003d _LE(\u0027%s\u0027) % msg"},{"line_number":496,"context_line":"        LOG.log(self.level,"},{"line_number":497,"context_line":"                \"MSGID%(msg_id)04d-%(msg_suffix)s: %(translated_msg)s\","},{"line_number":498,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix,"},{"line_number":499,"context_line":"                 \u0027translated_msg\u0027: translated_msg})"},{"line_number":500,"context_line":"        return _(\u0027%s\u0027) % msg"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a3905b3_97ba506d","line":497,"range":{"start_line":487,"start_character":3,"end_line":497,"end_character":71},"in_reply_to":"5a3905b3_1392304c","updated":"2017-01-25 09:15:30.000000000","message":"Done","commit_id":"37b27458ae1046c5ed00976dcef650ee8616114d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9a3487a773a43136acc201b6c53e11888b108aae","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":601,"context_line":"        LOG.log(self.level, \"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\","},{"line_number":602,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":603,"context_line":"        return self.rtn % kwargs"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"def output_log(msg_enum, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_bb201ef9","line":603,"range":{"start_line":603,"start_character":15,"end_line":603,"end_character":32},"updated":"2017-01-25 21:45:54.000000000","message":"Not sure why you added this duplicated rtn strings. They are not needed. But, may be you have tried to generate the translation file using \u0027python setup.py extract_messages\u0027. If you want the _LE, _LW, _LI to be generated, just add then to the \u0027keywords \u003d\u0027 in setup.cfg, that is how they do to get the strings.","commit_id":"548bb930ffba5e1f08c0831b13de7932b1ea4369"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"8c105a43ad18ebac303335e000a939882041a216","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        msg \u003d self.msg % kwargs"},{"line_number":601,"context_line":"        LOG.log(self.level, \"MSGID%(msg_id)04d-%(msg_suffix)s: %(msg)s\","},{"line_number":602,"context_line":"                {\u0027msg_id\u0027: self.msg_id, \u0027msg_suffix\u0027: self.suffix, \u0027msg\u0027: msg})"},{"line_number":603,"context_line":"        return self.rtn % kwargs"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"def output_log(msg_enum, **kwargs):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_1649ee31","line":603,"range":{"start_line":603,"start_character":15,"end_line":603,"end_character":32},"in_reply_to":"3a461143_bb201ef9","updated":"2017-01-26 11:45:09.000000000","message":"Restored the first patche\u0027s code.","commit_id":"548bb930ffba5e1f08c0831b13de7932b1ea4369"}],"releasenotes/notes/hitachi-vsp-ports-option-7147289e6529d7fe.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"efba7d418aa50a0a5a427cdcc9d3ddf6d4dd48bb","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    and ``vsp_target_ports`` must be specified.\r"},{"line_number":9,"context_line":"  - Added a new config option\r"},{"line_number":10,"context_line":"    ``vsp_horcm_pair_target_ports`` to specify IDs of the\r"},{"line_number":11,"context_line":"    storage ports used to copy volumes by ShadowImage or\r"},{"line_number":12,"context_line":"    Thin Image. The default is the value specified for\r"},{"line_number":13,"context_line":"    the existing ``vsp_target_ports`` option. Either\r"},{"line_number":14,"context_line":"    or both of ``vsp_horcm_pair_target_ports`` and\r"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9a57fde8_43358f44","line":11,"range":{"start_line":11,"start_character":42,"end_line":11,"end_character":53},"updated":"2017-01-12 18:40:54.000000000","message":"nit: Add a space between \"Shadow\" and \"Image\" to be consistent with \"Thin Image\".","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"95a2e55bf888c4e66c14f4a7bde5b7d9ca972f43","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    and ``vsp_target_ports`` must be specified.\r"},{"line_number":9,"context_line":"  - Added a new config option\r"},{"line_number":10,"context_line":"    ``vsp_horcm_pair_target_ports`` to specify IDs of the\r"},{"line_number":11,"context_line":"    storage ports used to copy volumes by ShadowImage or\r"},{"line_number":12,"context_line":"    Thin Image. The default is the value specified for\r"},{"line_number":13,"context_line":"    the existing ``vsp_target_ports`` option. Either\r"},{"line_number":14,"context_line":"    or both of ``vsp_horcm_pair_target_ports`` and\r"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7a3c09a3_1450d55c","line":11,"range":{"start_line":11,"start_character":42,"end_line":11,"end_character":53},"in_reply_to":"9a57fde8_43358f44","updated":"2017-01-16 12:33:04.000000000","message":"Done","commit_id":"d1d650d58361afae5f0d97ad53a9bba1d9e207d8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1adeae6ccc88b4c5416bbcb10a3909b17289bf19","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Added a new config option ``vsp_compute_target_ports``\r"},{"line_number":4,"context_line":"    to specify IDs of the storage ports used to attach\r"},{"line_number":5,"context_line":"    volumes to compute nodes. The default is the value\r"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a461143_bd8d802c","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"updated":"2017-02-01 18:10:25.000000000","message":"I don\u0027t think this should be under upgrade. That should be for existing deployments that must make a config change on upgrade. This is just adding new configuration options, so I think it can just go under features.\n\nAlso, please mention the drivers affected in the notes so it\u0027s clear to what backends these changes apply.","commit_id":"163b37765208cbfaa6bcff34c5fbab8e42bf703d"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"c65d118bd8fd8718ca29104b3c39ec7e380587b5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - Added a new config option ``vsp_compute_target_ports``\r"},{"line_number":4,"context_line":"    to specify IDs of the storage ports used to attach\r"},{"line_number":5,"context_line":"    volumes to compute nodes. The default is the value\r"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3a461143_41b836e6","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"in_reply_to":"3a461143_bd8d802c","updated":"2017-02-01 19:30:25.000000000","message":"Done","commit_id":"163b37765208cbfaa6bcff34c5fbab8e42bf703d"}]}
