Angular Network Topology

Registered by Marek Lyčka on 2018-02-13

Summary
=======
Reimplement network topology in AngularJS

Motivation
==========
The current implementation of the network topology graph is plagued by
numerous bugs including, but not limited to:

- Graphical Glitching (https://bugs.launchpad.net/horizon/+bug/1716834)
- Data duplication on synchronization
- Partial updates on synchronization (only adding works)
- Disfunctional visualization for certain network setups (HA)

Certain bugs are also present in the 'flat' version of the graph.

Additionally, the code in question has become somewhat hard to navigate and
should be simplified and revised. Since the Horizon is generally moving
towards AngularJS implementations in any case, it seems reasonable to
simply recreate the network topology in AngularJS.

Description
===========
The network topology interfaces should be re-implemented in AngularJS. Implementation should utilize
the component method introduced in AngularJS 1.5 and generally follow the modern, Angular2+ inspired
paradigms.

Generic functionality should be separated and moved into the core Horizon app.

The new version should (at least to start with) be toggelable through a settings variable.

UX
==
The UI should remain relatively unchanged in it's user facing functionality (at least for the initial
version).

Testing
=======
Manual testing will need to be done by reviewrs to confirm all reimplemented functionality.

Outside Dependencies
====================
None

Doc Impact
==========
Documentation of the new settings toggle.

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

References
==========

[1] https://blueprints.launchpad.net/horizon/+spec/curvature-network-topology - the original curvature impl.
[2] https://review.openstack.org/#/c/199063/ - original attempt at an AngularJS refactor
[2] https://docs.openstack.org/horizon/latest/contributor/topics/angularjs.html - Horizon AngularJS guides

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Marek Lyčka
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

I've created a first WIP version of the graph section of this blueprint: https://review.openstack.org/543829

While it is very much work in progress, the general outline is in place and open for criticism and comments.

[amotoki - Feb 17, 2018] If we re-implement the network topology view, it is a good chance to tackle an existing issue from the design like the pluggable mechanism https://bugs.launchpad.net/horizon/+bug/1231330

In addition, it is better to undesirable usage of Django views like NTCreateRouterView, RouterView and so on in openstack_dashboard/dashboards/project/network_topology/views.py. Instead APIs provided by api/rest/***,py should be used.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.