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
diff --git a/lib/quantum_plugins/openvswitch_agent b/lib/quantum_plugins/openvswitch_agent
index 87f5e97..ee761ed 100644
--- a/lib/quantum_plugins/openvswitch_agent
+++ b/lib/quantum_plugins/openvswitch_agent
@@ -102,6 +102,20 @@
         # 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() {