From ebfac64d2a53b46e597b7b6a30787c4e276afb93 Mon Sep 17 00:00:00 2001 From: Kyle Mestery Date: Fri, 17 May 2013 15:20:56 -0500 Subject: [PATCH] Add support for setting extra networking configuration options. Add support for generically setting arguments for OpenStack Networking for both the server and agent. This is done using Q_SRV_EXTRA_OPTS for the server, which let you place settings in the "OVS" or "LINUX_BRIDGE" sections of the plugin configuration file. For the agent, two variables are defined: Q_AGENT_EXTRA_AGENT_OPTS lets you set items in the "AGENT" section of the plugin configuration file, and Q_AGENT_EXTRA_SRV_OPTS lets you set things in the "OVS" or "LINUX_BRIDGE" sections of the plugin configuration file. Implements blueprint devstack-quantum-config. Change-Id: I9ba44b21231f88cda1bcc5e3389c7875f03d8145 --- README.md | 13 +++++++++++++ lib/quantum | 4 ++++ lib/quantum_plugins/linuxbridge | 8 ++++++++ lib/quantum_plugins/linuxbridge_agent | 14 ++++++++++++++ lib/quantum_plugins/openvswitch | 8 ++++++++ lib/quantum_plugins/openvswitch_agent | 14 ++++++++++++++ 6 files changed, 61 insertions(+) diff --git a/README.md b/README.md index 8573638c41..905a54d5fc 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,19 @@ In order to enable Quantum a single node setup, you'll need the following settin Then run `stack.sh` as normal. +devstack supports adding specific Quantum configuration flags to both the Open vSwitch and LinuxBridge plugin configuration files. To make use of this feature, the following variables are defined and can be configured in your `localrc` file: + + Variable Name Plugin Config File Section Modified + ------------------------------------------------------------------------------------- + Q_SRV_EXTRA_OPTS `OVS` (for Open Vswitch) or `LINUX_BRIDGE` (for LinuxBridge) + Q_AGENT_EXTRA_AGENT_OPTS AGENT + Q_AGENT_EXTRA_SRV_OPTS `OVS` (for Open Vswitch) or `LINUX_BRIDGE` (for LinuxBridge) + +An example of using the variables in your `localrc` is below: + + Q_AGENT_EXTRA_AGENT_OPTS=(tunnel_type=vxlan vxlan_udp_port=8472) + Q_SRV_EXTRA_OPTS=(tenant_network_type=vxlan) + # Tempest If tempest has been successfully configured, a basic set of smoke tests can be run as follows: diff --git a/lib/quantum b/lib/quantum index d85c6483aa..e231566d5a 100644 --- a/lib/quantum +++ b/lib/quantum @@ -52,6 +52,10 @@ # Quantum. # # With Quantum networking the NETWORK_MANAGER variable is ignored. +# +# To enable specific configuration options for either the Open vSwitch or +# LinuxBridge plugin, please see the top level README file under the +# Quantum section. # Save trace setting XTRACE=$(set +o | grep xtrace) diff --git a/lib/quantum_plugins/linuxbridge b/lib/quantum_plugins/linuxbridge index 71832f1427..dffa32b7bf 100644 --- a/lib/quantum_plugins/linuxbridge +++ b/lib/quantum_plugins/linuxbridge @@ -35,6 +35,14 @@ function quantum_plugin_configure_service() { else iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.firewall.NoopFirewallDriver fi + + # Define extra "LINUX_BRIDGE" configuration options when q-svc is configured by defining + # the array ``Q_SRV_EXTRA_OPTS``. + # For Example: ``Q_SRV_EXTRA_OPTS=(foo=true bar=2)`` + for I in "${Q_SRV_EXTRA_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE LINUX_BRIDGE ${I/=/ } + done } function has_quantum_plugin_security_group() { diff --git a/lib/quantum_plugins/linuxbridge_agent b/lib/quantum_plugins/linuxbridge_agent index 1e83275723..7855cd0eb1 100644 --- a/lib/quantum_plugins/linuxbridge_agent +++ b/lib/quantum_plugins/linuxbridge_agent @@ -47,6 +47,20 @@ function quantum_plugin_configure_plugin_agent() { iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.firewall.NoopFirewallDriver fi AGENT_BINARY="$QUANTUM_DIR/bin/quantum-linuxbridge-agent" + # Define extra "AGENT" configuration options when q-agt is configured by defining + # the array ``Q_AGENT_EXTRA_AGENT_OPTS``. + # For Example: ``Q_AGENT_EXTRA_AGENT_OPTS=(foo=true bar=2)`` + for I in "${Q_AGENT_EXTRA_AGENT_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE AGENT ${I/=/ } + done + # Define extra "LINUX_BRIDGE" configuration options when q-agt is configured by defining + # the array ``Q_AGENT_EXTRA_SRV_OPTS``. + # For Example: ``Q_AGENT_EXTRA_SRV_OPTS=(foo=true bar=2)`` + for I in "${Q_AGENT_EXTRA_SRV_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE LINUX_BRIDGE ${I/=/ } + done } function quantum_plugin_setup_interface_driver() { diff --git a/lib/quantum_plugins/openvswitch b/lib/quantum_plugins/openvswitch index cd29c199a1..e53db8aaa3 100644 --- a/lib/quantum_plugins/openvswitch +++ b/lib/quantum_plugins/openvswitch @@ -42,6 +42,14 @@ function quantum_plugin_configure_service() { fi _quantum_ovs_base_configure_firewall_driver + + # Define extra "OVS" configuration options when q-svc is configured by defining + # the array ``Q_SRV_EXTRA_OPTS``. + # For Example: ``Q_SRV_EXTRA_OPTS=(foo=true bar=2)`` + for I in "${Q_SRV_EXTRA_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE OVS ${I/=/ } + done } function has_quantum_plugin_security_group() { diff --git a/lib/quantum_plugins/openvswitch_agent b/lib/quantum_plugins/openvswitch_agent index 87f5e97adc..ee761edf66 100644 --- a/lib/quantum_plugins/openvswitch_agent +++ b/lib/quantum_plugins/openvswitch_agent @@ -102,6 +102,20 @@ function quantum_plugin_configure_plugin_agent() { # Set root wrap iniset "/$Q_PLUGIN_CONF_FILE.domU" AGENT root_helper "$Q_RR_COMMAND" fi + # Define extra "AGENT" configuration options when q-agt is configured by defining + # defining the array ``Q_AGENT_EXTRA_AGENT_OPTS``. + # For Example: ``Q_AGENT_EXTRA_AGENT_OPTS=(foo=true bar=2)`` + for I in "${Q_AGENT_EXTRA_AGENT_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE AGENT ${I/=/ } + done + # Define extra "OVS" configuration options when q-agt is configured by defining + # defining the array ``Q_AGENT_EXTRA_SRV_OPTS``. + # For Example: ``Q_AGENT_EXTRA_SRV_OPTS=(foo=true bar=2)`` + for I in "${Q_AGENT_EXTRA_SRV_OPTS[@]}"; do + # Replace the first '=' with ' ' for iniset syntax + iniset /$Q_PLUGIN_CONF_FILE OVS ${I/=/ } + done } function quantum_plugin_setup_interface_driver() {