Support MaaS VLANs in Juju

Registered by Dimiter Naydenov

Introduce the concept of networks natively in Juju and support deploying services with explicit networks to include/exclude on boot.

General specification document:

Blueprint information

Dimiter Naydenov
Series goal:
Beta Available
Milestone target:
milestone icon 1.19.1
Started by
Dimiter Naydenov
Completed by
Katherine Cox-Buday

Related branches



In order to deliver MVP for MaaS networks/VLANs support initially, we're making some assumptions and postponing a few features:

 * networks are immutable (set up in cloudinit at boot time; i.e. no worker to update them and no way to change them when deploying to an existing machine);

 * no networks support when provisioning containers (pending R&D on how to bridge parent/container network interfaces properly);

 * provide both early and late checks/errors for the user (networks support is part of environment capabilities (i.e. checks at deploy time) and sanity checks for the given networks at provisioning time);

 * proper provisioning and enabling networks depends on MaaS configuration (networks added on MaaS, nodes having NICs configured with known MAC addresses, linked to networks as needed, cluster controller having configured and managed DHCP and/or DNS NICs for networks that need that);

 * showing service networks, machine networks and addresses/NICs in juju status (post-provisioning).


Work Items

Work items:
[hduran-8] Add network inclusion/exclusion to MaaS provider's acquireNode size 1: DONE
[gz] Separate state document for Network/NoNetwork per service size 4: DONE
[dimitern] add new Client.ServiceDeployWithNetworks API that does exactly what ServiceDeploy but also accepts Network/NoNetwork fields size 1: DONE
[dimitern] add Networks field to the state.Machine document and ways to set and get them size 2: DONE
[dimitern] CLI "juju deploy --network/--exclude-network" size 2: DONE
[dimitern] API Server adds service networks in status size 1: DONE
[dimitern] have machine networks and interfaces in state as a result of StartInstance size 4: DONE
[dimitern] StartInstance to return networks to configure to update state size 2: DONE
[dimitern] Status needs to show defined networks separately, like machines and services size 2: DONE
Status needs to show network interfaces on the machine and their network information size 2: TODO
Test that Status in <1.18 is compatible with new Status Changes size 2: TODO
[dimitern] Provisioner.Networks for machines API size 4: DONE
[dimitern] Add networks and machine network interfaces in state size 4: DONE
[gz] (w/ hduran-8) GetNetworksList inside the maas provider size 2: DONE
[hduran-8] (w/ gz) networks list in gomaasapi and test servers size 4: DONE
[dimitern] Provisioner needs to pass the network lists on to the Providers size 2: DONE
[dimitern] Add EnvironCapability.SupportNetworks() across all providers size 2: DONE
[dimitern] Update ec2/openstack/etc provisioners to fail requests with StartInstanceParams.Network s set size 2: DONE
[hduran-8] CLI: deploy --to and add-unit --to with support for --exclude-networks should ensure existing networks on the machine match size 2: POSTPONED
CLI: Support add-machine --(exclude-)networks size 2: TODO
[dimitern] Probe MaaS API to see if Network support is enabled size 4: DONE
[dimitern] set up networks/VLANs in cloudinit for maas nodes (as needed) size 2: DONE
create a Networker worker that runs inside the machine agent and updates VLANs on the machine size 2: POSTPONED
new Networker API facade (client/server) with ListVLANsForMachine API call size 4: DONE
[vladk] Networker worker sets up bridging for any VLANs (R&D) size 2: DONE
verify networking behavior with VLANs once the networking is setup on the parent machine (ensure no regressions) size 4: TODO

This blueprint contains Public information 
Everyone can see this information.


No subscribers.