[openstack-dev] [TripleO][ui] Network Configuration wizard

Jiri Tomasek jtomasek at redhat.com
Fri Feb 9 14:49:22 UTC 2018

Hi, all

Full support for network configuration is one of the main goals for TripleO
UI for Rocky cycle as it is missing part which still requires user to
manually prepare templates and provide them to deployment plan.

*Step 1. Network Isolation*

In Queens cycle we've started working on adding roles and networks
management Mistral workflows  [1], [2] which allows GUI to provide
composable roles and networks features. Roles management workflows are
landed, networks management work has most of the patches up for a review.

Both roles and networks management is based on a similar concept of having
roles/networks directory in deployment plan which consists of
roles/networks definitions available to be used for deployment. The list of
selected roles/networks which are actually used for deployment as well as
it's configuration is stored in roles_data.yaml and network_data.yaml which
are then used for populating jinja templates/environments. TripleO-common
then provides Mistral workflows for listing available roles/networks,
listing currently selected roles/networks, updating roles/networks and
selecting roles/networks.

This functionality allows us to:
Select roles for deployment and configure them
Select networks used for deployment and configure them
Assign networks to roles

Result of this is network-isolation.yaml environment file with correct
templates configured in resource_registry and parameters set according to
information in networks_data.yaml and roles_data.yaml

Work needed to finish:
Add networks directory https://review.openstack.org/#/c/520634/

Update Networks
Get Available Networks
Select Networks <blueprint needs to be created> (will be pretty much the
same as

[tripleo-ui] <blueprints to be done>, Wireframes [6]
Create Network configuration step in deployment plan page
Create network configuration wizard view
Create dialog to select networks used for deployment
Create dialog to configure networks
Create dialog to assign networks to roles

Up to here the direction is pretty well defined.

*Step 2. network-environment -> NIC configs*

Second step of network configuration is NIC config. For this
network-environment.yaml is used which references NIC config templates
which define network_config in their resources section. User is currently
required to configure these templates manually. We would like to provide
interactive view which would allow user to setup these templates using
TripleO UI. A good example is a standalone tool created by Ben Nemec [3].

There is currently work aimed for Pike to introduce jinja templating for
network environments and templates [4] (single-nic-with-vlans,
bond-with-vlans) to support composable networks and roles (integrate data
from roles_data.yaml and network_data.yaml) It would be great if we could
move this one step further by using these samples as a starting point and
let user specify full NIC configuration.

Available information at this point:
- list of roles and networks as well as which networks need to be
configured at which role's NIC Config template
- os-net-config schema which defines NIC configuration elements and
relationships [5]
- jinja templated sample NIC templates

- provide feedback to the user about networks assigned to role and have not
been configured in NIC config yet
- let user construct network_config section of NIC config templates for
each role (brigdes/bonds/vlans/interfaces...)
- provide means to assign network to vlans/interfaces and automatically
construct network_config section parameter references
- populate parameter definitions in NIC config templates based on
role/networks assignment
- populate parameter definitions in NIC config templates based on specific
elements which use them e.g. BondInterfaceOvsOptions in case when ovs_bond
is used
- store NIC config templates in deployment plan and reference them from

Problems to solve:
As a biggest problem to solve I see defining logic which would
automatically handle assigning parameters to elements in network_config
based on Network which user assigns to the element. For example: Using GUI,
user is creating network_config for compute role based on
network/config/multiple-nics/compute.yaml, user adds an interface and
assigns the interface to Tenant network. Resulting template should then
automatically populate addresses/ip_netmask: get_param: TenantIpSubnet.
Question is whether all this logic should live in GUI or should GUI pass
simplified format to Mistral workflow which will convert it to proper
network_config format and populates the template with it.

I'd really like to hear some ideas or feedback on this so we can figure out
how to define a mechanism for configuring NICs. I bet Ben can provide a
valuable info since he's implemented similar logic in his tool. [3]

[1] https://blueprints.launchpad.net/tripleo/+spec/roles-management
[2] https://blueprints.launchpad.net/tripleo/+spec/networks-management
[3] https://www.youtube.com/watch?v=k2ZBkkHdeEM
[4] https://bugs.launchpad.net/tripleo/+bug/1737041
[5] http://git.openstack.org/cgit/openstack/os-net-config/

-- Jirka
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20180209/d1ecdd1b/attachment-0001.html>

More information about the OpenStack-dev mailing list