Browsing thousands of LDAP Users in Horizon

Registered by Timur Sufiev on 2015-09-23

This blueprint has been superseded. See the newer blueprint "Consistent Server Side Filtering" for updated plans.

Summary
=======
To make vast amounts (thousands) of Users inside LDAP browsable in Horizon.

Motivation
=========
Currently there is no way to paginate the table of Users fetched from LDAP behind Keystone (due to various technical limitations of Keystone - LDAP interaction and existence of multiple LDAP implementations). This makes table rendering impossible once the number of Users reaches ~500. So the operators either need to not show LDAP users inside Identity->Users table or hide this panel completely. A compromise solution here is to combine paging and filtering, with a paging of data limited by filters done at Keystone side.

Description
=========
By default, in absence of filtering Keystone rejects Horizon query to show Users, saying 'There is too much data to be shown, please narrow your query'. The exact number is meant to be configurable in a Keystone config. Once the filtering query yields the amount of Users less than configured threshold, Keystone emulates the paging behavior (without real support from LDAP side) by simply throwing away the data that don't fit into marker/limit frame. Given that it's already limited by filter, the overhead shouldn't be very high. For Horizon it just means that the table of Users won't be filled with data until some search criteria are specified, but once they are typed (and results fit within a configured limit), the pagination behavior is the same as for Instances of Images tables.

Note that Users stored within LDAP will continue to be read-only, due to security reasons.

UX
===
Filter at Users table becomes a server-side instead of being Client-side. The query is issued once User presses 'Enter' in a Filter input box.

Wireframes, Mocks, Videos and UI Markup
---------------------------------------------------------------
TBD

Testing
======
Should be covered both with unit and integration tests.

Outside Dependencies
==================
Changes in Keystone to support new behaviour.

Requirements Update Required
========================
N/A

Doc Impact
=========
N/A

Blueprint information

Status:
Complete
Approver:
David Lyle
Priority:
High
Drafter:
Timur Sufiev
Direction:
Needs approval
Assignee:
None
Definition:
Superseded
Series goal:
Accepted for 10.0.0-newton
Implementation:
Not started
Milestone target:
None
Completed by
David Lyle on 2016-10-28

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.