From 4fd874b4f1323ac024d263077e443d7361dd1c0e Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Tue, 19 Jan 2016 18:17:49 -0500 Subject: [PATCH] Add script to autogenerate doc/source/plugin-registry.rst This generates the plugin-registry document from a static header, a scan of openstack/ git repositories, and a static footer. It is intended to be run by a periodic job proposal bot to keep the list of plugins current. Change-Id: Ia04ab72900c8efd5d5289fbd7632201dcaa3e5d9 --- data/devstack-plugins-registry.footer | 28 ++++++++++++ data/devstack-plugins-registry.header | 19 ++++++++ tools/generate-devstack-plugins-list.sh | 59 +++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 data/devstack-plugins-registry.footer create mode 100644 data/devstack-plugins-registry.header create mode 100644 tools/generate-devstack-plugins-list.sh diff --git a/data/devstack-plugins-registry.footer b/data/devstack-plugins-registry.footer new file mode 100644 index 0000000000..669cb8d574 --- /dev/null +++ b/data/devstack-plugins-registry.footer @@ -0,0 +1,28 @@ + +Drivers +======= + ++--------------------+-------------------------------------------------+------------------+ +|Plugin Name |URL |Comments | ++--------------------+-------------------------------------------------+------------------+ +|dragonflow |git://git.openstack.org/openstack/dragonflow |[d1]_ | ++--------------------+-------------------------------------------------+------------------+ +|odl |git://git.openstack.org/openstack/networking-odl |[d2]_ | ++--------------------+-------------------------------------------------+------------------+ + +.. [d1] demonstrates example of installing 3rd party SDN controller +.. [d2] demonstrates a pretty advanced set of modes that that allow + one to run OpenDayLight either from a pre-existing install, or + also from source + +Alternate Configs +================= + ++-------------+------------------------------------------------------------+------------+ +| Plugin Name | URL | Comments | +| | | | ++-------------+------------------------------------------------------------+------------+ +|glusterfs |git://git.openstack.org/openstack/devstack-plugin-glusterfs | | ++-------------+------------------------------------------------------------+------------+ +| | | | ++-------------+------------------------------------------------------------+------------+ diff --git a/data/devstack-plugins-registry.header b/data/devstack-plugins-registry.header new file mode 100644 index 0000000000..9f8a99471c --- /dev/null +++ b/data/devstack-plugins-registry.header @@ -0,0 +1,19 @@ +========================== + DevStack Plugin Registry +========================== + +Since we've created the external plugin mechanism, it's gotten used by +a lot of projects. The following is a list of plugins that currently +exist. Any project that wishes to list their plugin here is welcomed +to. + +Detected Plugins +================ + +The following are plugins that a script has found in the openstack/ +namespace, which includes but is not limited to official OpenStack +projects. + ++------------------+------------------------------------------------------------+------------+ +|Plugin Name |URL |Date | ++------------------+------------------------------------------------------------+------------+ diff --git a/tools/generate-devstack-plugins-list.sh b/tools/generate-devstack-plugins-list.sh new file mode 100644 index 0000000000..6e9e828978 --- /dev/null +++ b/tools/generate-devstack-plugins-list.sh @@ -0,0 +1,59 @@ +#!/bin/bash -ex + +# Copyright 2016 Hewlett Packard Enterprise Development Company, L.P. +# +# 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. + +# This script is intended to be run as a periodic proposal bot job +# in OpenStack infrastructure, though you can run it as a one-off. +# +# In order to function correctly, the environment in which the +# script runs must have +# * git +# * all git repos meant to be searched for plugins cloned and +# at the desired level of up-to-datedness +# * a writable doc/source directory relative to the current +# working directory +# +# If a file named data/devstack-plugins-registry.header or +# data/devstack-plugins-registry.footer is found relative to the +# current working directory, it will be prepended or appended to +# the generated reStructuredText plugins table respectively. + +( +declare -A plugins + +test -r data/devstack-plugins-registry.header && cat data/devstack-plugins-registry.header + +pushd ${git_dir:-/opt/openstack} >/dev/null +for i in *; do + pushd ${i} >/dev/null + if output="$(git log --diff-filter=A --format='%cd' --date=short -1 -- devstack/plugin.sh)"; then + test -n "$output" && plugins[$i]=${output} + fi + popd >/dev/null +done +popd >/dev/null + +sorted_plugins=( $(for k in "${!plugins[@]}"; do echo "$k"; done | sort)) + +for k in "${sorted_plugins[@]}"; do + project=${k:0:18} + giturl="git://git.openstack.org/openstack/${k:0:26}" + pdate="${plugins[$k]}" + printf "|%-18s|%-60s|%-12s|\n" "${project}" "${giturl}" "${pdate}" + printf "+------------------+------------------------------------------------------------+------------+\n" +done + +test -r data/devstack-plugins-registry.footer && cat data/devstack-plugins-registry.footer +) > doc/source/plugin-registry.rst