Merge "Generate plugin registry based on releases repo"

This commit is contained in:
Zuul 2020-01-14 09:39:33 +00:00 committed by Gerrit Code Review
commit c93db9d1a2
4 changed files with 142 additions and 90 deletions

View File

@ -4,98 +4,18 @@
Plugin Registry Plugin Registry
=============== ===============
This is a list of horizon plugins which are part of the official
OpenStack releases.
.. note:: .. note::
Currently, Horizon plugins are responsible for their own compatibility. Currently, Horizon plugins are responsible for their own compatibility.
Check the individual repos for information on support. Check the individual repos for information on support.
.. list-table:: .. The CSV file is generated based the openstack/releases deliverables
:header-rows: 1 by tools/list-horizon-plugins.py. If you would like to know the detail
on how they are processed, see the script above.
* - Plugin .. csv-table::
- Repository :header-rows: 1
- Bug Tracker :file: ../../../plugin-registry.csv
* - BGPVPN Dashboard
- :opendev-repo:`openstack/networking-bgpvpn`
- :launchpad:`bgpvpn`
* - Blazar Dashboard
- :opendev-repo:`openstack/blazar-dashboard`
- :launchpad:`blazar`
* - Cloudkitty Dashboard
- :opendev-repo:`openstack/cloudkitty-dashboard`
- :launchpad:`cloudkitty`
* - Congress Dashboard
- :opendev-repo:`openstack/congress-dashboard`
- :launchpad:`congress`
* - Designate Dashboard
- :opendev-repo:`openstack/designate-dashboard`
- :launchpad:`designate-dashboard`
* - Group Based Policy UI
- :opendev-repo:`x/group-based-policy-ui`
- :launchpad:`group-based-policy-ui`
* - Freezer Web UI
- :opendev-repo:`openstack/freezer-web-ui`
- :launchpad:`freezer`
* - Heat Dashboard
- :opendev-repo:`openstack/heat-dashboard`
- :storyboard:`openstack/heat-dashboard`
* - Ironic UI
- :opendev-repo:`openstack/ironic-ui`
- :launchpad:`ironic-ui`
* - Karbor Dashboard
- :opendev-repo:`openstack/karbor-dashboard`
- :launchpad:`karbor-dashboard`
* - Magnum UI
- :opendev-repo:`openstack/magnum-ui`
- :launchpad:`magnum-ui`
* - Manila UI
- :opendev-repo:`openstack/manila-ui`
- :launchpad:`manila-ui`
* - Mistral Dashboard
- :opendev-repo:`openstack/mistral-dashboard`
- :launchpad:`mistral`
* - Monasca UI
- :opendev-repo:`openstack/monasca-ui`
- :launchpad:`monasca`
* - Murano Dashboard
- :opendev-repo:`openstack/murano-dashboard`
- :launchpad:`murano`
* - Neutron FWaaS Dashboard
- :opendev-repo:`openstack/neutron-fwaas-dashboard`
- :launchpad:`neutron-fwaas-dashboard`
* - Neutron VPNaaS Dashboard
- :opendev-repo:`openstack/neutron-vpnaas-dashboard`
- :launchpad:`neutron-vpnaas-dashboard`
* - Octavia Dashboard
- :opendev-repo:`openstack/octavia-dashboard`
- :storyboard:`openstack/octavia-dashboard`
* - Sahara Dashboard
- :opendev-repo:`openstack/sahara-dashboard`
- :storyboard:`openstack/sahara-dashboard`
* - Searchlight UI
- :opendev-repo:`openstack/searchlight-ui`
- :storyboard:`openstack/searchlight-ui`
* - Senlin Dashboard
- :opendev-repo:`openstack/senlin-dashboard`
- :launchpad:`senlin-dashboard`
* - Solum Dashboard
- :opendev-repo:`openstack/solum-dashboard`
- :launchpad:`solum`
* - Tacker UI
- :opendev-repo:`openstack/tacker-horizon`
- :launchpad:`tacker`
* - Trove Dashboard
- :opendev-repo:`openstack/trove-dashboard`
- :launchpad:`trove-dashboard`
* - Vitrage Dashboard
- :opendev-repo:`openstack/vitrage-dashboard`
- :storyboard:`openstack/vitrage-dashboard`
* - Watcher Dashboard
- :opendev-repo:`openstack/watcher-dashboard`
- :launchpad:`watcher-dashboard`
* - Zaqar UI
- :opendev-repo:`openstack/zaqar-ui`
- :launchpad:`zaqar-ui`
* - Zun UI
- :opendev-repo:`openstack/zun-ui`
- :launchpad:`zun-ui`

30
plugin-registry.csv Normal file
View File

@ -0,0 +1,30 @@
Plugin,Repository,Bug Tracker
blazar-dashboard,:opendev-repo:`openstack/blazar-dashboard`,:launchpad:`blazar`
cloudkitty-dashboard,:opendev-repo:`openstack/cloudkitty-dashboard`,:storyboard:`openstack/cloudkitty-dashboard`
congress-dashboard,:opendev-repo:`openstack/congress-dashboard`,:launchpad:`congress`
designate-dashboard,:opendev-repo:`openstack/designate-dashboard`,:launchpad:`designate-dashboard`
freezer-web-ui,:opendev-repo:`openstack/freezer-web-ui`,:storyboard:`openstack/freezer-web-ui`
heat-dashboard,:opendev-repo:`openstack/heat-dashboard`,:storyboard:`openstack/heat-dashboard`
ironic-ui,:opendev-repo:`openstack/ironic-ui`,:storyboard:`openstack/ironic-ui`
karbor-dashboard,:opendev-repo:`openstack/karbor-dashboard`,:launchpad:`karbor-dashboard`
magnum-ui,:opendev-repo:`openstack/magnum-ui`,:launchpad:`magnum-ui`
manila-ui,:opendev-repo:`openstack/manila-ui`,:launchpad:`manila-ui`
masakari-dashboard,:opendev-repo:`openstack/masakari-dashboard`,:launchpad:`masakari`
mistral-dashboard,:opendev-repo:`openstack/mistral-dashboard`,:launchpad:`mistral`
monasca-ui,:opendev-repo:`openstack/monasca-ui`,:launchpad:`monasca`
murano-dashboard,:opendev-repo:`openstack/murano-dashboard`,:launchpad:`murano`
networking-bgpvpn,:opendev-repo:`openstack/networking-bgpvpn`,:launchpad:`bgpvpn`
neutron-fwaas-dashboard,:opendev-repo:`openstack/neutron-fwaas-dashboard`,:launchpad:`neutron-fwaas-dashboard`
neutron-vpnaas-dashboard,:opendev-repo:`openstack/neutron-vpnaas-dashboard`,:launchpad:`neutron-vpnaas-dashboard`
octavia-dashboard,:opendev-repo:`openstack/octavia-dashboard`,:storyboard:`openstack/octavia-dashboard`
qinling-dashboard,:opendev-repo:`openstack/qinling-dashboard`,:storyboard:`openstack/qinling-dashboard`
sahara-dashboard,:opendev-repo:`openstack/sahara-dashboard`,:storyboard:`openstack/sahara-dashboard`
searchlight-ui,:opendev-repo:`openstack/searchlight-ui`,:storyboard:`openstack/searchlight-ui`
senlin-dashboard,:opendev-repo:`openstack/senlin-dashboard`,:launchpad:`senlin-dashboard`
solum-dashboard,:opendev-repo:`openstack/solum-dashboard`,:launchpad:`solum`
tacker-horizon,:opendev-repo:`openstack/tacker-horizon`,:launchpad:`tacker`
trove-dashboard,:opendev-repo:`openstack/trove-dashboard`,:launchpad:`trove-dashboard`
vitrage-dashboard,:opendev-repo:`openstack/vitrage-dashboard`,:storyboard:`openstack/vitrage-dashboard`
watcher-dashboard,:opendev-repo:`openstack/watcher-dashboard`,:launchpad:`watcher-dashboard`
zaqar-ui,:opendev-repo:`openstack/zaqar-ui`,:launchpad:`zaqar-ui`
zun-ui,:opendev-repo:`openstack/zun-ui`,:launchpad:`zun-ui`
1 Plugin Repository Bug Tracker
2 blazar-dashboard :opendev-repo:`openstack/blazar-dashboard` :launchpad:`blazar`
3 cloudkitty-dashboard :opendev-repo:`openstack/cloudkitty-dashboard` :storyboard:`openstack/cloudkitty-dashboard`
4 congress-dashboard :opendev-repo:`openstack/congress-dashboard` :launchpad:`congress`
5 designate-dashboard :opendev-repo:`openstack/designate-dashboard` :launchpad:`designate-dashboard`
6 freezer-web-ui :opendev-repo:`openstack/freezer-web-ui` :storyboard:`openstack/freezer-web-ui`
7 heat-dashboard :opendev-repo:`openstack/heat-dashboard` :storyboard:`openstack/heat-dashboard`
8 ironic-ui :opendev-repo:`openstack/ironic-ui` :storyboard:`openstack/ironic-ui`
9 karbor-dashboard :opendev-repo:`openstack/karbor-dashboard` :launchpad:`karbor-dashboard`
10 magnum-ui :opendev-repo:`openstack/magnum-ui` :launchpad:`magnum-ui`
11 manila-ui :opendev-repo:`openstack/manila-ui` :launchpad:`manila-ui`
12 masakari-dashboard :opendev-repo:`openstack/masakari-dashboard` :launchpad:`masakari`
13 mistral-dashboard :opendev-repo:`openstack/mistral-dashboard` :launchpad:`mistral`
14 monasca-ui :opendev-repo:`openstack/monasca-ui` :launchpad:`monasca`
15 murano-dashboard :opendev-repo:`openstack/murano-dashboard` :launchpad:`murano`
16 networking-bgpvpn :opendev-repo:`openstack/networking-bgpvpn` :launchpad:`bgpvpn`
17 neutron-fwaas-dashboard :opendev-repo:`openstack/neutron-fwaas-dashboard` :launchpad:`neutron-fwaas-dashboard`
18 neutron-vpnaas-dashboard :opendev-repo:`openstack/neutron-vpnaas-dashboard` :launchpad:`neutron-vpnaas-dashboard`
19 octavia-dashboard :opendev-repo:`openstack/octavia-dashboard` :storyboard:`openstack/octavia-dashboard`
20 qinling-dashboard :opendev-repo:`openstack/qinling-dashboard` :storyboard:`openstack/qinling-dashboard`
21 sahara-dashboard :opendev-repo:`openstack/sahara-dashboard` :storyboard:`openstack/sahara-dashboard`
22 searchlight-ui :opendev-repo:`openstack/searchlight-ui` :storyboard:`openstack/searchlight-ui`
23 senlin-dashboard :opendev-repo:`openstack/senlin-dashboard` :launchpad:`senlin-dashboard`
24 solum-dashboard :opendev-repo:`openstack/solum-dashboard` :launchpad:`solum`
25 tacker-horizon :opendev-repo:`openstack/tacker-horizon` :launchpad:`tacker`
26 trove-dashboard :opendev-repo:`openstack/trove-dashboard` :launchpad:`trove-dashboard`
27 vitrage-dashboard :opendev-repo:`openstack/vitrage-dashboard` :storyboard:`openstack/vitrage-dashboard`
28 watcher-dashboard :opendev-repo:`openstack/watcher-dashboard` :launchpad:`watcher-dashboard`
29 zaqar-ui :opendev-repo:`openstack/zaqar-ui` :launchpad:`zaqar-ui`
30 zun-ui :opendev-repo:`openstack/zun-ui` :launchpad:`zun-ui`

View File

@ -1,7 +1,8 @@
./manage.py ./manage.py
./node_modules ./node_modules
./tools/abandon_old_reviews.sh ./tools/abandon_old_reviews.sh
./tools/find_settings.py
./tools/gate/integration/post_test_hook.sh ./tools/gate/integration/post_test_hook.sh
./tools/gate/integration/pre_test_hook.sh ./tools/gate/integration/pre_test_hook.sh
./tools/list-horizon-plugins.py
./tools/unit_tests.sh ./tools/unit_tests.sh
./tools/find_settings.py

101
tools/list-horizon-plugins.py Executable file
View File

@ -0,0 +1,101 @@
#!/usr/bin/env python3
# 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.
import argparse
import csv
import glob
import os
import yaml
# The script picks up deliverables whose type is 'horizon-plugin' in the
# openstack/releases repository. Some horizon plugins are released together
# with other repositories and we cannot pick them up for such case.
# EXTRA_PLUGINS is used to declare such horizon plugins.
# Each entry is a tuple of
# - the deliverable name in the releases repo, and
# - the repository name of the dashboard.
EXTRA_PLUGINS = {
'networking-bgpvpn': 'networking-bgpvpn',
'mistral': 'mistral-dashboard',
}
def read_plugin_data_from_releases(releases_repo, release):
plugins = {}
deliverables_glob = '%s/deliverables/%s/*.yaml' % (releases_repo, release)
for deliverable in glob.glob(deliverables_glob):
with open(deliverable) as f:
data = yaml.safe_load(f)
name = os.path.splitext(os.path.basename(deliverable))[0]
if data['type'] == 'horizon-plugin':
pass
elif name in EXTRA_PLUGINS:
name = EXTRA_PLUGINS[name]
else:
continue
repos = [repo for repo in data['repository-settings']
if os.path.basename(repo) == name]
if not repos:
repos = list(data['repository-settings'].keys())[0]
data['repository'] = repos[0]
plugins[name] = data
return plugins
def get_plugin_info(name, config):
repo = ':opendev-repo:`%s`' % config['repository']
if 'storyboard' in config:
bug_tracker = ':storyboard:`%s`' % config['storyboard']
elif 'launchpad' in config:
bug_tracker = ':launchpad:`%s`' % config['launchpad']
else:
bug_tracker = None
return [name, repo, bug_tracker]
def write_csv(plugins, csv_file):
with open(csv_file, 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile, lineterminator='\n',
quoting=csv.QUOTE_MINIMAL)
csvwriter.writerow(['Plugin', 'Repository', 'Bug Tracker'])
for name in sorted(plugins):
csvwriter.writerow(get_plugin_info(name, plugins[name]))
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
'--csv-file',
default='plugin-registry.csv',
help='Path to a CSV file which contains the plugin list.'
)
parser.add_argument(
'repo',
help='Path to openstack/releases repository cloned to local.'
)
parser.add_argument(
'release',
help='Release name like "ussuri'
)
args = parser.parse_args()
plugins = read_plugin_data_from_releases(args.repo, args.release)
write_csv(plugins, args.csv_file)
if __name__ == '__main__':
main()