)]}'
{"cinder/tests/unit/volume/drivers/test_nimble.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                    self, mock_client_class, mock_urllib2, *args, **kwargs):"},{"line_number":224,"context_line":"                self.mock_client_class \u003d mock_client_class"},{"line_number":225,"context_line":"                self.mock_client_service \u003d mock.MagicMock(name\u003d\u0027Client\u0027)"},{"line_number":226,"context_line":"                self.mock_client_class.Client.return_value \u003d \\"},{"line_number":227,"context_line":"                    self.mock_client_service"},{"line_number":228,"context_line":"                mock_wsdl \u003d mock_urllib2.urlopen.return_value"},{"line_number":229,"context_line":"                mock_wsdl.read \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_c9a121fa","line":226,"updated":"2016-10-13 20:03:30.000000000","message":"Use () instead of \\","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                    self, mock_client_class, mock_urllib2, *args, **kwargs):"},{"line_number":224,"context_line":"                self.mock_client_class \u003d mock_client_class"},{"line_number":225,"context_line":"                self.mock_client_service \u003d mock.MagicMock(name\u003d\u0027Client\u0027)"},{"line_number":226,"context_line":"                self.mock_client_class.Client.return_value \u003d \\"},{"line_number":227,"context_line":"                    self.mock_client_service"},{"line_number":228,"context_line":"                mock_wsdl \u003d mock_urllib2.urlopen.return_value"},{"line_number":229,"context_line":"                mock_wsdl.read \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_acd4fb1f","line":226,"in_reply_to":"fa6399be_c9a121fa","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                mock_wsdl.read.return_value \u003d FAKE_ENUM_STRING"},{"line_number":231,"context_line":"                self.driver \u003d nimble.NimbleFCDriver("},{"line_number":232,"context_line":"                    configuration\u003dconfiguration)"},{"line_number":233,"context_line":"                self.mock_client_service.service.login.return_value \u003d \\"},{"line_number":234,"context_line":"                    FAKE_POSITIVE_LOGIN_RESPONSE_1"},{"line_number":235,"context_line":"                self.driver.do_setup(context.get_admin_context())"},{"line_number":236,"context_line":"                func(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_09a879da","line":233,"updated":"2016-10-13 20:03:30.000000000","message":"Same","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                mock_wsdl.read.return_value \u003d FAKE_ENUM_STRING"},{"line_number":231,"context_line":"                self.driver \u003d nimble.NimbleFCDriver("},{"line_number":232,"context_line":"                    configuration\u003dconfiguration)"},{"line_number":233,"context_line":"                self.mock_client_service.service.login.return_value \u003d \\"},{"line_number":234,"context_line":"                    FAKE_POSITIVE_LOGIN_RESPONSE_1"},{"line_number":235,"context_line":"                self.driver.do_setup(context.get_admin_context())"},{"line_number":236,"context_line":"                func(self, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_ccd92f59","line":233,"in_reply_to":"fa6399be_09a879da","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"                                                   mock_lun_number):"},{"line_number":1054,"context_line":"        mock_lun_number.return_value \u003d 13"},{"line_number":1055,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1056,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1057,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1058,"context_line":"        expected_res \u003d {"},{"line_number":1059,"context_line":"            \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_89b48935","line":1056,"updated":"2016-10-13 20:03:30.000000000","message":"Same","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"                                                   mock_lun_number):"},{"line_number":1054,"context_line":"        mock_lun_number.return_value \u003d 13"},{"line_number":1055,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1056,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1057,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1058,"context_line":"        expected_res \u003d {"},{"line_number":1059,"context_line":"            \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_2ce9cbe6","line":1056,"in_reply_to":"fa6399be_89b48935","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        mock_random.sample.return_value \u003d \u0027abcdefghijkl\u0027"},{"line_number":1148,"context_line":"        mock_lun_number.return_value \u003d 13"},{"line_number":1149,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1150,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1151,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1152,"context_line":"        expected_res \u003d {"},{"line_number":1153,"context_line":"            \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_c9884174","line":1150,"updated":"2016-10-13 20:03:30.000000000","message":"Same","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        mock_random.sample.return_value \u003d \u0027abcdefghijkl\u0027"},{"line_number":1148,"context_line":"        mock_lun_number.return_value \u003d 13"},{"line_number":1149,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1150,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1151,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1152,"context_line":"        expected_res \u003d {"},{"line_number":1153,"context_line":"            \u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_6cef43e9","line":1150,"in_reply_to":"fa6399be_c9884174","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":1219,"context_line":"    @mock.patch(NIMBLE_FC_DRIVER + \".get_wwpns_from_array\")"},{"line_number":1220,"context_line":"    def test_terminate_connection_positive_fc(self, mock_wwpns):"},{"line_number":1221,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1222,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1223,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1224,"context_line":"        self.driver.terminate_connection("},{"line_number":1225,"context_line":"            {\u0027name\u0027: \u0027test-volume\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_097f9966","line":1222,"updated":"2016-10-13 20:03:30.000000000","message":"Same","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":1219,"context_line":"    @mock.patch(NIMBLE_FC_DRIVER + \".get_wwpns_from_array\")"},{"line_number":1220,"context_line":"    def test_terminate_connection_positive_fc(self, mock_wwpns):"},{"line_number":1221,"context_line":"        mock_wwpns.return_value \u003d [\"1111111111111101\"]"},{"line_number":1222,"context_line":"        self.mock_client_service.service.getInitiatorGrpList.return_value \u003d \\"},{"line_number":1223,"context_line":"            FAKE_IGROUP_LIST_RESPONSE_FC"},{"line_number":1224,"context_line":"        self.driver.terminate_connection("},{"line_number":1225,"context_line":"            {\u0027name\u0027: \u0027test-volume\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_8cec97f4","line":1222,"in_reply_to":"fa6399be_097f9966","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"}],"cinder/volume/drivers/nimble.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cbb58fadc1f5d44c3a0cb9c8347926efca1cd919","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                self.group_stats \u003d {\u0027volume_backend_name\u0027: backend_name,"},{"line_number":330,"context_line":"                                    \u0027vendor_name\u0027: \u0027Nimble\u0027,"},{"line_number":331,"context_line":"                                    \u0027driver_version\u0027: DRIVER_VERSION,"},{"line_number":332,"context_line":"                                    \u0027storage_protocol\u0027: \u0027FC\u0027}"},{"line_number":333,"context_line":"            # Just use a single pool for now, FIXME to support multiple"},{"line_number":334,"context_line":"            # pools"},{"line_number":335,"context_line":"            single_pool \u003d dict("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_31b0da8b","line":332,"updated":"2016-08-25 21:43:20.000000000","message":"the only difference in theses is the storage_protocol, which is already in self._storage_protocol.   why not just get rid of the if elif completely?","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                self.group_stats \u003d {\u0027volume_backend_name\u0027: backend_name,"},{"line_number":330,"context_line":"                                    \u0027vendor_name\u0027: \u0027Nimble\u0027,"},{"line_number":331,"context_line":"                                    \u0027driver_version\u0027: DRIVER_VERSION,"},{"line_number":332,"context_line":"                                    \u0027storage_protocol\u0027: \u0027FC\u0027}"},{"line_number":333,"context_line":"            # Just use a single pool for now, FIXME to support multiple"},{"line_number":334,"context_line":"            # pools"},{"line_number":335,"context_line":"            single_pool \u003d dict("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_6c79a42f","line":332,"in_reply_to":"fa7ab95a_31b0da8b","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cbb58fadc1f5d44c3a0cb9c8347926efca1cd919","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        elif self._storage_protocol \u003d\u003d \"FC\":"},{"line_number":464,"context_line":"            self.APIExecutor.create_initiator_group_fc(igrp_name,"},{"line_number":465,"context_line":"                                                       initiator_name,"},{"line_number":466,"context_line":"                                                       wwpn_list)"},{"line_number":467,"context_line":"        return igrp_name"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_7106e221","line":466,"updated":"2016-08-25 21:43:20.000000000","message":"instead of doing these if elif\u0027s on iSCSI vs. FC, why not put the iSCSI code into the iSCSI driver child and the FC code into the FC driver, and call the same function.","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        elif self._storage_protocol \u003d\u003d \"FC\":"},{"line_number":464,"context_line":"            self.APIExecutor.create_initiator_group_fc(igrp_name,"},{"line_number":465,"context_line":"                                                       initiator_name,"},{"line_number":466,"context_line":"                                                       wwpn_list)"},{"line_number":467,"context_line":"        return igrp_name"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_ccd2b034","line":466,"in_reply_to":"fa7ab95a_7106e221","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cbb58fadc1f5d44c3a0cb9c8347926efca1cd919","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                                                       wwpn_list)"},{"line_number":467,"context_line":"        return igrp_name"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"},{"line_number":470,"context_line":"        initiator_groups \u003d self.APIExecutor.get_initiator_grp_list()"},{"line_number":471,"context_line":"        for initiator_group in initiator_groups:"},{"line_number":472,"context_line":"            if \u0027initiator-list\u0027 in initiator_group:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_5c10154f","line":469,"updated":"2016-08-25 21:43:20.000000000","message":"if this is specific to the FC driver, then shouldn\u0027t this live in the FC driver ?","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                                                       wwpn_list)"},{"line_number":467,"context_line":"        return igrp_name"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"},{"line_number":470,"context_line":"        initiator_groups \u003d self.APIExecutor.get_initiator_grp_list()"},{"line_number":471,"context_line":"        for initiator_group in initiator_groups:"},{"line_number":472,"context_line":"            if \u0027initiator-list\u0027 in initiator_group:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_ccb9d0ee","line":469,"in_reply_to":"fa7ab95a_5c10154f","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7f35d7df4dc4ce984dea04dad71761856cc4beef","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        return \u0027\u0027"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class NimbleISCSIDriver(NimbleBaseVolumeDriver, san.SanISCSIDriver):"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    \"\"\"OpenStack driver to enable Nimble ISCSI Controller.\"\"\""},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_100ae6d2","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":15},"updated":"2016-08-26 03:49:59.000000000","message":"empty below should be removed","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        return \u0027\u0027"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"class NimbleISCSIDriver(NimbleBaseVolumeDriver, san.SanISCSIDriver):"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    \"\"\"OpenStack driver to enable Nimble ISCSI Controller.\"\"\""},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_d9efc9ae","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":15},"in_reply_to":"fa7ab95a_100ae6d2","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7f35d7df4dc4ce984dea04dad71761856cc4beef","unresolved":false,"context_lines":[{"line_number":543,"context_line":"            LOG.info(_LI(\u0027Discovery ip %s is used on mgmt+data subnet\u0027),"},{"line_number":544,"context_line":"                     ret_discovery_ip)"},{"line_number":545,"context_line":"            return ret_discovery_ip"},{"line_number":546,"context_line":"        else:"},{"line_number":547,"context_line":"            raise NimbleDriverException(_(\u0027No suitable discovery ip found\u0027))"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b0adba8a","line":546,"range":{"start_line":546,"start_character":6,"end_line":546,"end_character":13},"updated":"2016-08-26 03:49:59.000000000","message":"**else** is not needed actually~","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":543,"context_line":"            LOG.info(_LI(\u0027Discovery ip %s is used on mgmt+data subnet\u0027),"},{"line_number":544,"context_line":"                     ret_discovery_ip)"},{"line_number":545,"context_line":"            return ret_discovery_ip"},{"line_number":546,"context_line":"        else:"},{"line_number":547,"context_line":"            raise NimbleDriverException(_(\u0027No suitable discovery ip found\u0027))"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def initialize_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_793f9d25","line":546,"range":{"start_line":546,"start_character":6,"end_line":546,"end_character":13},"in_reply_to":"fa7ab95a_b0adba8a","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7f35d7df4dc4ce984dea04dad71761856cc4beef","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        iqn \u003d vol_info[\u0027target-name\u0027]"},{"line_number":598,"context_line":"        netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":599,"context_line":"        target_ipaddr \u003d self._get_discovery_ip(netconfig)"},{"line_number":600,"context_line":"        iscsi_portal \u003d target_ipaddr + \u0027:3260\u0027"},{"line_number":601,"context_line":"        provider_location \u003d \u0027%s %s %s\u0027 % (iscsi_portal, iqn, LUN_ID)"},{"line_number":602,"context_line":"        LOG.info(_LI(\u0027vol_name\u003d%(name)s provider_location\u003d%(loc)s\u0027),"},{"line_number":603,"context_line":"                 {\u0027name\u0027: volume_name, \u0027loc\u0027: provider_location})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_30fe0a6c","line":600,"range":{"start_line":600,"start_character":40,"end_line":600,"end_character":46},"updated":"2016-08-26 03:49:59.000000000","message":"3260 is the default port, so it\u0027s better to define it in constant","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        iqn \u003d vol_info[\u0027target-name\u0027]"},{"line_number":598,"context_line":"        netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":599,"context_line":"        target_ipaddr \u003d self._get_discovery_ip(netconfig)"},{"line_number":600,"context_line":"        iscsi_portal \u003d target_ipaddr + \u0027:3260\u0027"},{"line_number":601,"context_line":"        provider_location \u003d \u0027%s %s %s\u0027 % (iscsi_portal, iqn, LUN_ID)"},{"line_number":602,"context_line":"        LOG.info(_LI(\u0027vol_name\u003d%(name)s provider_location\u003d%(loc)s\u0027),"},{"line_number":603,"context_line":"                 {\u0027name\u0027: volume_name, \u0027loc\u0027: provider_location})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_39b0b5dd","line":600,"range":{"start_line":600,"start_character":40,"end_line":600,"end_character":46},"in_reply_to":"fa7ab95a_30fe0a6c","updated":"2016-08-26 17:19:31.000000000","message":"Done","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7f35d7df4dc4ce984dea04dad71761856cc4beef","unresolved":false,"context_lines":[{"line_number":640,"context_line":"                for initiator in fabric[\u0027initiator_port_wwn_list\u0027]:"},{"line_number":641,"context_line":"                    if initiator not in init_targ_map:"},{"line_number":642,"context_line":"                        init_targ_map[initiator] \u003d []"},{"line_number":643,"context_line":"                    init_targ_map[initiator] +\u003d fabric[\u0027target_port_wwn_list\u0027]"},{"line_number":644,"context_line":"                    init_targ_map[initiator] \u003d list(set("},{"line_number":645,"context_line":"                        init_targ_map[initiator]))"},{"line_number":646,"context_line":"        else:"},{"line_number":647,"context_line":"            init_targ_map \u003d dict.fromkeys(connector[\"wwpns\"], target_wwns)"},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_50d62ec6","line":645,"range":{"start_line":643,"start_character":19,"end_line":645,"end_character":50},"updated":"2016-08-26 03:49:59.000000000","message":"init_targ_map[initiator] asssigned twice at these lines ?","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":640,"context_line":"                for initiator in fabric[\u0027initiator_port_wwn_list\u0027]:"},{"line_number":641,"context_line":"                    if initiator not in init_targ_map:"},{"line_number":642,"context_line":"                        init_targ_map[initiator] \u003d []"},{"line_number":643,"context_line":"                    init_targ_map[initiator] +\u003d fabric[\u0027target_port_wwn_list\u0027]"},{"line_number":644,"context_line":"                    init_targ_map[initiator] \u003d list(set("},{"line_number":645,"context_line":"                        init_targ_map[initiator]))"},{"line_number":646,"context_line":"        else:"},{"line_number":647,"context_line":"            init_targ_map \u003d dict.fromkeys(connector[\"wwpns\"], target_wwns)"},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_59b019f5","line":645,"range":{"start_line":643,"start_character":19,"end_line":645,"end_character":50},"in_reply_to":"fa7ab95a_50d62ec6","updated":"2016-08-26 17:19:31.000000000","message":"Not really. First we get the list of wwns and make sure that only unique ones are  kept in init_targ_map[initiator]","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cbb58fadc1f5d44c3a0cb9c8347926efca1cd919","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":720,"context_line":"                \u0027data\u0027: {\"target_wwn\": target_wwns,"},{"line_number":721,"context_line":"                         \"initiator_target_map\": init_targ_map}}"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"        return data"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_dc86e564","line":721,"updated":"2016-08-25 21:43:20.000000000","message":"only return the initiator_target_map if you don\u0027t have any more volumes attached to the host.  if the map is in this dict, the fibre channel zone manager will remove the zone.","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":720,"context_line":"                \u0027data\u0027: {\"target_wwn\": target_wwns,"},{"line_number":721,"context_line":"                         \"initiator_target_map\": init_targ_map}}"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"        return data"},{"line_number":724,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_fde1e0d1","line":721,"in_reply_to":"fa7ab95a_dc86e564","updated":"2016-08-26 17:19:31.000000000","message":"The current version of our driver uses SOAP API\u0027s and there aren\u0027t direct API\u0027s to filter volumes by host (access control records). We have tested in our lab with this configuration. The next version has REST where we can filter volumes. If you are ok with it, I can put a TODO note here","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"7f35d7df4dc4ce984dea04dad71761856cc4beef","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"        request[\u0027attr\u0027][\u0027initiator-list\u0027] \u003d []"},{"line_number":1207,"context_line":"        for i, wwpn in enumerate(wwpn_list):"},{"line_number":1208,"context_line":"            initiator \u003d {}"},{"line_number":1209,"context_line":"            initiator[\u0027access-protocol\u0027] \u003d 2"},{"line_number":1210,"context_line":"            initiator[\u0027wwpn\u0027] \u003d wwpn"},{"line_number":1211,"context_line":"            request[\u0027attr\u0027][\u0027initiator-list\u0027].append(initiator)"},{"line_number":1212,"context_line":"        LOG.debug(\"createInitiatorGrp request %s\", request)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b0fcda3f","line":1209,"range":{"start_line":1209,"start_character":42,"end_line":1209,"end_character":44},"updated":"2016-08-26 03:49:59.000000000","message":"what\u0027s the number stands for,and why","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"ce8ab588ce4e7c3d4407403da574d81b2c5fdccc","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"        request[\u0027attr\u0027][\u0027initiator-list\u0027] \u003d []"},{"line_number":1207,"context_line":"        for i, wwpn in enumerate(wwpn_list):"},{"line_number":1208,"context_line":"            initiator \u003d {}"},{"line_number":1209,"context_line":"            initiator[\u0027access-protocol\u0027] \u003d 2"},{"line_number":1210,"context_line":"            initiator[\u0027wwpn\u0027] \u003d wwpn"},{"line_number":1211,"context_line":"            request[\u0027attr\u0027][\u0027initiator-list\u0027].append(initiator)"},{"line_number":1212,"context_line":"        LOG.debug(\"createInitiatorGrp request %s\", request)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_d9aa6970","line":1209,"range":{"start_line":1209,"start_character":42,"end_line":1209,"end_character":44},"in_reply_to":"fa7ab95a_b0fcda3f","updated":"2016-08-26 17:19:31.000000000","message":"that is for Fibre Channel Protocol, will define it as a constant","commit_id":"15ba57b52faf8bd8aade8426a9f811f43c3843ae"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a71a86891423b686a01c761261d2c62df0834d1f","unresolved":false,"context_lines":[{"line_number":694,"context_line":"                _(\u0027No initiator group found for initiator %s\u0027) %"},{"line_number":695,"context_line":"                initiator_name)"},{"line_number":696,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":697,"context_line":"        # FIXME to check for other volumes attached to the host"},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\"target_wwn\": target_wwns,"},{"line_number":700,"context_line":"                         \"initiator_target_map\": init_targ_map}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_ab3b4e37","line":697,"updated":"2016-08-26 22:02:58.000000000","message":"Can you file a bug against this if you can\u0027t fix it?  \nThis is a bad one.  IF you have 10 volumes attached to the host, the first detach will nuke all 10, because the zone will disappear.","commit_id":"0a29cf6acfefac84ecd03bcbe1902bf9c943eeee"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"fd926853bc9f3167444b75a30fba413dfad08d81","unresolved":false,"context_lines":[{"line_number":694,"context_line":"                _(\u0027No initiator group found for initiator %s\u0027) %"},{"line_number":695,"context_line":"                initiator_name)"},{"line_number":696,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":697,"context_line":"        # FIXME to check for other volumes attached to the host"},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\"target_wwn\": target_wwns,"},{"line_number":700,"context_line":"                         \"initiator_target_map\": init_targ_map}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_c850950d","line":697,"in_reply_to":"fa7ab95a_ab3b4e37","updated":"2016-08-26 22:41:06.000000000","message":"Done","commit_id":"0a29cf6acfefac84ecd03bcbe1902bf9c943eeee"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"212b8da2d45bb97e53f6ace4300accba956f58b4","unresolved":false,"context_lines":[{"line_number":696,"context_line":"        LOG.debug(\"init_targ_map\".format(init_targ_map))"},{"line_number":697,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":698,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":699,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"},{"line_number":702,"context_line":"        initiator_groups \u003d self.APIExecutor.get_initiator_grp_list()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_912d8d97","line":699,"updated":"2016-08-29 16:57:39.000000000","message":"If you don\u0027t return anything from this method, you are going to get warnings. \n\nhttps://github.com/openstack/cinder/blob/master/cinder/zonemanager/utils.py#L101\n\nYou should return a proper dictionary, just don\u0027t return the initiator target map until you can determine there are no attachments left.","commit_id":"6c88dc5250b51feb4138db5011e649562d0504cb"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"2e1315da270a4ae50ec3fd3a6c7aa581099aa636","unresolved":false,"context_lines":[{"line_number":696,"context_line":"        LOG.debug(\"init_targ_map\".format(init_targ_map))"},{"line_number":697,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":698,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":699,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"},{"line_number":702,"context_line":"        initiator_groups \u003d self.APIExecutor.get_initiator_grp_list()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_ecdd1ee1","line":699,"in_reply_to":"fa7ab95a_912d8d97","updated":"2016-08-29 17:18:25.000000000","message":"Done","commit_id":"6c88dc5250b51feb4138db5011e649562d0504cb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2f804636520b1dcca860887f812638bc615f36e8","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        2.0.1 - Added multi-initiator support through extra-specs"},{"line_number":114,"context_line":"        2.0.2 - Fixed supporting extra specs while cloning vols"},{"line_number":115,"context_line":"        3.0.0 - Newton Support for Force Backup"},{"line_number":116,"context_line":"              - Fibre Channel Support"},{"line_number":117,"context_line":"    \"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    VERSION \u003d DRIVER_VERSION"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_cf290de8","line":116,"updated":"2016-09-16 18:10:25.000000000","message":"Did you want to bump this as its own version now?","commit_id":"8ccb2eb476b261f58497ada5694ba8cbaab16426"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"e52c21b7c6286a9dbdae81ddd705ac3c888bff8d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        2.0.1 - Added multi-initiator support through extra-specs"},{"line_number":114,"context_line":"        2.0.2 - Fixed supporting extra specs while cloning vols"},{"line_number":115,"context_line":"        3.0.0 - Newton Support for Force Backup"},{"line_number":116,"context_line":"              - Fibre Channel Support"},{"line_number":117,"context_line":"    \"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    VERSION \u003d DRIVER_VERSION"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_b07b3d7a","line":116,"in_reply_to":"7a8ec9b2_cf290de8","updated":"2016-09-16 21:05:57.000000000","message":"Sure. Since its not a part of Newton any more","commit_id":"8ccb2eb476b261f58497ada5694ba8cbaab16426"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4cb90976a88160fe95d71a07993fc5583a56d3e0","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        self.APIExecutor.online_vol(vol_name, False, ignore_list\u003d["},{"line_number":447,"context_line":"            \u0027SM-enoent\u0027])"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _create_igroup_for_initiator_iscsi(self, initiator_name):"},{"line_number":450,"context_line":"        \"\"\"Creates igroup for an initiator and returns the igroup name.\"\"\""},{"line_number":451,"context_line":"        igrp_name \u003d \u0027openstack-\u0027 + self._generate_random_string(12)"},{"line_number":452,"context_line":"        LOG.info(_LI(\u0027Creating initiator group %(grp)s \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_21dc0874","line":449,"updated":"2016-09-19 12:48:17.000000000","message":"Do we need both of these methods (_create_igroup_for_initiator_iscsi and _create_igroup_for_initiator_fc) in a base class?","commit_id":"c3c4363615c286e14f6d89ab9757a5445ac2d4e6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"cf901b728b511b30a08858c61040df6ef3b77006","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        self.APIExecutor.online_vol(vol_name, False, ignore_list\u003d["},{"line_number":447,"context_line":"            \u0027SM-enoent\u0027])"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _create_igroup_for_initiator_iscsi(self, initiator_name):"},{"line_number":450,"context_line":"        \"\"\"Creates igroup for an initiator and returns the igroup name.\"\"\""},{"line_number":451,"context_line":"        igrp_name \u003d \u0027openstack-\u0027 + self._generate_random_string(12)"},{"line_number":452,"context_line":"        LOG.info(_LI(\u0027Creating initiator group %(grp)s \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_40b81ce6","line":449,"in_reply_to":"7a8ec9b2_21dc0874","updated":"2016-09-19 18:36:35.000000000","message":"Separated the methods to respective driver","commit_id":"c3c4363615c286e14f6d89ab9757a5445ac2d4e6"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4cb90976a88160fe95d71a07993fc5583a56d3e0","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        request[\u0027attr\u0027][\u0027name\u0027] \u003d initiator_group_name"},{"line_number":1186,"context_line":"        request[\u0027attr\u0027][\u0027access-protocol\u0027] \u003d FIBRE_CHANNEL_PROTOCOL"},{"line_number":1187,"context_line":"        request[\u0027attr\u0027][\u0027initiator-list\u0027] \u003d []"},{"line_number":1188,"context_line":"        for i, wwpn in enumerate(wwpn_list):"},{"line_number":1189,"context_line":"            initiator \u003d {}"},{"line_number":1190,"context_line":"            initiator[\u0027access-protocol\u0027] \u003d FIBRE_CHANNEL_PROTOCOL"},{"line_number":1191,"context_line":"            initiator[\u0027wwpn\u0027] \u003d wwpn"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_e124e061","line":1188,"updated":"2016-09-19 12:48:17.000000000","message":"We don\u0027t need \u0027enumerate\u0027 here, just \u0027for wwpn in wwpn_list\u0027 will be enouph","commit_id":"c3c4363615c286e14f6d89ab9757a5445ac2d4e6"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"cf901b728b511b30a08858c61040df6ef3b77006","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        request[\u0027attr\u0027][\u0027name\u0027] \u003d initiator_group_name"},{"line_number":1186,"context_line":"        request[\u0027attr\u0027][\u0027access-protocol\u0027] \u003d FIBRE_CHANNEL_PROTOCOL"},{"line_number":1187,"context_line":"        request[\u0027attr\u0027][\u0027initiator-list\u0027] \u003d []"},{"line_number":1188,"context_line":"        for i, wwpn in enumerate(wwpn_list):"},{"line_number":1189,"context_line":"            initiator \u003d {}"},{"line_number":1190,"context_line":"            initiator[\u0027access-protocol\u0027] \u003d FIBRE_CHANNEL_PROTOCOL"},{"line_number":1191,"context_line":"            initiator[\u0027wwpn\u0027] \u003d wwpn"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8ec9b2_c0726c49","line":1188,"in_reply_to":"7a8ec9b2_e124e061","updated":"2016-09-19 18:36:35.000000000","message":"Thanks for pointing out. I had initially used the enumerate.","commit_id":"c3c4363615c286e14f6d89ab9757a5445ac2d4e6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"        lun \u003d self.get_lun_number(volume, initiator_group_name)"},{"line_number":651,"context_line":"        init_targ_map \u003d {}"},{"line_number":652,"context_line":"        (array_name) \u003d volume[\u0027provider_location\u0027].split()"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        target_wwns \u003d self.get_wwpns_from_array(array_name)"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_c905a111","line":652,"updated":"2016-10-13 20:03:30.000000000","message":"No need for () around array_name.","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"        lun \u003d self.get_lun_number(volume, initiator_group_name)"},{"line_number":651,"context_line":"        init_targ_map \u003d {}"},{"line_number":652,"context_line":"        (array_name) \u003d volume[\u0027provider_location\u0027].split()"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        target_wwns \u003d self.get_wwpns_from_array(array_name)"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_2cfb8bc2","line":652,"in_reply_to":"fa6399be_c905a111","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        for wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":682,"context_line":"            wwpns.append(wwpn)"},{"line_number":683,"context_line":"        init_targ_map \u003d {}"},{"line_number":684,"context_line":"        (array_name) \u003d volume[\u0027provider_location\u0027].split()"},{"line_number":685,"context_line":"        target_wwns \u003d self.get_wwpns_from_array(array_name)"},{"line_number":686,"context_line":"        init_targ_map \u003d self._build_initiator_target_map(target_wwns,"},{"line_number":687,"context_line":"                                                         connector)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_090cf939","line":684,"updated":"2016-10-13 20:03:30.000000000","message":"No need for ().","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        for wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":682,"context_line":"            wwpns.append(wwpn)"},{"line_number":683,"context_line":"        init_targ_map \u003d {}"},{"line_number":684,"context_line":"        (array_name) \u003d volume[\u0027provider_location\u0027].split()"},{"line_number":685,"context_line":"        target_wwns \u003d self.get_wwpns_from_array(array_name)"},{"line_number":686,"context_line":"        init_targ_map \u003d self._build_initiator_target_map(target_wwns,"},{"line_number":687,"context_line":"                                                         connector)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_8cfe57ac","line":684,"in_reply_to":"fa6399be_090cf939","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        LOG.debug(\"initiator_target_map\".format(init_targ_map))"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":696,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\u0027target_wwn\u0027: target_wwns}}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_a975cd98","line":696,"updated":"2016-10-13 20:03:30.000000000","message":"Will this be fixed in Ocata?  If this won\u0027t be fixed in Ocata, you should add this limitation in the release notes, saying that the zone will not be removed until this is fixed.","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        LOG.debug(\"initiator_target_map\".format(init_targ_map))"},{"line_number":694,"context_line":"        self.APIExecutor.remove_acl(volume, initiator_group_name)"},{"line_number":695,"context_line":"        # FIXME to check for other volumes attached to the host and then"},{"line_number":696,"context_line":"        # return the data. Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\u0027target_wwn\u0027: target_wwns}}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_2cc62b9a","line":696,"in_reply_to":"fa6399be_a975cd98","updated":"2016-10-13 20:30:11.000000000","message":"Sure, will do. Not sure if this can be made into Ocata. No regressions are hit yet.","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2b748c8d082bbc6e61c3ee98fa826e4d25be084d","unresolved":false,"context_lines":[{"line_number":697,"context_line":""},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\u0027target_wwn\u0027: target_wwns}}"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        return data"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_a9894d28","line":700,"updated":"2016-10-13 20:03:30.000000000","message":"data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,\n              \u0027data\u0027: {}}","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":697,"context_line":""},{"line_number":698,"context_line":"        data \u003d {\u0027driver_volume_type\u0027: \u0027fibre_channel\u0027,"},{"line_number":699,"context_line":"                \u0027data\u0027: {\u0027target_wwn\u0027: target_wwns}}"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        return data"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def _get_igroupname_for_initiator_fc(self, initiator_wwpns):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_8c6737b6","line":700,"in_reply_to":"fa6399be_a9894d28","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"}],"releasenotes/notes/nimble-add-fc-support-0007fdbd647be947.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"2f804636520b1dcca860887f812638bc615f36e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Fibre Channel Support for Nimble Storage"},{"line_number":4,"context_line":"other:"},{"line_number":5,"context_line":"  - Unified driver with support for both iSCSI and FC"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7a8ec9b2_2ff7d159","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":53},"updated":"2016-09-16 18:10:25.000000000","message":"This section should be removed.","commit_id":"8ccb2eb476b261f58497ada5694ba8cbaab16426"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"e52c21b7c6286a9dbdae81ddd705ac3c888bff8d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Fibre Channel Support for Nimble Storage"},{"line_number":4,"context_line":"other:"},{"line_number":5,"context_line":"  - Unified driver with support for both iSCSI and FC"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7a8ec9b2_d06fe9f9","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":53},"in_reply_to":"7a8ec9b2_2ff7d159","updated":"2016-09-16 21:05:57.000000000","message":"Done","commit_id":"8ccb2eb476b261f58497ada5694ba8cbaab16426"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"99f61cc852866771bef79fbfeffe0a47d1bdaadb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Fibre Channel Support for Nimble Storage"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa6399be_b5e529dd","line":3,"updated":"2016-10-13 17:01:04.000000000","message":"Only if you need to do another update, this would be better as a full sentence. Something like:\n\nAdded Nimble Storage Fibre Channel backend driver.","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"72c4fff694e81a396c55d2db0a5e81c0357509fc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Fibre Channel Support for Nimble Storage"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa6399be_0cb7a7f5","line":3,"in_reply_to":"fa6399be_b5e529dd","updated":"2016-10-13 20:30:11.000000000","message":"Done","commit_id":"b19626ac66f0ee6cd22d007ac7db8caebe06694e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7b2da6b260061a1470693ec63dd6c745c954eb75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added Nimble Storage Fibre Channel backend driver"},{"line_number":4,"context_line":"issues:"},{"line_number":5,"context_line":"  - Zone will not be removed until Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":6,"context_line":"    is fixed"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"fa6399be_b50ee289","line":3,"updated":"2016-10-14 13:15:23.000000000","message":"Add period to the end of the sentence.","commit_id":"640d80a866a68c1c70d035124a0227c8774f7e47"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"73b3d5651aef42e634bc5b227672ae668ea30b50","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added Nimble Storage Fibre Channel backend driver"},{"line_number":4,"context_line":"issues:"},{"line_number":5,"context_line":"  - Zone will not be removed until Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":6,"context_line":"    is fixed"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"fa6399be_f8e5b108","line":3,"in_reply_to":"fa6399be_b50ee289","updated":"2016-10-14 13:32:41.000000000","message":"Done","commit_id":"640d80a866a68c1c70d035124a0227c8774f7e47"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7b2da6b260061a1470693ec63dd6c745c954eb75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added Nimble Storage Fibre Channel backend driver"},{"line_number":4,"context_line":"issues:"},{"line_number":5,"context_line":"  - Zone will not be removed until Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":6,"context_line":"    is fixed"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"fa6399be_f56bfa1b","line":6,"range":{"start_line":4,"start_character":0,"end_line":6,"end_character":12},"updated":"2016-10-14 13:15:23.000000000","message":"This should be removed. This will have no context in the release notes and isn\u0027t something we would want published there.","commit_id":"640d80a866a68c1c70d035124a0227c8774f7e47"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"73b3d5651aef42e634bc5b227672ae668ea30b50","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added Nimble Storage Fibre Channel backend driver"},{"line_number":4,"context_line":"issues:"},{"line_number":5,"context_line":"  - Zone will not be removed until Bug https://bugs.launchpad.net/cinder/+bug/1617472"},{"line_number":6,"context_line":"    is fixed"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"fa6399be_18f185cd","line":6,"range":{"start_line":4,"start_character":0,"end_line":6,"end_character":12},"in_reply_to":"fa6399be_f56bfa1b","updated":"2016-10-14 13:32:41.000000000","message":"Done","commit_id":"640d80a866a68c1c70d035124a0227c8774f7e47"}]}
