Support multiple networks per cluster

Registered by Ryan Moe on 2014-02-03

Allow creation of multiple networks of all types (PXE, Public, Storage, Management) in order to support more complicated network topologies

Intended Workflow:

Cloud operator wants to deploy with leaf and spine network architecture:
  - Creates new cluster
  - Creates one node group per rack of machines
  - Creates networks for each node group and sets IP ranges each network
  - Boots machines
  - Nodes are automatically assigned to node groups based on DHCP address

Cloud operator wants to deploy using single L2 domain:
  - Current workflow will continue to work with no modifications.

Feature Lead: Ryan Moe
Mandatory Design Reviewers: Andrew Woodward, Aleksey Kasatkin
Developers: Andrew Woodward, Ryan Moe
QA: Yegor Kotko, Artem Panchenko

Whiteboard

Fuel-web: https://github.com/xarses/fuel-web [ml3]
Fuel-library: https://github.com/xarses/fuel-library [ml3]

https://review.openstack.org/#/c/98550/

Gerrit topic: https://review.openstack.org/#q,topic:bp/multiple-cluster-networks,n,z

Addressed by: https://review.openstack.org/83204
    WIP: Allow multiple networks to be created per cluster

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

Addressed by: https://review.openstack.org/87400
    Multiple Cluster Networks: add ip rule route

Addressed by: https://review.openstack.org/87966
    Revert "Allow multiple networks to be created per cluster"

Addressed by: https://review.openstack.org/98550
    Blueprint: multiple-cluster-networks

Addressed by: https://review.openstack.org/99179
    Allow multiple networks to be created per cluster

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

Addressed by: https://review.openstack.org/126359
    (WORK IN PROGRESS)Add multiple cluster networks support

Addressed by: https://review.openstack.org/131893
    Create un-used params to pass tests for multiple-cluster-networks

(?)

Work Items

Work items:
Design DOC: DONE
POC: DONE
Fuel-web: Support attaching multiple network sets to a cluster: DONE
Fuel-library: Support adding policy routes: DONE
Fuel-web: Serialize gateways for each network: DONE
Fuel-web: Serialize a route to the fuel-admin for the admin_interface to consume: DONE
Fuel-web: Serialize network routes for each network by networkgroup.name: DONE
Fuel-library: Support adding routes for each network: DONE
Fuel-web: Refactor rack_id into NodeGroups: DONE
Fuel-web/Cobbler: Make dnsmasq entries when a fuelweb_admin network is modified: POSTPONED
Fuel-web: Add API handler for assigning nodes to node groups: DONE
Fuel-client: Add support for creating node groups: DONE
Fuel-library: nodes should be assigned to an availability zone based which NodeGroup its a member of: POSTPONED
Fuel-web: Change UI to group networks by NodeGroup, only allow changes to nodegroups with out deployed nodes: POSTPONED

Dependency tree

* Blueprints in grey have been implemented.