Re-implement Network workflows in AngularJS

Registered by Frode Nordahl

Summary
=======

Move OpenStack Dashboard Network workflows 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].

During the Liberty cycle new functionality was added to the existing Networks workflow to support creating subnets from subnet pools using Neutron subnet allocation. There is also work in progress for adding support for managing the subnet pools themselves. However, I find it counter productive to implement more functionality in the old workflow and propose to re-implement the existing code in AngularJS before continuing the work on new features.

Description
===========

The Create/Edit Network and Create/Edit Subnet workflows will be re-implemented using AngularJS.

UX
==

In the initial proposal I will use the work laid down on the new Angular Launch Instance workflow as basis for the new Network workflow. Apart from the obvious differences in wizard layout vs. tabbed modal layout I will try to keep the fields and choices as similar as todays layout as possible. Some additional improvements will be attempted, specifically combined IP version auto detection and address verification, making the IP version field superfluous.

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

Outside Dependencies
====================
There will be need for implementing some new Neutron REST API bindings.

Doc Impact
==========
Documentation may be updated to reflect new or changed features. This could include:
- Settings to enable/disable the new Network workflow modals.
- Changes in default behaviour

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

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

Blueprint information

Status:
Started
Approver:
David Lyle
Priority:
Low
Drafter:
Frode Nordahl
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for future
Implementation:
Slow progress
Milestone target:
milestone icon next
Started by
David Lyle

Related branches

Sprints

Whiteboard

[amotoki - Feb 19, 2018] I am not sure we still need angularjs conversion. Perhaps the general direction needs to be discussed in the Rocky PTG.

[robcresswell]
This has been left for a while, and I've started on Create Network so I'll reuse this blueprint.
https://review.openstack.org/#/c/348969/

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.