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
===============
This is a list of horizon plugins which are part of the official
OpenStack releases.
.. note::
Currently, Horizon plugins are responsible for their own compatibility.
Check the individual repos for information on support.
.. list-table::
:header-rows: 1
.. The CSV file is generated based the openstack/releases deliverables
by tools/list-horizon-plugins.py. If you would like to know the detail
on how they are processed, see the script above.
* - Plugin
- Repository
- Bug Tracker
* - 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`
.. csv-table::
:header-rows: 1
:file: ../../../plugin-registry.csv

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
./node_modules
./tools/abandon_old_reviews.sh
./tools/find_settings.py
./tools/gate/integration/post_test_hook.sh
./tools/gate/integration/pre_test_hook.sh
./tools/list-horizon-plugins.py
./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()