def _change_iscsi_settings(self, iscsi_info):
        """Change iSCSI settings.

        :param iscsi_info: A dictionary that contains information of iSCSI
                           target like target_name, lun, ip_address, port etc.
        :raises: IloError, on an error from iLO.
        """
        headers, bios_uri, bios_settings = self._check_bios_resource()
        # Get the Mappings resource.
        map_settings = self._get_bios_mappings_resource(bios_settings)
        nics = []
        for mapping in map_settings['BiosPciSettingsMappings']:
            for subinstance in mapping['Subinstances']:
                for association in subinstance['Associations']:
                    if 'NicBoot' in association:
                        nics.append(association)

        if not nics:
            msg = ('No nics found')
            raise exception.IloError(msg)

        iscsi_uri = self._check_iscsi_rest_patch_allowed()
        # Set iSCSI info to all nics
        iscsi_infos = []
        for nic in nics:
            data = iscsi_info.copy()
            data['iSCSIBootAttemptName'] = nic
            data['iSCSINicSource'] = nic
            data['iSCSIBootAttemptInstance'] = nics.index(nic) + 1
            iscsi_infos.append(data)

        patch_data = {'iSCSIBootSources': iscsi_infos}
        status, headers, response = self._rest_patch(iscsi_uri,
                                                     None, patch_data)
        if status >= 300:
            msg = self._get_extended_error(response)
            raise exception.IloError(msg)
Change iSCSI settings.

        :param iscsi_info: A dictionary that contains information of iSCSI
                           target like target_name, lun, ip_address, port etc.
        :raises: IloError, on an error from iLO.