From 79b66ae07bef943a4a1c02ef61a8dc4591f16dcc Mon Sep 17 00:00:00 2001 From: tzing_t Date: Fri, 6 Sep 2024 01:03:09 +0000 Subject: [PATCH] add new release map for all openstack package 1.get all release info from local repository(openstack/releases). only the latest two release versions are listed. 2.add tag, true or false, to distinguish whether it belongs to sig, and the name in openEuler 3.add new file generated by this script to record release info --- tools/oos/etc/openstack_releases_info.yaml | 1940 +++++++++++++++++ .../fetch_openstack_release_mapping.py | 233 +- 2 files changed, 2113 insertions(+), 60 deletions(-) create mode 100644 tools/oos/etc/openstack_releases_info.yaml diff --git a/tools/oos/etc/openstack_releases_info.yaml b/tools/oos/etc/openstack_releases_info.yaml new file mode 100644 index 00000000..e8f9adb5 --- /dev/null +++ b/tools/oos/etc/openstack_releases_info.yaml @@ -0,0 +1,1940 @@ +bobcat: + client-library: + osc-placement: + - 4.2.0 + - true + - python-osc-placement + python-adjutantclient: + - 1.0.0 + - false + - null + python-aodhclient: + - 3.3.0 + - true + - python-aodhclient + python-barbicanclient: + - 5.6.1 + - true + - python-barbicanclient + python-blazarclient: + - 3.7.0 + - true + - python-blazarclient + python-brick-cinderclient-ext: + - 2.2.0 + - false + - null + python-cinderclient: + - 9.4.0 + - true + - python-cinderclient + python-cloudkittyclient: + - 4.8.0 + - true + - python-cloudkittyclient + python-cyborgclient: + - 2.2.1 + - true + - python-cyborgclient + python-designateclient: + - 5.3.0 + - true + - python-designateclient + python-freezerclient: + - 5.2.0 + - false + - null + python-glanceclient: + - 4.4.1 + - true + - python-glanceclient + python-heatclient: + - 3.3.0 + - true + - python-heatclient + python-ironic-inspector-client: + - 5.0.0 + - true + - python-ironic-inspector-client + python-ironicclient: + - 5.4.0 + - true + - python-ironicclient + python-keystoneclient: + - 5.2.0 + - true + - python-keystoneclient + python-magnumclient: + - 4.2.0 + - true + - python-magnumclient + python-manilaclient: + - 4.6.1 + - true + - python-manilaclient + python-masakariclient: + - 8.2.0 + - true + - python-masakariclient + python-mistralclient: + - 5.1.0 + - true + - python-mistralclient + python-monascaclient: + - 2.8.0 + - true + - python-monascaclient + python-muranoclient: + - 2.7.0 + - true + - python-muranoclient + python-neutronclient: + - 11.0.0 + - true + - python-neutronclient + python-novaclient: + - 18.4.0 + - true + - python-novaclient + python-octaviaclient: + - 3.5.1 + - true + - python-octaviaclient + python-saharaclient: + - 4.2.0 + - true + - python-saharaclient + python-senlinclient: + - 3.1.0 + - true + - python-senlinclient + python-solumclient: + - 3.8.0 + - false + - null + python-swiftclient: + - 4.4.0 + - true + - python-swiftclient + python-tackerclient: + - 1.14.0 + - false + - null + python-troveclient: + - 8.2.1 + - true + - python-troveclient + python-venusclient: + - 2.1.0 + - false + - null + python-vitrageclient: + - 4.8.0 + - true + - python-vitrageclient + python-watcherclient: + - 4.2.0 + - true + - python-watcherclient + python-zaqarclient: + - 2.6.0 + - true + - python-zaqarclient + python-zunclient: + - 4.7.0 + - true + - python-zunclient + horizon-plugin: + adjutant-ui: + - 7.0.0 + - false + - null + blazar-dashboard: + - 10.0.0 + - false + - null + cloudkitty-dashboard: + - 17.0.0 + - false + - null + designate-dashboard: + - 17.0.0 + - true + - openstack-designate-ui + freezer-web-ui: + - 15.0.0 + - false + - null + heat-dashboard: + - 10.0.0 + - true + - openstack-heat-ui + ironic-ui: + - 6.2.1 + - true + - python-ironic-ui + magnum-ui: + - 13.0.0 + - true + - openstack-magnum-ui + manila-ui: + - 10.0.0 + - false + - null + masakari-dashboard: + - 9.0.0 + - false + - null + mistral-dashboard: + - 17.0.0 + - true + - openstack-mistral-ui + monasca-ui: + - 9.0.0 + - false + - null + murano-dashboard: + - 16.0.0 + - false + - null + neutron-fwaas-dashboard: + - 6.0.0 + - false + - null + neutron-vpnaas-dashboard: + - 9.0.0 + - false + - null + octavia-dashboard: + - 12.0.0 + - true + - openstack-octavia-ui + sahara-dashboard: + - 19.0.0 + - true + - openstack-sahara-ui + senlin-dashboard: + - 8.0.0 + - false + - null + solum-dashboard: + - 11.0.0 + - false + - null + tacker-horizon: + - 8.0.0 + - false + - null + trove-dashboard: + - 21.0.0 + - true + - python-trove-dashboard + venus-dashboard: + - 3.0.0 + - false + - null + vitrage-dashboard: + - 5.0.0 + - true + - openstack-vitrage-ui + watcher-dashboard: + - 10.0.0 + - false + - null + zaqar-ui: + - 15.0.0 + - false + - null + zun-ui: + - 12.0.0 + - false + - null + library: + automaton: + - 3.2.0 + - true + - python-automaton + blazar-nova: + - 4.0.0 + - false + - null + castellan: + - 4.3.0 + - true + - python-castellan + ceilometermiddleware: + - 3.2.0 + - true + - python-ceilometermiddleware + cliff: + - 4.3.0 + - true + - python-cliff + glance_store: + - 4.6.1 + - false + - null + heat-translator: + - 2.8.0 + - false + - null + ironic-lib: + - 5.5.0 + - true + - python-ironic-lib + keystoneauth: + - 5.3.0 + - false + - null + keystonemiddleware: + - 10.4.1 + - true + - python-keystonemiddleware + kuryr: + - 2.8.0 + - false + - null + metalsmith: + - 2.0.2 + - false + - null + mistral-extra: + - 13.1.0 + - false + - null + mistral-lib: + - 2.9.0 + - true + - python-mistral-lib + monasca-common: + - 3.8.0 + - false + - null + monasca-statsd: + - 2.7.0 + - true + - python-monasca-statsd + neutron-lib: + - 3.8.2 + - true + - python-neutron-lib + octavia-lib: + - 3.3.0 + - true + - python-octavia-lib + openstacksdk: + - 1.5.0 + - true + - python-openstacksdk + os-brick: + - 6.4.1 + - true + - python-os-brick + os-ken: + - 2.7.0 + - true + - python-os-ken + os-vif: + - 3.2.0 + - true + - python-os-vif + osc-lib: + - 2.8.1 + - true + - python-osc-lib + oslo.cache: + - 3.5.0 + - true + - python-oslo.cache + oslo.concurrency: + - 5.2.0 + - true + - python-oslo.concurrency + oslo.config: + - 9.2.0 + - true + - python-oslo.config + oslo.context: + - 5.2.0 + - true + - python-oslo.context + oslo.db: + - 14.1.0 + - true + - python-oslo.db + oslo.i18n: + - 6.1.0 + - true + - python-oslo.i18n + oslo.limit: + - 2.2.0 + - true + - python-oslo.limit + oslo.log: + - 5.3.1 + - true + - python-oslo.log + oslo.messaging: + - 14.4.2 + - true + - python-oslo.messaging + oslo.metrics: + - 0.7.0 + - true + - python-oslo.metrics + oslo.middleware: + - 5.2.0 + - true + - python-oslo.middleware + oslo.policy: + - 4.2.1 + - true + - python-oslo.policy + oslo.privsep: + - 3.2.0 + - true + - python-oslo.privsep + oslo.reports: + - 3.1.0 + - true + - python-oslo.reports + oslo.rootwrap: + - 7.1.0 + - true + - python-oslo.rootwrap + oslo.serialization: + - 5.2.1 + - true + - python-oslo.serialization + oslo.service: + - 3.2.1 + - true + - python-oslo.service + oslo.upgradecheck: + - 2.2.0 + - true + - python-oslo.upgradecheck + oslo.utils: + - 6.2.1 + - true + - python-oslo.utils + oslo.versionedobjects: + - 3.2.0 + - true + - python-oslo.versionedobjects + oslo.vmware: + - 4.2.0 + - true + - python-oslo.vmware + ovsdbapp: + - 2.4.2 + - true + - python-ovsdbapp + stevedore: + - 5.1.0 + - true + - python-stevedore + sushy: + - 4.5.2 + - true + - python-sushy + taskflow: + - 5.4.0 + - true + - python-taskflow + tosca-parser: + - 2.9.1 + - false + - null + other: + ansible-role-atos-hsm: + - 6.0.0 + - false + - null + ansible-role-lunasa-hsm: + - 6.0.0 + - false + - null + ansible-role-thales-hsm: + - 6.0.1 + - false + - null + bifrost: + - 17.1.0 + - false + - null + heat-agents: + - 7.0.0 + - true + - openstack-heat-agents + ironic-inspector: + - 11.7.0 + - true + - openstack-ironic-inspector + ironic-prometheus-exporter: + - 4.2.1 + - true + - python-ironic-prometheus-exporter + ironic-python-agent: + - 9.7.1 + - true + - openstack-ironic-python-agent + ironic-python-agent-builder: + - 5.2.1 + - true + - openstack-ironic-python-agent-builder + kuryr-kubernetes: + - 9.0.0 + - false + - null + kuryr-libnetwork: + - 12.0.0 + - false + - null + masakari-monitors: + - 16.0.0 + - false + - null + monasca-agent: + - 10.0.0 + - false + - null + monasca-notification: + - 9.0.0 + - false + - null + monasca-persister: + - 9.0.0 + - false + - null + monasca-thresh: + - 9.0.0 + - false + - null + murano-agent: + - 12.0.0 + - false + - null + networking-bagpipe: + - 19.0.0 + - false + - null + networking-baremetal: + - 6.2.1 + - true + - networking-baremetal + networking-bgpvpn: + - 19.0.0 + - false + - null + networking-generic-switch: + - 7.2.1 + - true + - networking-generic-switch + networking-sfc: + - 17.0.0 + - true + - python-networking-sfc + neutron-dynamic-routing: + - 23.0.0 + - true + - openstack-neutron-dynamic-routing + neutron-fwaas: + - 19.0.0 + - false + - null + neutron-vpnaas: + - 23.0.0 + - true + - openstack-neutron-vpnaas + ovn-bgp-agent: + - 1.0.0 + - false + - null + ovn-octavia-provider: + - 5.0.0 + - true + - python-ovn-octavia-provider + python-openstackclient: + - 6.3.0 + - true + - python-openstackclient + release-test: + - 5.0.0 + - false + - null + sahara-extra: + - 18.0.0 + - false + - null + sahara-image-elements: + - 19.0.0 + - false + - null + sahara-plugin-ambari: + - 10.0.0 + - false + - null + sahara-plugin-cdh: + - 10.0.0 + - false + - null + sahara-plugin-mapr: + - 10.0.0 + - false + - null + sahara-plugin-spark: + - 10.0.0 + - false + - null + sahara-plugin-storm: + - 10.0.0 + - false + - null + sahara-plugin-vanilla: + - 10.0.0 + - false + - null + tap-as-a-service: + - 12.0.0 + - false + - null + tempest: + - 36.0.0 + - true + - openstack-tempest + service: + adjutant: + - 7.0.0 + - false + - null + aodh: + - 17.0.0 + - true + - openstack-aodh + barbican: + - 17.0.0 + - true + - openstack-barbican + blazar: + - 12.0.0 + - false + - null + ceilometer: + - 21.0.0 + - true + - openstack-ceilometer + cinder: + - 23.2.0 + - true + - openstack-cinder + cloudkitty: + - 19.0.0 + - true + - openstack-cloudkitty + cyborg: + - 11.0.0 + - true + - openstack-cyborg + designate: + - 17.0.1 + - true + - openstack-designate + ec2-api: + - 17.0.0 + - false + - null + freezer: + - 15.0.0 + - false + - null + freezer-api: + - 15.0.0 + - false + - null + freezer-dr: + - 15.0.0 + - false + - null + glance: + - 27.1.0 + - true + - openstack-glance + heat: + - 21.0.0 + - true + - openstack-heat + horizon: + - 23.3.0 + - true + - openstack-horizon + ironic: + - 23.0.1 + - true + - openstack-ironic + keystone: + - 24.0.0 + - true + - openstack-keystone + magnum: + - 17.0.2 + - false + - null + manila: + - 17.2.0 + - true + - openstack-manila + masakari: + - 16.0.0 + - true + - openstack-masakari + mistral: + - 17.0.0 + - true + - openstack-mistral + monasca-api: + - 11.0.0 + - false + - null + monasca-events-api: + - 8.0.0 + - false + - null + murano: + - 16.0.0 + - false + - null + neutron: + - 23.2.0 + - true + - openstack-neutron + nova: + - 28.3.0 + - true + - openstack-nova + octavia: + - 13.0.0 + - true + - openstack-octavia + placement: + - 10.0.0 + - true + - openstack-placement + sahara: + - 19.0.0 + - false + - null + senlin: + - 16.0.0 + - true + - openstack-senlin + skyline-apiserver: + - 3.0.0 + - false + - null + skyline-console: + - 3.0.0 + - false + - null + solum: + - 15.0.0 + - false + - null + storlets: + - 12.0.0 + - false + - null + swift: + - 2.32.0 + - true + - openstack-swift + tacker: + - 10.0.0 + - false + - null + trove: + - 20.0.0 + - true + - openstack-trove + venus: + - 3.0.0 + - false + - null + vitrage: + - 11.0.0 + - false + - null + watcher: + - 11.0.0 + - false + - null + zaqar: + - 17.0.0 + - true + - openstack-zaqar + zun: + - 12.0.0 + - false + - null + tempest-plugin: + barbican-tempest-plugin: + - 3.0.0 + - false + - null + blazar-tempest-plugin: + - 0.11.0 + - false + - null + cinder-tempest-plugin: + - 1.10.0 + - true + - python-cinder-tempest-plugin + cloudkitty-tempest-plugin: + - 2.8.0 + - false + - null + cyborg-tempest-plugin: + - 2.2.0 + - false + - null + designate-tempest-plugin: + - 0.20.0 + - false + - null + ec2api-tempest-plugin: + - 1.7.0 + - false + - null + freezer-tempest-plugin: + - 3.1.0 + - false + - null + glance-tempest-plugin: + - 0.7.0 + - true + - python-glance-tempest-plugin + heat-tempest-plugin: + - 2.0.0 + - false + - null + ironic-tempest-plugin: + - 2.7.0 + - true + - python-ironic-tempest-plugin + keystone-tempest-plugin: + - 0.13.0 + - true + - python-keystone-tempest-plugin + kuryr-tempest-plugin: + - 0.15.1 + - false + - null + magnum-tempest-plugin: + - 2.1.0 + - false + - null + manila-tempest-plugin: + - 2.0.0 + - false + - null + mistral-tempest-plugin: + - 2.2.0 + - false + - null + monasca-tempest-plugin: + - 2.7.0 + - false + - null + murano-tempest-plugin: + - 2.7.0 + - false + - null + neutron-tempest-plugin: + - 2.5.0 + - true + - python-neutron-tempest-plugin + octavia-tempest-plugin: + - 2.4.1 + - false + - null + sahara-tests: + - 0.18.0 + - false + - null + senlin-tempest-plugin: + - 1.8.0 + - false + - null + solum-tempest-plugin: + - 2.7.0 + - false + - null + telemetry-tempest-plugin: + - 1.10.0 + - false + - null + trove-tempest-plugin: + - 2.2.0 + - true + - python-trove-tempest-plugin + venus-tempest-plugin: + - 3.1.0 + - false + - null + vitrage-tempest-plugin: + - 6.2.0 + - false + - null + watcher-tempest-plugin: + - 3.0.0 + - false + - null + zaqar-tempest-plugin: + - 1.7.0 + - false + - null + zun-tempest-plugin: + - 4.8.0 + - false + - null + trailing: + ansible-collection-kolla: + - 4.2.0 + - false + - null + cinderlib: + - 5.2.0 + - true + - python-cinderlib + kayobe: + - 15.4.0 + - false + - null + kayobe-config-dev: + - 15.4.0 + - false + - null + kolla: + - 17.4.0 + - true + - openstack-kolla + kolla-ansible: + - 17.4.0 + - true + - openstack-kolla-ansible + openstack-ansible: + - 28.3.1 + - false + - null + puppet-aodh: + - 23.0.0 + - false + - null + puppet-barbican: + - 23.0.0 + - false + - null + puppet-ceilometer: + - 23.0.0 + - false + - null + puppet-cinder: + - 23.0.0 + - false + - null + puppet-cloudkitty: + - 12.0.0 + - false + - null + puppet-designate: + - 23.0.0 + - false + - null + puppet-ec2api: + - 23.0.0 + - false + - null + puppet-glance: + - 23.0.0 + - false + - null + puppet-gnocchi: + - 23.0.0 + - false + - null + puppet-heat: + - 23.0.0 + - false + - null + puppet-horizon: + - 23.0.0 + - false + - null + puppet-ironic: + - 23.1.0 + - false + - null + puppet-keystone: + - 23.0.0 + - false + - null + puppet-magnum: + - 23.0.0 + - false + - null + puppet-manila: + - 23.0.0 + - false + - null + puppet-mistral: + - 23.0.0 + - false + - null + puppet-murano: + - 23.0.0 + - false + - null + puppet-neutron: + - 23.0.1 + - false + - null + puppet-nova: + - 23.0.0 + - false + - null + puppet-octavia: + - 23.0.0 + - false + - null + puppet-openstack_extras: + - 23.0.0 + - false + - null + puppet-openstacklib: + - 23.0.0 + - false + - null + puppet-oslo: + - 23.0.0 + - false + - null + puppet-ovn: + - 23.0.0 + - false + - null + puppet-placement: + - 10.0.0 + - false + - null + puppet-qdr: + - 12.0.0 + - false + - null + puppet-sahara: + - 23.0.0 + - false + - null + puppet-swift: + - 23.0.0 + - false + - null + puppet-tempest: + - 23.1.0 + - false + - null + puppet-trove: + - 23.0.0 + - false + - null + puppet-vitrage: + - 13.0.0 + - false + - null + puppet-vswitch: + - 19.0.0 + - false + - null + puppet-watcher: + - 23.0.0 + - false + - null + puppet-zaqar: + - 23.0.0 + - false + - null +caracal: + client-library: + osc-placement: + - 4.3.0 + - true + - python-osc-placement + python-adjutantclient: + - 1.1.0 + - false + - null + python-aodhclient: + - 3.5.1 + - true + - python-aodhclient + python-barbicanclient: + - 5.7.0 + - true + - python-barbicanclient + python-blazarclient: + - 4.0.1 + - true + - python-blazarclient + python-brick-cinderclient-ext: + - 2.3.0 + - false + - null + python-cinderclient: + - 9.5.0 + - true + - python-cinderclient + python-cloudkittyclient: + - 5.0.0 + - true + - python-cloudkittyclient + python-cyborgclient: + - 2.3.0 + - true + - python-cyborgclient + python-designateclient: + - 6.0.1 + - true + - python-designateclient + python-glanceclient: + - 4.5.0 + - true + - python-glanceclient + python-heatclient: + - 3.5.0 + - true + - python-heatclient + python-ironic-inspector-client: + - 5.1.0 + - true + - python-ironic-inspector-client + python-ironicclient: + - 5.5.0 + - true + - python-ironicclient + python-keystoneclient: + - 5.4.0 + - true + - python-keystoneclient + python-magnumclient: + - 4.4.0 + - true + - python-magnumclient + python-manilaclient: + - 4.8.0 + - true + - python-manilaclient + python-masakariclient: + - 8.4.0 + - true + - python-masakariclient + python-mistralclient: + - 5.2.0 + - true + - python-mistralclient + python-muranoclient: + - 2.8.0 + - true + - python-muranoclient + python-neutronclient: + - 11.2.0 + - true + - python-neutronclient + python-novaclient: + - 18.6.0 + - true + - python-novaclient + python-observabilityclient: + - 0.1.1 + - false + - null + python-octaviaclient: + - 3.7.0 + - true + - python-octaviaclient + python-swiftclient: + - 4.5.0 + - true + - python-swiftclient + python-tackerclient: + - 2.0.0 + - false + - null + python-troveclient: + - 8.4.0 + - true + - python-troveclient + python-venusclient: + - 2.2.0 + - false + - null + python-vitrageclient: + - 5.0.0 + - true + - python-vitrageclient + python-watcherclient: + - 4.4.0 + - true + - python-watcherclient + python-zaqarclient: + - 2.7.0 + - true + - python-zaqarclient + python-zunclient: + - 5.0.0 + - true + - python-zunclient + horizon-plugin: + adjutant-ui: + - 8.0.0 + - false + - null + blazar-dashboard: + - 11.0.0 + - false + - null + cloudkitty-dashboard: + - 18.0.0 + - false + - null + designate-dashboard: + - 18.0.0 + - true + - openstack-designate-ui + heat-dashboard: + - 11.0.0 + - true + - openstack-heat-ui + ironic-ui: + - 6.3.0 + - true + - python-ironic-ui + magnum-ui: + - 14.0.0 + - true + - openstack-magnum-ui + manila-ui: + - 11.0.0 + - false + - null + masakari-dashboard: + - 10.0.0 + - false + - null + mistral-dashboard: + - 18.0.0 + - true + - openstack-mistral-ui + neutron-fwaas-dashboard: + - 7.0.0 + - false + - null + neutron-vpnaas-dashboard: + - 10.0.0 + - false + - null + octavia-dashboard: + - 13.0.0 + - true + - openstack-octavia-ui + tacker-horizon: + - 9.0.0 + - false + - null + trove-dashboard: + - 22.0.1 + - true + - python-trove-dashboard + venus-dashboard: + - 4.0.0 + - false + - null + vitrage-dashboard: + - 6.0.0 + - true + - openstack-vitrage-ui + watcher-dashboard: + - 11.0.0 + - false + - null + zaqar-ui: + - 16.0.0 + - false + - null + zun-ui: + - 13.0.0 + - false + - null + library: + castellan: + - 5.0.0 + - true + - python-castellan + ceilometermiddleware: + - 3.3.1 + - true + - python-ceilometermiddleware + cliff: + - 4.6.0 + - true + - python-cliff + glance_store: + - 4.7.0 + - false + - null + heat-translator: + - 3.0.0 + - false + - null + ironic-lib: + - 6.0.0 + - true + - python-ironic-lib + keystoneauth: + - 5.6.0 + - false + - null + keystonemiddleware: + - 10.6.0 + - true + - python-keystonemiddleware + kuryr: + - 3.0.0 + - false + - null + metalsmith: + - 2.1.1 + - false + - null + mistral-extra: + - 13.2.0 + - false + - null + mistral-lib: + - 2.10.0 + - true + - python-mistral-lib + neutron-lib: + - 3.11.1 + - true + - python-neutron-lib + octavia-lib: + - 3.5.0 + - true + - python-octavia-lib + openstacksdk: + - 3.0.0 + - true + - python-openstacksdk + os-brick: + - 6.7.0 + - true + - python-os-brick + os-ken: + - 2.8.1 + - true + - python-os-ken + os-vif: + - 3.5.0 + - true + - python-os-vif + osc-lib: + - 3.0.1 + - true + - python-osc-lib + oslo.cache: + - 3.7.0 + - true + - python-oslo.cache + oslo.concurrency: + - 6.0.0 + - true + - python-oslo.concurrency + oslo.config: + - 9.4.0 + - true + - python-oslo.config + oslo.context: + - 5.5.0 + - true + - python-oslo.context + oslo.db: + - 15.0.0 + - true + - python-oslo.db + oslo.i18n: + - 6.3.0 + - true + - python-oslo.i18n + oslo.limit: + - 2.4.0 + - true + - python-oslo.limit + oslo.log: + - 5.5.1 + - true + - python-oslo.log + oslo.messaging: + - 14.7.1 + - true + - python-oslo.messaging + oslo.metrics: + - 0.8.0 + - true + - python-oslo.metrics + oslo.middleware: + - 6.1.0 + - true + - python-oslo.middleware + oslo.policy: + - 4.3.0 + - true + - python-oslo.policy + oslo.privsep: + - 3.3.0 + - true + - python-oslo.privsep + oslo.reports: + - 3.3.0 + - true + - python-oslo.reports + oslo.rootwrap: + - 7.2.0 + - true + - python-oslo.rootwrap + oslo.serialization: + - 5.4.1 + - true + - python-oslo.serialization + oslo.service: + - 3.4.1 + - true + - python-oslo.service + oslo.upgradecheck: + - 2.3.0 + - true + - python-oslo.upgradecheck + oslo.utils: + - 7.1.0 + - true + - python-oslo.utils + oslo.versionedobjects: + - 3.3.0 + - true + - python-oslo.versionedobjects + oslo.vmware: + - 4.4.0 + - true + - python-oslo.vmware + ovsdbapp: + - 2.6.1 + - true + - python-ovsdbapp + stevedore: + - 5.2.0 + - true + - python-stevedore + sushy: + - 5.0.0 + - true + - python-sushy + taskflow: + - 5.6.0 + - true + - python-taskflow + tosca-parser: + - 2.10.0 + - false + - null + other: + ansible-role-atos-hsm: + - 7.0.0 + - false + - null + ansible-role-lunasa-hsm: + - 7.0.0 + - false + - null + ansible-role-thales-hsm: + - 7.0.0 + - false + - null + bifrost: + - 18.0.0 + - false + - null + blazar-nova: + - 5.0.0 + - false + - null + heat-agents: + - 8.0.0 + - true + - openstack-heat-agents + ironic-inspector: + - 12.1.0 + - true + - openstack-ironic-inspector + ironic-prometheus-exporter: + - 4.3.0 + - true + - python-ironic-prometheus-exporter + ironic-python-agent: + - 9.11.0 + - true + - openstack-ironic-python-agent + ironic-python-agent-builder: + - 5.3.0 + - true + - openstack-ironic-python-agent-builder + kuryr-kubernetes: + - 10.0.0 + - false + - null + kuryr-libnetwork: + - 13.0.0 + - false + - null + masakari-monitors: + - 17.0.1 + - false + - null + networking-bagpipe: + - 20.0.1 + - false + - null + networking-baremetal: + - 6.3.0 + - true + - networking-baremetal + networking-bgpvpn: + - 20.0.0 + - false + - null + networking-generic-switch: + - 7.3.0 + - true + - networking-generic-switch + networking-sfc: + - 18.0.0 + - true + - python-networking-sfc + neutron-dynamic-routing: + - 24.0.0 + - true + - openstack-neutron-dynamic-routing + neutron-fwaas: + - 20.0.0 + - false + - null + neutron-vpnaas: + - 24.0.1 + - true + - openstack-neutron-vpnaas + ovn-bgp-agent: + - 2.0.1 + - false + - null + ovn-octavia-provider: + - 6.0.0 + - true + - python-ovn-octavia-provider + python-openstackclient: + - 6.6.1 + - true + - python-openstackclient + release-test: + - 6.0.0 + - false + - null + tap-as-a-service: + - 13.0.0 + - false + - null + tempest: + - 38.0.0 + - true + - openstack-tempest + service: + adjutant: + - 8.0.0 + - false + - null + aodh: + - 18.0.0 + - true + - openstack-aodh + barbican: + - 18.0.0 + - true + - openstack-barbican + blazar: + - 13.0.0 + - false + - null + ceilometer: + - 22.0.0 + - true + - openstack-ceilometer + cinder: + - 24.1.0 + - true + - openstack-cinder + cloudkitty: + - 20.0.0 + - true + - openstack-cloudkitty + cyborg: + - 12.0.0 + - true + - openstack-cyborg + designate: + - 18.0.0 + - true + - openstack-designate + glance: + - 28.1.0 + - true + - openstack-glance + heat: + - 22.0.1 + - true + - openstack-heat + horizon: + - 24.0.0 + - true + - openstack-horizon + ironic: + - 24.1.1 + - true + - openstack-ironic + keystone: + - 25.0.0 + - true + - openstack-keystone + magnum: + - 18.0.0 + - false + - null + manila: + - 18.1.0 + - true + - openstack-manila + masakari: + - 17.0.0 + - true + - openstack-masakari + mistral: + - 18.0.1 + - true + - openstack-mistral + neutron: + - 24.0.1 + - true + - openstack-neutron + nova: + - 29.2.0 + - true + - openstack-nova + octavia: + - 14.0.0 + - true + - openstack-octavia + placement: + - 11.0.0 + - true + - openstack-placement + skyline-apiserver: + - 4.0.1 + - false + - null + skyline-console: + - 4.0.1 + - false + - null + storlets: + - 13.0.0 + - false + - null + swift: + - 2.33.0 + - true + - openstack-swift + tacker: + - 11.0.0 + - false + - null + trove: + - 21.0.1 + - true + - openstack-trove + venus: + - 4.0.0 + - false + - null + vitrage: + - 12.0.0 + - false + - null + watcher: + - 12.0.0 + - false + - null + zaqar: + - 18.0.0 + - true + - openstack-zaqar + zun: + - 13.0.0 + - false + - null + tempest-plugin: + barbican-tempest-plugin: + - 4.0.0 + - false + - null + blazar-tempest-plugin: + - 0.12.0 + - false + - null + cinder-tempest-plugin: + - 1.12.0 + - true + - python-cinder-tempest-plugin + cloudkitty-tempest-plugin: + - 2.9.0 + - false + - null + cyborg-tempest-plugin: + - 2.3.0 + - false + - null + designate-tempest-plugin: + - 0.22.0 + - false + - null + glance-tempest-plugin: + - 0.8.0 + - true + - python-glance-tempest-plugin + heat-tempest-plugin: + - 2.1.0 + - false + - null + ironic-tempest-plugin: + - 2.9.0 + - true + - python-ironic-tempest-plugin + keystone-tempest-plugin: + - 0.14.0 + - true + - python-keystone-tempest-plugin + kuryr-tempest-plugin: + - 0.16.0 + - false + - null + magnum-tempest-plugin: + - 2.3.0 + - false + - null + manila-tempest-plugin: + - 2.2.0 + - false + - null + mistral-tempest-plugin: + - 2.3.0 + - false + - null + neutron-tempest-plugin: + - 2.7.0 + - true + - python-neutron-tempest-plugin + octavia-tempest-plugin: + - 2.6.0 + - false + - null + telemetry-tempest-plugin: + - 2.0.0 + - false + - null + trove-tempest-plugin: + - 2.3.1 + - true + - python-trove-tempest-plugin + venus-tempest-plugin: + - 3.2.0 + - false + - null + vitrage-tempest-plugin: + - 6.3.0 + - false + - null + watcher-tempest-plugin: + - 3.1.0 + - false + - null + zaqar-tempest-plugin: + - 1.8.0 + - false + - null + zun-tempest-plugin: + - 4.9.0 + - false + - null + trailing: + ansible-collection-kolla: + - 5.1.0 + - false + - null + kayobe: + - 16.1.0 + - false + - null + kayobe-config: + - 16.1.0 + - false + - null + kayobe-config-dev: + - 16.1.0 + - false + - null + kolla: + - 18.1.0 + - true + - openstack-kolla + kolla-ansible: + - 18.1.0 + - true + - openstack-kolla-ansible + openstack-ansible: + - 29.0.2 + - false + - null + puppet-aodh: + - 24.0.0 + - false + - null + puppet-barbican: + - 24.0.0 + - false + - null + puppet-ceilometer: + - 24.0.0 + - false + - null + puppet-cinder: + - 24.0.0 + - false + - null + puppet-cloudkitty: + - 13.0.0 + - false + - null + puppet-designate: + - 24.0.0 + - false + - null + puppet-glance: + - 24.0.0 + - false + - null + puppet-gnocchi: + - 24.0.0 + - false + - null + puppet-heat: + - 24.0.0 + - false + - null + puppet-horizon: + - 24.0.0 + - false + - null + puppet-ironic: + - 24.0.0 + - false + - null + puppet-keystone: + - 24.0.0 + - false + - null + puppet-magnum: + - 24.0.0 + - false + - null + puppet-manila: + - 24.0.0 + - false + - null + puppet-mistral: + - 24.0.0 + - false + - null + puppet-neutron: + - 24.0.0 + - false + - null + puppet-nova: + - 24.0.0 + - false + - null + puppet-octavia: + - 24.0.0 + - false + - null + puppet-openstack_extras: + - 24.0.1 + - false + - null + puppet-openstacklib: + - 24.0.0 + - false + - null + puppet-oslo: + - 24.0.0 + - false + - null + puppet-ovn: + - 24.0.0 + - false + - null + puppet-placement: + - 11.0.0 + - false + - null + puppet-swift: + - 24.0.0 + - false + - null + puppet-tempest: + - 24.0.0 + - false + - null + puppet-trove: + - 24.0.0 + - false + - null + puppet-vitrage: + - 14.0.0 + - false + - null + puppet-vswitch: + - 20.0.0 + - false + - null + puppet-watcher: + - 24.0.0 + - false + - null + puppet-zaqar: + - 24.0.0 + - false + - null diff --git a/tools/oos/scripts/fetch_openstack_release_mapping.py b/tools/oos/scripts/fetch_openstack_release_mapping.py index 0842dad1..03f3a7fd 100755 --- a/tools/oos/scripts/fetch_openstack_release_mapping.py +++ b/tools/oos/scripts/fetch_openstack_release_mapping.py @@ -1,9 +1,11 @@ #!/usr/bin/python3 from packaging import version +from base64 import b64decode import re - +import os import requests import yaml +import click releases = [ @@ -18,66 +20,177 @@ releases = [ 'yoga', 'zed', '2023.1 antelope', - '2023.2 bobcat' + '2023.2 bobcat', + '2024.1 caracal', ] -all_res = dict() -for release in releases: - release_name = release.split()[-1] - url = 'https://releases.openstack.org/' + release_name +def get_release_from_web(): + all_res = dict() + for release in releases: + release_name = release.split()[-1] + url = 'https://releases.openstack.org/' + release_name + try: + url_os_content = requests.get(url, verify=True).content.decode() + + # get all links, which ends .tar.gz from HTML + links = re.findall(r'https://.*\.tar\.gz', url_os_content) + results = dict() + for pkg_link in links: + # TODO: Now, we directly filtered out {release}-eom versions. + # But, the `{release}-eom` versions may contain additional commits + # compared to the last release version on PyPI. + # For example, the latest git commit of Ceilometer in "Yoga". + # The last release version(18.1.0) on PyPI: 82feb96ed324dca8cbf4773bbdf91eb9e33d7b67 + # The `yoga-eom` version: 53f31524ee9ea0082ad17b9ee2d0005b5f85df30 + # + # Commits related to {release}-eom versions are not considered now. + # When SIG decide to incorporate commits which were only contained + # in eom version, adding the necessary mechanisms to oos. + if f"{release}-last" in pkg_link or f"{release}-eom" in pkg_link: + # tempest plugin version names like "stein-last" should be skipped. + # version names like "victoria-eom" should be skipped. + continue + # get name and package informations from link + tmp = pkg_link.split("/") + pkg_full_name = tmp[4] + pkg_name = pkg_full_name[0:pkg_full_name.rfind('-')] + pkg_ver = pkg_full_name[ + pkg_full_name.rfind('-') + 1:pkg_full_name.rfind('.tar')] + # check if package with version are in results, + # and check for higher version + if pkg_name not in results: + results[pkg_name] = pkg_ver + else: + # packaging-23.2 raise a exception for alpha in version.parse + try: + # if current versions < new version, then update it + if version.parse(results.get(pkg_name)) < version.parse(pkg_ver): + results[pkg_name] = pkg_ver + except Exception as e: + print(release + ': ' + pkg_name) + print(f"Error occurred: {e}\n") + # Store the release information. + # For releases after "Zed", use the release number: + # "year.release count within the year" (e.g., "2023.1"). + # For "Zed" and earlier releases, use the release name (e.g., "zed"). + # + # After the release "Zed", each OpenStack release has an identification + # code. And the release number will be used as the primary identifier + # in the development cycle. + # Reference: https://governance.openstack.org/tc/reference/release-naming.html + all_res[release.split()[0]] = results + except requests.exceptions.RequestException as e: + print(f"Error fetching data for {release}: {e}") + return all_res + + +def get_decode_content(): + ''' + get openeuler_sig_repo.yaml content with api + ''' + url = 'https://gitee.com/api/v5/repos/openeuler/openstack/contents/tools/oos/etc/openeuler_sig_repo.yaml' try: - url_os_content = requests.get(url, verify=True).content.decode() - - # get all links, which ends .tar.gz from HTML - links = re.findall(r'https://.*\.tar\.gz', url_os_content) - results = dict() - for pkg_link in links: - # TODO: Now, we directly filtered out {release}-eom versions. - # But, the `{release}-eom` versions may contain additional commits - # compared to the last release version on PyPI. - # For example, the latest git commit of Ceilometer in "Yoga". - # The last release version(18.1.0) on PyPI: 82feb96ed324dca8cbf4773bbdf91eb9e33d7b67 - # The `yoga-eom` version: 53f31524ee9ea0082ad17b9ee2d0005b5f85df30 - # - # Commits related to {release}-eom versions are not considered now. - # When SIG decide to incorporate commits which were only contained - # in eom version, adding the necessary mechanisms to oos. - if f"{release}-last" in pkg_link or f"{release}-eom" in pkg_link: - # tempest plugin version names like "stein-last" should be skipped. - # version names like "victoria-eom" should be skipped. - continue - # get name and package informations from link - tmp = pkg_link.split("/") - pkg_full_name = tmp[4] - pkg_name = pkg_full_name[0:pkg_full_name.rfind('-')] - pkg_ver = pkg_full_name[ - pkg_full_name.rfind('-') + 1:pkg_full_name.rfind('.tar')] - # check if package with version are in results, - # and check for higher version - if pkg_name not in results: - results[pkg_name] = pkg_ver - else: - # packaging-23.2 raise a exception for alpha in version.parse - try: - # if current versions < new version, then update it - if version.parse(results.get(pkg_name)) < version.parse(pkg_ver): - results[pkg_name] = pkg_ver - except Exception as e: - print(release + ': ' + pkg_name) - print(f"Error occurred: {e}\n") - # Store the release information. - # For releases after "Zed", use the release number: - # "year.release count within the year" (e.g., "2023.1"). - # For "Zed" and earlier releases, use the release name (e.g., "zed"). - # - # After the release "Zed", each OpenStack release has an identification - # code. And the release number will be used as the primary identifier - # in the development cycle. - # Reference: https://governance.openstack.org/tc/reference/release-naming.html - all_res[release.split()[0]] = results - except requests.exceptions.RequestException as e: - print(f"Error fetching data for {release}: {e}") - -with open('openstack_release.yaml', 'w') as fp: - fp.write(yaml.dump(all_res)) + content = requests.get(url).json()['content'] + data = b64decode(content) + return yaml.safe_load(data)['src-openeuler'] + except Exception as e: + raise ValueError(f'bad request: {e}') + + +def is_repo_ownde_by_sig(sig_pkg, name): + ''' + Judge the repo is owned by sig-openstack + ''' + if sig_pkg: + for fix_name in [name, f'python-{name}', f'openstack-{name}']: + if sig_pkg.get(fix_name, False): + return True, fix_name + + # some pkg like heat-dashboard, name as openstack-heat-ui + if name.endswith('-dashboard'): + new_name = f'openstack-{name}'.replace('-dashboard', '-ui') + if sig_pkg.get(new_name, False): + return True, new_name + + return False, None + + +def get_all_release_pkg_content(release_name, repo_path, sig_pkg): + ''' + Get all pkgs of specify release with repository + ''' + + # deliverables_dict format + # { + # 'service': { + # 'package_name': ['package_version', is_own_by_sig, fix_name], + # }, + # 'client-library': { + # 'python-cinderclient': ['9.3.0', false, None], + # }, + # { + # 'python-novaclient': ['9.3.0', true, python-novaclient], + # }, + # 'library': {}, + # 'horizon-plugin': {}, + # 'other': {}, + # 'tempest-plugin': {}, + # 'trailing': {}, + # } + deliverables_dict = {} + deliver_path = os.path.join(repo_path, f'deliverables/{release_name}') + for file in sorted(os.listdir(deliver_path)): + if file.endswith('.yaml'): # there's all .yaml + try: + abs_path = os.path.join(deliver_path, file) + with open(abs_path, 'r', encoding='utf-8') as f: + file_data = f.read() + + pkg_content = yaml.safe_load(file_data) + + # don't need to process grenade.yaml + pkg_release = pkg_content.get('releases', None) + if pkg_release: + service_type = pkg_content['type'] + latest_version = pkg_release[-1]['version'] + projects = pkg_release[-1]['projects'] + projects = [prj['repo'].split('/')[-1] for prj in projects] + + if not deliverables_dict.get(service_type, None): + deliverables_dict.update({service_type: {}}) + + for prj in projects: + own_result = is_repo_ownde_by_sig(sig_pkg, prj) + item = {prj: [latest_version, own_result[0], own_result[1]]} + deliverables_dict[service_type].update(item) + + except Exception as e: + raise ValueError(f'fail to process {file}: {e}') + + return deliverables_dict + + +@click.command() +@click.option('-r', '--repo-path', help='the repository path of openstack/releases') +def run(repo_path): + if not repo_path: + all_res = get_release_from_web() + with open('openstack_release.yaml', 'w') as fp: + fp.write(yaml.dump(all_res)) + else: + # get all openstack release info form openstack/release repository + # https://opendev.org/openstack/releases/ + res = dict() + sig_pkg = get_decode_content() + for release in releases[-1:-3:-1]: # only latest two + content = get_all_release_pkg_content(release.split()[-1], + repo_path, + sig_pkg) + res.update({release.split()[-1]: content}) + with open('openstack_releases_info.yaml', 'w', encoding='utf-8') as file: + yaml.dump(res, file) + + +if __name__ == '__main__': + run() -- Gitee