Angularize Identity Projects Panel

Registered by Paulo Ewerton

Angularize Identity Projects Panel

Summary
=======

Move OpenStack Dashboard Identity Projects panel rendering logic to client-side, using
AngularJS.

Motivation
========

OpenStack Kilo release introduced new reusable AngularJS widgets in Horizon, such as
a new table implementation with expandable content and filtering. These features
reflect an ongoing community effort on moving most rendering logic in different parts of Horizon from
server-side Django code to client-side, with AngularJS[1][2][3][4][5].

In order to comply with the features and changes described above, it is proposed to reimplement
Dashboard Identity Projects panel using AngularJS. Changes described here may be considered a step forward in relation to the work proposed in [6].

Description
=========

The following features will be added to Horizon:

a) Angularized projects table

The projects table will be reimplemented using the available AngularJS widgets.
User shall take advantage of expandable detail rows, content filtering and priority
columns on window resize.

b) Angularized projects actions

Modal forms and actions to create and edit a project, as well as batch project actions such as
deletion will be handled in the client-side using AngularJS services and controllers.

c) Services in Horizon REST API

The Identity Projects panel needs to make API requests to different OpenStack components
in order to perform its workflows. Some of theses services are not fully implemented
in Horizon's Python and AngularJS REST APIs yet.

UX
==

Wireframes, Mocks, Videos and UI Markup
---------------------------------------
In a first attempt, the UI will look and work the same as it currently does. However, future versions
will likely use a design compatible with what's being made with the new redesigned launch instance form[3]. Some ideias seem to be already sketched[7].

Testing
======

Reviewers will be able to pull the patch from Gerritt. Any specific information needed to test the changes will be provided in the commit message.

Outside Dependencies
==================

Necessary API services are already implemented. Nonetheless, new code to the REST APIs in Python[8] and AngularJS[9] shall probably be added for all of the workflows to work properly.

Below are all the existing APIs that are base functionality which will be used.

api.keystone.get_default_role
api.keystone.user_list
api.keystone.role_list
api.keystone.get_project_users_roles
api.keystone.group_list
api.keystone.get_project_groups_roles
api.base.is_service_enabled
api.neutron.is_quotas_extension_supported
api.neutron.tenant_quota_update
api.keystone.tenant_create
api.keystone.add_tenant_user_role
api.keystone.add_group_role
api.keystone.tenant_update
api.keystone.remove_tenant_user_role
api.keystone.roles_for_group
api.keystone.remove_group_role

Requirements Update Required
============================

N/A

Doc Impact
==========

Horizon documentation will be updated in order to expose to the user the new features that will be introduced. This could include:
  * settings file changes that will be required
  * changes to default behaviors
  * any deprecation or obsolescence notices

References
==========

[1] https://etherpad.openstack.org/p/kilo-horizon-django-angular-playing-nice
[2] https://www.dropbox.com/s/dyretopq71xdqnm/Django-Angular-Playing-Nice.pdf?dl=0
[3] https://blueprints.launchpad.net/horizon/+spec/launch-instance-redesign
[4] https://blueprints.launchpad.net/horizon/liberty
[5] https://bugs.launchpad.net/horizon/+bugs?field.tag=ng-subteam
[6] https://blueprints.launchpad.net/horizon/+spec/angularize-identity-tables
[7] https://openstack.invisionapp.com/share/NT1KVIH4S#/screens
[8] https://github.com/openstack/horizon/tree/master/openstack_dashboard/api/rest
[9] https://github.com/openstack/horizon/tree/master/horizon/static/horizon/js/angular/services

Blueprint information

Status:
Complete
Approver:
David Lyle
Priority:
Low
Drafter:
Paulo Ewerton
Direction:
Approved
Assignee:
Paulo Ewerton
Definition:
Obsolete
Series goal:
Accepted for 11.0.0-ocata
Implementation:
Started
Milestone target:
None
Started by
Paulo Ewerton
Completed by
Rob Cresswell

Related branches

Sprints

Whiteboard

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

Addressed by: https://review.openstack.org/191225
    Angularize Identity Projects Panel

Addressed by: https://review.openstack.org/199139
    Adding Identity NGProjects Panel

Addressed by: https://review.openstack.org/199567
    Adding Identity Projects Table

Addressed by: https://review.openstack.org/208581
    REST API to support angular quota workflows

Addressed by: https://review.openstack.org/209073
    Identity Projects Angular Quota API

Addressed by: https://review.openstack.org/209221 -- Abandoned
    Quota Functions in Angular API

[2015-08-19 | david-lyle] There is good progress here, but we're still working on a reusable pattern. And the functionality needs to be complete before merging. So pushing to Mitaka.

Addressed by: https://review.openstack.org/215352
    Adding Identity NGProjects Create Action - Details

Addressed by: https://review.openstack.org/245340
    Adding NGProjects Create Actions - Members

Addressed by: https://review.openstack.org/252412
    Adding NGProjects Create Action - Quota

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

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.