diff --git a/tools/oos/etc/openstack_releases_info.yaml b/tools/oos/etc/openstack_releases_info.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8f9adb508a155ea0cc25effde5b563afd2279b8 --- /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 0842dad194a610055456bcf45e9b572888a6008f..03f3a7fdc76525ed73f1b30888c8a5298f15a86b 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()