Merge "Generate plugin registry based on releases repo"
This commit is contained in:
commit
c93db9d1a2
@ -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
30
plugin-registry.csv
Normal 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,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
101
tools/list-horizon-plugins.py
Executable 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()
|
Loading…
Reference in New Issue
Block a user