Horizon plugin support for Quotas and Service Info

Registered by Akihiro Motoki on 2018-01-16

Summary
=======
The goal of this blueprint is to make the quotas form in Project page and default quota page pluggable and allow horizon plugins to register their quota resources.

Motivation
========
Currently, Quota form in Project page, default quotas and service info contains only compute/volume/network information, but it is nice if these pages support horizon plugin resources. This blueprint aims to allow horizon plugins to add quotas and service info tabs.

Description
=========
The following quota related UI will be touched.
Table and/or form will be tabified per service and then they are pluggable for horizon plugins.

* Admin->System->Defaults panel
  * Default quotas table
  * Update Defaults form
* Identity->Projects
  * Modify Quotas action
  * Create Project action ("Quotas" tab will be dropped from UX perspective)

Service information tabs in Admin->System->System Information are also changed to be pluggable.

The pluggable mechanism is achieved via python entry points.
Each horizon plugins can define an entry point in its setup.cfg like below.

 [entry_points]
 openstack_dashboard.admin.default_quota_tabs =
   orchestration = <tab class name>

Entry point names for individual tabs will be:

* openstack_dashboard.admin.defaults.default_quota_table
* openstack_dashboard.admin.defaults.update_default_quota_form
* openstack_dashboard.identity.projects.update_quotas
* openstack_dashboard.admin.info.service_table

UX
===
Tab will be introduced into the default quota table and the service table in the System information panel.
Workflow tab will be introduced into the update default quota form and the update project quota form.

"Quotas" tab will be dropped from the "Create Project" form.
After tabifying the quota form, it is not a good idea to have multiple tabs related to quotas in "Create Project" form.
I don't think this impacts a lot from UX perspective. An operator can modify project quotas just after creating a new project.

Testing
=======
All existing features including default quotas table, updating default quotas, service list table and updating project quotas should work.

Outside Dependencies
==================
No outside dependencies.

Requirements Update Required
========================
Nothing.

Doc Impact
=========
Horizon plugin documentation can be updated.

Blueprint information

Status:
Complete
Approver:
Ying Zuo
Priority:
Medium
Drafter:
Akihiro Motoki
Direction:
Approved
Assignee:
Akihiro Motoki
Definition:
Approved
Series goal:
Accepted for 14.0.0-rocky
Implementation:
Implemented
Milestone target:
milestone icon rocky-2
Started by
Akihiro Motoki on 2018-01-23
Completed by
Akihiro Motoki on 2018-04-27

Related branches

Sprints

Whiteboard

https://review.openstack.org/560679 is the last one in this blueprint.

---

Gerrit topic: https://review.openstack.org/#q,topic:bug/1746754,n,z

Addressed by: https://review.openstack.org/540097
    TabGroup: Make tabs pluggable via horizon plugin config

Gerrit topic: https://review.openstack.org/#q,topic:bp/horizon-plugin-tab-for-info-and-quotas,n,z

Addressed by: https://review.openstack.org/540100
    Tabbify quota default panel

Addressed by: https://review.openstack.org/540101
    Tabbity quota default update workflow

Addressed by: https://review.openstack.org/540102
    quota defaults: modularize workflow action

Addressed by: https://review.openstack.org/540103
    project: Split quota update into a separate workflow

Addressed by: https://review.openstack.org/540104
    project: Tabbify project quota update

Addressed by: https://review.openstack.org/560679
    Workflow: Make steps pluggable via horizon plugin config

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.