Topology View for Identity

Registered by David Lyle

Summary
=======
Providing a topological view of identity entities(domains, projects, groups, users and roles) aims openstack users to have a bird-eye-view of how identity is structured in their cloud.

Motivation
========
With Domains, Projects, Users, Groups and Roles, understanding the organization and relationship of these ideas can be difficult. So, to easily disposed of any complexity out of identity service, we should create a more graphic depiction of these relationships in a topological view something strongly like currently implemented network-topology canvas.

Description
=========
After this feature added on, the following capabilities will be provided:
- A topological view of all identity elements and their relationships together
- Ability to browse domains, projects, users, groups and roles in an identity canvas
- Get detailed information about every elements by hovering the mouse over the elements
- Ability to create and delete the elements(projects, users, groups, …) [Pending for first approval]
- Hyperlink to detailed page for all elements [Pending for first approval].

UX
===
The followings are basic sketch arround how identity-topology will looks like:
Unexpanded: https://www.dropbox.com/s/uvvpmksolbrqckj/UnExpanded.png?dl=0
Expanded: https://www.dropbox.com/s/5hzvolobntcf7g5/Expanded.png?dl=0
OverLoaded: https://www.dropbox.com/s/yqcertd0cma5y5n/OverLoaded.png?dl=0
MouseHover: https://www.dropbox.com/s/ylv40zvhhddppp2/MouseHover.png?dl=0
Domain Scoped Roles: https://www.dropbox.com/s/2q44mjq3klmnjum/Domain_Scoped_role.png?dl=0
Domain vs project scoped roles: https://www.dropbox.com/s/wibxdrccx27l6eg/project_domain_scoped_explaination.png?dl=0

Testing
======
1- Go to identity tab at horizon left-side panel
2- When expanded, click on identity topology
3- Browse the canvas by expanding the elemets and get information about every elements
4- Add and delete some stuffs from the canvas to check add and remove functionality

Outside Dependencies
==================
N/A

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

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

Blueprint information

Status:
Complete
Approver:
David Lyle
Priority:
Low
Drafter:
David Lyle
Direction:
Approved
Assignee:
hossein zabolzadeh
Definition:
Obsolete
Series goal:
None
Implementation:
Needs Code Review
Milestone target:
None
Started by
hossein zabolzadeh
Completed by
Rob Cresswell

Related branches

Sprints

Whiteboard

[Zabolzadeh - July 19, 2015]:
I draw several wireframes for identity topology. This blueprint is a good idea, and I am willing to implement it. See the following wireframes:
https://invis.io/6Z4G9W7FC
--------
[Zabolzadeh - July 21, 2015]:
As far as I undrestand, roles can be assigned to a pair of both group-domain and group-project. So, in this case, how to draw this relationsip is a problem needs to be solved in UX era. Currently I am thinking about how can we afford it in UI! Snapshots will be updated and replaced with new sketches.
--------
[Zabolzadeh - July 23, 2015]:
I defined two terms with the following definition:
- Project-scoped role: A role that is assigned to user or group in a project context and adds permision only in specific project.
- Domain-scoped role: A role that is assigned to user or group in a domain context, and adds permission in specific domain.
I draw a figure to show how these two different role assignement can be illustrated over the identity topology canvas: https://www.dropbox.com/s/2q44mjq3klmnjum/Domain_Scoped_role.png?dl=0

With these terms in mind, 4 permutations can be defined that should be illustrated somehow on the identity topology canvas:
CASE1: Assign project-scoped role to user
CASE2: Assign project-scoped role to group
CASE3: Assign domain-scoped role to user
CASE4: Assign domain-scoped roles to group
I draw a figure to show how these 4 cases can be illustrated on the canvas: https://invis.io/6Z4G9W7FC
--------
[Zabolzadeh - Saturday October 3, 2015]:
PEOGRESS: 100%

Gerrit topic: https://review.openstack.org/#q,topic:bp/identity-topology,n,z

Addressed by: https://review.openstack.org/231284
    Topology View for Identity

[robcresswell 2017-02-21]
Moved to wishlist https://blueprints.launchpad.net/horizon/+spec/wishlist

(?)

Work Items

Work items:
Prepare a network-topology-like codebase ready for customization: DONE
Finalize design sketches for identity topology: DONE
implement view functions for identity topology: DONE
Customize svg_element.html for identity topology elements(domain, projects, ...): DONE
Write javascript draw function for all entities(projects, users, ...): DONE
Integrate views, templates and urls to work properly together: DONE
Optimize css and svgs and compress js files: DONE
Write test cases: DONE
Pull and rebase to merge: DONE

This blueprint contains Public information 
Everyone can see this information.