From 6e5b1384665c0c039222ff6cbea5a120e60e89d1 Mon Sep 17 00:00:00 2001 From: Julia Kreger Date: Wed, 9 Jan 2019 17:00:45 -0800 Subject: [PATCH] Enable vlan networking for newer neutron plugin Ironic's CI makes extensive use of VLAN based networking and the newer neutron plugin hardcodes the tenant networking type to vxlan which is naturally problematic. It also lacks the ability to set the necessary constraints for vlan networking which are added for vxlan networking. This patch enables the type of tenant networking to be defined as vlan, and enables for a physical network vlan range mapping setting to be configured which is required for a vlan to be allocated upon network creation. Change-Id: I55874c1ce82898e9dfb81505d8f3b14abde33579 --- lib/neutron | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/neutron b/lib/neutron index 947c491ec1..763a906e52 100644 --- a/lib/neutron +++ b/lib/neutron @@ -100,6 +100,17 @@ NEUTRON_ROOTWRAP_DAEMON_CMD="$NEUTRON_ROOTWRAP-daemon $NEUTRON_ROOTWRAP_CONF_FIL PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex} PUBLIC_BRIDGE_MTU=${PUBLIC_BRIDGE_MTU:-1500} +# Network type - default vxlan, however enables vlan based jobs to override +# using the legacy environment variable as well as a new variable in greater +# alignment with the naming scheme of this plugin. +NEUTRON_TENANT_NETWORK_TYPE=${NEUTRON_TENANT_NETWORK_TYPE:-vxlan} + +NEUTRON_TENANT_VLAN_RANGE=${NEUTRON_TENANT_VLAN_RANGE:-${TENANT_VLAN_RANGE:-100:150}} + +# Physical network for VLAN network usage. +NEUTRON_PHYSICAL_NETWORK=${NEUTRON_PHYSICAL_NETWORK:-} + + # Additional neutron api config files declare -a -g _NEUTRON_SERVER_EXTRA_CONF_FILES_ABS @@ -203,9 +214,8 @@ function configure_neutron_new { configure_auth_token_middleware $NEUTRON_CONF neutron $NEUTRON_AUTH_CACHE_DIR keystone_authtoken configure_auth_token_middleware $NEUTRON_CONF nova $NEUTRON_AUTH_CACHE_DIR nova - # Configure VXLAN - # TODO(sc68cal) not hardcode? - iniset $NEUTRON_CORE_PLUGIN_CONF ml2 tenant_network_types vxlan + # Configure tenant network type + iniset $NEUTRON_CORE_PLUGIN_CONF ml2 tenant_network_types $NEUTRON_TENANT_NETWORK_TYPE local mech_drivers="openvswitch" if [[ "$NEUTRON_DISTRIBUTED_ROUTING" = "True" ]]; then @@ -217,6 +227,9 @@ function configure_neutron_new { iniset $NEUTRON_CORE_PLUGIN_CONF ml2_type_vxlan vni_ranges 1001:2000 iniset $NEUTRON_CORE_PLUGIN_CONF ml2_type_flat flat_networks public + if [[ "$NEUTRON_TENANT_NETWORK_TYPE" =~ "vlan" ]] && [[ "$NEUTRON_PHYSICAL_NETWORK" != "" ]]; then + iniset $NEUTRON_CORE_PLUGIN_CONF ml2_type_vlan network_vlan_ranges ${NEUTRON_PHYSICAL_NETWORK}:${NEUTRON_TENANT_VLAN_RANGE} + fi if [[ "$NEUTRON_PORT_SECURITY" = "True" ]]; then neutron_ml2_extension_driver_add port_security fi