diff --git a/TESTING.rst b/TESTING.rst index b306f4ecd..8987d9a3f 100644 --- a/TESTING.rst +++ b/TESTING.rst @@ -6,3 +6,7 @@ the latest up to date instructions for how to test Neutron, and will be applicable to neutron-fwaas as well: `Neutron TESTING.rst `_ + +For instructions on how to use FWaaS with devstack, look at: + +`Neutron-FWaaS DevStack `_ diff --git a/devstack/README.rst b/devstack/README.rst new file mode 100644 index 000000000..488142166 --- /dev/null +++ b/devstack/README.rst @@ -0,0 +1,28 @@ +neutron-fwaas in DevStack +========================= + +This is setup as a DevStack plugin. For more information on DevStack plugins, +see the `DevStack Plugins documentation +`_. + +This was created using the `devstack-plugin-cookiecutter +`_ tool. + +How to run FWaaS in DevStack +========================= + +Add the following to the localrc section of your local.conf: + +.. code-block:: none + [[local|localrc]] + enable_plugin neutron-fwaas http://git.openstack.org/openstack/neutron-fwaas + enable_service q-fwaas + +To check a specific patchset that is currently under development, use a form +like the below example, which is checking out change 214350 patch set 14 for +testing. + +.. code-block:: none + [[local|localrc]] + enable_plugin neutron-fwaas https://review.openstack.org/p/openstack/neutron-fwaas refs/changes/50/214350/14 + enable_service q-fwaas diff --git a/devstack/plugin.sh b/devstack/plugin.sh new file mode 100755 index 000000000..a3073f22a --- /dev/null +++ b/devstack/plugin.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Dependencies: +# +# ``functions`` file +# ``DEST`` must be defined + +# Save trace setting +XTRACE=$(set +o | grep xtrace) +set +o xtrace + +function pre_install_fwaas() { + # Install OS packages if necessary with "install_package ...". + : + neutron_fwaas_configure_common +} + +function install_fwaas() { + # Install the service. + : + setup_develop $DEST/neutron-fwaas +} + +function configure_fwaas() { + neutron_fwaas_configure_driver +} + +function init_fwaas() { + # Initialize and start the service. + : +} + +function shutdown_fwaas() { + # Shut the service down. + : +} + +function cleanup_fwaas() { + # Cleanup the service. + : +} + +function neutron_fwaas_configure_common { + _neutron_service_plugin_class_add $FWAAS_PLUGIN +} + +function neutron_fwaas_configure_driver { + # Uses oslo config generator to generate FWaaS sample configuration files + (cd $NEUTRON_FWAAS_DIR && exec ./tools/generate_config_file_samples.sh) + + cp $NEUTRON_FWAAS_DIR/etc/$FWAAS_DRIVER_CONF_FILENAME.sample $FWAAS_CONF_FILE + + iniset_multiline $FWAAS_CONF_FILE fwaas enabled True + iniset_multiline $FWAAS_CONF_FILE fwaas driver $FWAAS_DRIVER + #iniset $NEUTRON_CONF DEFAULT service_plugins $Q_SERVICE_PLUGIN_CLASSES +} + +# check for service enabled +if is_service_enabled q-svc && is_service_enabled q-fwaas; then + + if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then + # Set up system services + echo_summary "Configuring system services q-fwaas" + pre_install_fwaas + + elif [[ "$1" == "stack" && "$2" == "install" ]]; then + # Perform installation of service source + echo_summary "Installing q-fwaas" + install_fwaas + + elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then + # Configure after the other layer 1 and 2 services have been configured + echo_summary "Configuring q-fwaas" + configure_fwaas + + elif [[ "$1" == "stack" && "$2" == "extra" ]]; then + # Initialize and start the q-fwaas service + echo_summary "Initializing q-fwaas" + init_fwaas + fi + + if [[ "$1" == "unstack" ]]; then + # Shut down q-fwaas services + # no-op + shutdown_fwaas + fi + + if [[ "$1" == "clean" ]]; then + # Remove state and transient data + # Remember clean.sh first calls unstack.sh + # no-op + cleanup_fwaas + fi +fi + +# Restore xtrace +$XTRACE diff --git a/devstack/settings b/devstack/settings new file mode 100644 index 000000000..f054394f4 --- /dev/null +++ b/devstack/settings @@ -0,0 +1,4 @@ +FWAAS_DRIVER=${FWAAS_DRIVER:-iptables} +FWAAS_PLUGIN=${FWAAS_PLUGIN:-firewall} +FWAAS_DRIVER_CONF_FILENAME=${FWAAS_DRIVER_CONF_FILENAME:-fwaas_driver.ini} +FWAAS_CONF_FILE=${Q_FWAAS_CONF_FILE:-$NEUTRON_CONF_DIR/$FWAAS_DRIVER_CONF_FILENAME}