From 55d8828be3d3476d6f3201682796fc3883ff615b Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Fri, 6 Dec 2019 11:13:37 +0000 Subject: [PATCH] Switch to stable/train for source images on CentOS/RHEL OpenStack projects are beginning to drop python 2 support on the master branch. CentOS 8 is not yet ready, so our best option to continue building and testing CentOS is to use the Train tarballs for source images. This change also introduces a new openstack_branch config option which can be used to set the branch used for source images. For CentOS/RHEL, the default is stable-train, for Debian/Ubuntu it it master. Change-Id: Ieab5e06a3c05951d97bb979ab735b4cef675cc0a --- kolla/common/config.py | 234 ++++++++++++++++++++++------------------- 1 file changed, 123 insertions(+), 111 deletions(-) diff --git a/kolla/common/config.py b/kolla/common/config.py index 0c4dc5ae32..6896310109 100755 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -33,7 +33,12 @@ DISTRO_RELEASE = { 'debian': '10', 'ubuntu': '18.04', } -OPENSTACK_RELEASE = 'master' +OPENSTACK_RELEASE = { + 'centos': 'train', + 'rhel': 'train', + 'debian': 'master', + 'ubuntu': 'master', +} # This is noarch repository so we will use it on all architectures DELOREAN = \ @@ -246,8 +251,10 @@ _CLI_OPTS = [ help=('Squash the image layers. WARNING: it will consume lots' ' of disk IO. "docker-squash" tool is required, install' ' it by "pip install docker-squash"')), - cfg.StrOpt('openstack-release', default=OPENSTACK_RELEASE, + cfg.StrOpt('openstack-release', default='master', help='OpenStack release for building kolla-toolbox'), + cfg.StrOpt('openstack-branch', default='master', + help='Branch for source images'), ] _BASE_OPTS = [ @@ -281,67 +288,67 @@ SOURCES = { 'openstack-base': { 'type': 'url', 'location': ('$tarballs_base/requirements/' - 'requirements-master.tar.gz')}, + 'requirements-${openstack_branch}.tar.gz')}, 'aodh-base': { 'type': 'url', 'location': ('$tarballs_base/aodh/' - 'aodh-master.tar.gz')}, + 'aodh-${openstack_branch}.tar.gz')}, 'barbican-base': { 'type': 'url', 'location': ('$tarballs_base/barbican/' - 'barbican-master.tar.gz')}, + 'barbican-${openstack_branch}.tar.gz')}, 'bifrost-base': { 'type': 'url', 'location': ('$tarballs_base/bifrost/' - 'bifrost-master.tar.gz')}, + 'bifrost-${openstack_branch}.tar.gz')}, 'blazar-base': { 'type': 'url', 'location': ('$tarballs_base/blazar/' - 'blazar-master.tar.gz')}, + 'blazar-${openstack_branch}.tar.gz')}, 'ceilometer-base': { 'type': 'url', 'location': ('$tarballs_base/ceilometer/' - 'ceilometer-master.tar.gz')}, + 'ceilometer-${openstack_branch}.tar.gz')}, 'ceilometer-base-plugin-panko': { 'type': 'url', 'location': ('$tarballs_base/panko/' - 'panko-master.tar.gz')}, + 'panko-${openstack_branch}.tar.gz')}, 'cinder-base': { 'type': 'url', 'location': ('$tarballs_base/cinder/' - 'cinder-master.tar.gz')}, + 'cinder-${openstack_branch}.tar.gz')}, 'congress-base': { 'type': 'url', 'location': ('$tarballs_base/congress/' - 'congress-master.tar.gz')}, + 'congress-${openstack_branch}.tar.gz')}, 'cloudkitty-base': { 'type': 'url', 'location': ('$tarballs_base/cloudkitty/' - 'cloudkitty-master.tar.gz')}, + 'cloudkitty-${openstack_branch}.tar.gz')}, 'cyborg-base': { 'type': 'url', 'location': ('$tarballs_base/cyborg/' - 'cyborg-master.tar.gz')}, + 'cyborg-${openstack_branch}.tar.gz')}, 'designate-base': { 'type': 'url', 'location': ('$tarballs_base/designate/' - 'designate-master.tar.gz')}, + 'designate-${openstack_branch}.tar.gz')}, 'ec2-api': { 'type': 'url', 'location': ('$tarballs_base/ec2-api/' - 'ec2-api-master.tar.gz')}, + 'ec2-api-${openstack_branch}.tar.gz')}, 'freezer-api': { 'type': 'url', 'location': ('$tarballs_base/freezer-api/' - 'freezer-api-master.tar.gz')}, + 'freezer-api-${openstack_branch}.tar.gz')}, 'freezer-base': { 'type': 'url', 'location': ('$tarballs_base/freezer/' - 'freezer-master.tar.gz')}, + 'freezer-${openstack_branch}.tar.gz')}, 'glance-base': { 'type': 'url', 'location': ('$tarballs_base/glance/' - 'glance-master.tar.gz')}, + 'glance-${openstack_branch}.tar.gz')}, 'gnocchi-base': { 'type': 'git', 'reference': 'master', @@ -350,195 +357,195 @@ SOURCES = { 'heat-base': { 'type': 'url', 'location': ('$tarballs_base/heat/' - 'heat-master.tar.gz')}, + 'heat-${openstack_branch}.tar.gz')}, 'horizon': { 'type': 'url', 'location': ('$tarballs_base/horizon/' - 'horizon-master.tar.gz')}, + 'horizon-${openstack_branch}.tar.gz')}, 'horizon-plugin-blazar-dashboard': { 'type': 'url', 'location': ('$tarballs_base/blazar-dashboard/' - 'blazar-dashboard-master.tar.gz')}, + 'blazar-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-congress-dashboard': { 'type': 'url', 'location': ('$tarballs_base/congress-dashboard/' - 'congress-dashboard-master.tar.gz')}, + 'congress-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-cloudkitty-dashboard': { 'type': 'url', 'location': ('$tarballs_base/cloudkitty-dashboard/' - 'cloudkitty-dashboard-master.tar.gz')}, + 'cloudkitty-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-designate-dashboard': { 'type': 'url', 'location': ('$tarballs_base/designate-dashboard/' - 'designate-dashboard-master.tar.gz')}, + 'designate-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-fwaas-dashboard': { 'type': 'url', 'location': ('$tarballs_base/neutron-fwaas-dashboard/' - 'neutron-fwaas-dashboard-master.tar.gz')}, + 'neutron-fwaas-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-freezer-web-ui': { 'type': 'url', 'location': ('$tarballs_base/freezer-web-ui/' - 'freezer-web-ui-master.tar.gz')}, + 'freezer-web-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-heat-dashboard': { 'type': 'url', 'location': ('$tarballs_base/heat-dashboard/' - 'heat-dashboard-master.tar.gz')}, + 'heat-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-ironic-ui': { 'type': 'url', 'location': ('$tarballs_base/ironic-ui/' - 'ironic-ui-master.tar.gz')}, + 'ironic-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-karbor-dashboard': { 'type': 'url', 'location': ('$tarballs_base/karbor-dashboard/' - 'karbor-dashboard-master.tar.gz')}, + 'karbor-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-magnum-ui': { 'type': 'url', 'location': ('$tarballs_base/magnum-ui/' - 'magnum-ui-master.tar.gz')}, + 'magnum-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-manila-ui': { 'type': 'url', 'location': ('$tarballs_base/manila-ui/' - 'manila-ui-master.tar.gz')}, + 'manila-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-masakari-dashboard': { 'type': 'url', 'location': ('$tarballs_base/masakari-dashboard/' - 'masakari-dashboard-master.tar.gz')}, + 'masakari-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-mistral-dashboard': { 'type': 'url', 'location': ('$tarballs_base/mistral-dashboard/' - 'mistral-dashboard-master.tar.gz')}, + 'mistral-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-monasca-ui': { 'type': 'url', 'location': ('$tarballs_base/monasca-ui/' - 'monasca-ui-master.tar.gz')}, + 'monasca-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-murano-dashboard': { 'type': 'url', 'location': ('$tarballs_base/murano-dashboard/' - 'murano-dashboard-master.tar.gz')}, + 'murano-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-neutron-vpnaas-dashboard': { 'type': 'url', 'location': ('$tarballs_base/neutron-vpnaas-dashboard/' - 'neutron-vpnaas-dashboard-master.tar.gz')}, + 'neutron-vpnaas-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-octavia-dashboard': { 'type': 'url', 'location': ('$tarballs_base/octavia-dashboard/' - 'octavia-dashboard-master.tar.gz')}, + 'octavia-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-qinling-dashboard': { 'type': 'url', 'location': ('$tarballs_base/qinling-dashboard/' - 'qinling-dashboard-master.tar.gz')}, + 'qinling-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-sahara-dashboard': { 'type': 'url', 'location': ('$tarballs_base/sahara-dashboard/' - 'sahara-dashboard-master.tar.gz')}, + 'sahara-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-searchlight-ui': { 'type': 'url', 'location': ('$tarballs_base/searchlight-ui/' - 'searchlight-ui-master.tar.gz')}, + 'searchlight-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-senlin-dashboard': { 'type': 'url', 'location': ('$tarballs_base/senlin-dashboard/' - 'senlin-dashboard-master.tar.gz')}, + 'senlin-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-solum-dashboard': { 'type': 'url', 'location': ('$tarballs_base/solum-dashboard/' - 'solum-dashboard-master.tar.gz')}, + 'solum-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-tacker-dashboard': { 'type': 'url', 'location': ('$tarballs_base/tacker-horizon/' - 'tacker-horizon-master.tar.gz')}, + 'tacker-horizon-${openstack_branch}.tar.gz')}, 'horizon-plugin-trove-dashboard': { 'type': 'url', 'location': ('$tarballs_base/trove-dashboard/' - 'trove-dashboard-master.tar.gz')}, + 'trove-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-vitrage-dashboard': { 'type': 'url', 'location': ('$tarballs_base/vitrage-dashboard/' - 'vitrage-dashboard-master.tar.gz')}, + 'vitrage-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-watcher-dashboard': { 'type': 'url', 'location': ('$tarballs_base/watcher-dashboard/' - 'watcher-dashboard-master.tar.gz')}, + 'watcher-dashboard-${openstack_branch}.tar.gz')}, 'horizon-plugin-zaqar-ui': { 'type': 'url', 'location': ('$tarballs_base/zaqar-ui/' - 'zaqar-ui-master.tar.gz')}, + 'zaqar-ui-${openstack_branch}.tar.gz')}, 'horizon-plugin-zun-ui': { 'type': 'url', 'location': ('$tarballs_base/zun-ui/' - 'zun-ui-master.tar.gz')}, + 'zun-ui-${openstack_branch}.tar.gz')}, 'ironic-base': { 'type': 'url', 'location': ('$tarballs_base/ironic/' - 'ironic-master.tar.gz')}, + 'ironic-${openstack_branch}.tar.gz')}, 'ironic-inspector': { 'type': 'url', 'location': ('$tarballs_base/ironic-inspector/' - 'ironic-inspector-master.tar.gz')}, + 'ironic-inspector-${openstack_branch}.tar.gz')}, 'karbor-base': { 'type': 'url', 'location': ('$tarballs_base/karbor/' - 'karbor-master.tar.gz')}, + 'karbor-${openstack_branch}.tar.gz')}, 'keystone-base': { 'type': 'url', 'location': ('$tarballs_base/keystone/' - 'keystone-master.tar.gz')}, + 'keystone-${openstack_branch}.tar.gz')}, 'kuryr-base': { 'type': 'url', 'location': ('$tarballs_base/kuryr/' - 'kuryr-master.tar.gz')}, + 'kuryr-${openstack_branch}.tar.gz')}, 'kuryr-libnetwork': { 'type': 'url', 'location': ('$tarballs_base/kuryr-libnetwork/' - 'kuryr-libnetwork-master.tar.gz')}, + 'kuryr-libnetwork-${openstack_branch}.tar.gz')}, 'magnum-base': { 'type': 'url', 'location': ('$tarballs_base/magnum/' - 'magnum-master.tar.gz')}, + 'magnum-${openstack_branch}.tar.gz')}, 'manila-base': { 'type': 'url', 'location': ('$tarballs_base/manila/' - 'manila-master.tar.gz')}, + 'manila-${openstack_branch}.tar.gz')}, 'masakari-base': { 'type': 'url', 'location': ('$tarballs_base/masakari/' - 'masakari-master.tar.gz')}, + 'masakari-${openstack_branch}.tar.gz')}, 'masakari-monitors': { 'type': 'url', 'location': ('$tarballs_base/masakari-monitors/' - 'masakari-monitors-master.tar.gz')}, + 'masakari-monitors-${openstack_branch}.tar.gz')}, 'mistral-base': { 'type': 'url', 'location': ('$tarballs_base/mistral/' - 'mistral-master.tar.gz')}, + 'mistral-${openstack_branch}.tar.gz')}, 'mistral-base-plugin-tacker': { 'type': 'url', 'location': ('$tarballs_base/tacker/' - 'tacker-master.tar.gz')}, + 'tacker-${openstack_branch}.tar.gz')}, 'monasca-agent': { 'type': 'url', 'location': ('$tarballs_base/monasca-agent/' - 'monasca-agent-master.tar.gz')}, + 'monasca-agent-${openstack_branch}.tar.gz')}, 'monasca-api': { 'type': 'url', 'location': ('$tarballs_base/monasca-api/' - 'monasca-api-master.tar.gz')}, + 'monasca-api-${openstack_branch}.tar.gz')}, 'monasca-log-api': { 'type': 'url', 'location': ('$tarballs_base/monasca-log-api/' - 'monasca-log-api-master.tar.gz')}, + 'monasca-log-api-${openstack_branch}.tar.gz')}, 'monasca-notification': { 'type': 'url', 'location': ('$tarballs_base/monasca-notification/' - 'monasca-notification-master.tar.gz')}, + 'monasca-notification-${openstack_branch}.tar.gz')}, 'monasca-persister': { 'type': 'url', 'location': ('$tarballs_base/monasca-persister/' - 'monasca-persister-master.tar.gz')}, + 'monasca-persister-${openstack_branch}.tar.gz')}, 'monasca-statsd': { 'type': 'url', 'location': ('$tarballs_base/monasca-statsd/' - 'monasca-statsd-master.tar.gz')}, + 'monasca-statsd-${openstack_branch}.tar.gz')}, # FIXME(dszumski): Use openstack tar when infra is fixed 'monasca-thresh': { 'type': 'url', @@ -547,91 +554,91 @@ SOURCES = { 'monasca-thresh-additions-monasca-common': { 'type': 'url', 'location': ('$tarballs_base/monasca-common/' - 'monasca-common-master.tar.gz')}, + 'monasca-common-${openstack_branch}.tar.gz')}, 'murano-base': { 'type': 'url', 'location': ('$tarballs_base/murano/' - 'murano-master.tar.gz')}, + 'murano-${openstack_branch}.tar.gz')}, 'neutron-base': { 'type': 'url', 'location': ('$tarballs_base/neutron/' - 'neutron-master.tar.gz')}, + 'neutron-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-neutron-fwaas': { 'type': 'url', 'location': ('$tarballs_base/neutron-fwaas/' - 'neutron-fwaas-master.tar.gz')}, + 'neutron-fwaas-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-networking-ansible': { 'type': 'url', 'location': ('$tarballs_base/networking-ansible/' - 'networking-ansible-master.tar.gz')}, + 'networking-ansible-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-networking-baremetal': { 'type': 'url', 'location': ('$tarballs_base/networking-baremetal/' - 'networking-baremetal-master.tar.gz')}, + 'networking-baremetal-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-networking-generic-switch': { 'type': 'url', 'location': ('$tarballs_base/networking-generic-switch/' - 'networking-generic-switch-master.tar.gz')}, + 'networking-generic-switch-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-networking-sfc': { 'type': 'url', 'location': ('$tarballs_base/networking-sfc/' - 'networking-sfc-master.tar.gz')}, + 'networking-sfc-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-vmware-nsx': { 'type': 'url', 'location': ('$tarballs_base/vmware-nsx/' - 'vmware-nsx-master.tar.gz')}, + 'vmware-nsx-${openstack_branch}.tar.gz')}, 'neutron-base-plugin-vpnaas-agent': { 'type': 'url', 'location': ('$tarballs_base/neutron-vpnaas/' - 'neutron-vpnaas-master.tar.gz')}, + 'neutron-vpnaas-${openstack_branch}.tar.gz')}, 'neutron-bgp-dragent': { 'type': 'url', 'location': ('$tarballs_base/neutron-dynamic-routing/' - 'neutron-dynamic-routing-master.tar.gz')}, + 'neutron-dynamic-routing-${openstack_branch}.tar.gz')}, 'neutron-server-opendaylight-plugin-networking-odl': { 'type': 'url', 'location': ('$tarballs_base/networking-odl/' - 'networking-odl-master.tar.gz')}, + 'networking-odl-${openstack_branch}.tar.gz')}, 'neutron-server-opendaylight-plugin-networking-bgpvpn': { 'type': 'url', 'location': ('$tarballs_base/networking-bgpvpn/' - 'networking-bgpvpn-master.tar.gz')}, + 'networking-bgpvpn-${openstack_branch}.tar.gz')}, 'neutron-server-opendaylight-plugin-networking-l2gw': { 'type': 'url', 'location': ('$tarballs_base/networking-l2gw/' - 'networking-l2gw-master.tar.gz')}, + 'networking-l2gw-${openstack_branch}.tar.gz')}, 'neutron-server-opendaylight-plugin-networking-sfc': { 'type': 'url', 'location': ('$tarballs_base/networking-sfc/' - 'networking-sfc-master.tar.gz')}, + 'networking-sfc-${openstack_branch}.tar.gz')}, 'neutron-server-plugin-neutron-dynamic-routing': { 'type': 'url', 'location': ('$tarballs_base/neutron-dynamic-routing/' - 'neutron-dynamic-routing-master.tar.gz')}, + 'neutron-dynamic-routing-${openstack_branch}.tar.gz')}, 'neutron-server-plugin-vmware-nsxlib': { 'type': 'url', 'location': ('$tarballs_base/vmware-nsxlib/' - 'vmware-nsxlib-master.tar.gz')}, + 'vmware-nsxlib-${openstack_branch}.tar.gz')}, 'neutron-vpnaas-agent': { 'type': 'url', 'location': ('$tarballs_base/neutron-vpnaas/' - 'neutron-vpnaas-master.tar.gz')}, + 'neutron-vpnaas-${openstack_branch}.tar.gz')}, 'neutron-server-ovn-plugin-networking-ovn': { 'type': 'url', 'location': ('$tarballs_base/networking-ovn/' - 'networking-ovn-master.tar.gz')}, + 'networking-ovn-${openstack_branch}.tar.gz')}, 'neutron-metadata-agent-ovn-plugin-networking-ovn': { 'type': 'url', 'location': ('$tarballs_base/networking-ovn/' - 'networking-ovn-master.tar.gz')}, + 'networking-ovn-${openstack_branch}.tar.gz')}, 'nova-base': { 'type': 'url', 'location': ('$tarballs_base/nova/' - 'nova-master.tar.gz')}, + 'nova-${openstack_branch}.tar.gz')}, 'nova-base-plugin-blazar': { 'type': 'url', 'location': ('$tarballs_base/blazar-nova/' - 'blazar-nova-master.tar.gz')}, + 'blazar-nova-${openstack_branch}.tar.gz')}, 'nova-base-plugin-mksproxy': { 'type': 'url', 'location': ('$tarballs_base/nova-mksproxy/' @@ -643,19 +650,19 @@ SOURCES = { 'octavia-base': { 'type': 'url', 'location': ('$tarballs_base/octavia/' - 'octavia-master.tar.gz')}, + 'octavia-${openstack_branch}.tar.gz')}, 'panko-base': { 'type': 'url', 'location': ('$tarballs_base/panko/' - 'panko-master.tar.gz')}, + 'panko-${openstack_branch}.tar.gz')}, 'placement-base': { 'type': 'url', 'location': ('$tarballs_base/placement/' - 'placement-master.tar.gz')}, + 'placement-${openstack_branch}.tar.gz')}, 'qinling-base': { 'type': 'url', 'location': ('$tarballs_base/qinling/' - 'qinling-master.tar.gz')}, + 'qinling-${openstack_branch}.tar.gz')}, 'tempest-plugin-tempest-conf': { 'type': 'url', 'location': ('$tarballs_base/python-tempestconf/' @@ -727,7 +734,8 @@ SOURCES = { 'tempest-plugin-tripleo-common': { 'type': 'url', 'location': ('$tarballs_base/tripleo-common-tempest-plugin/' - 'tripleo-common-tempest-plugin-master.tar.gz')}, + 'tripleo-common-tempest-plugin-master.' + 'tar.gz')}, 'tempest-plugin-trove': { 'type': 'url', 'location': ('$tarballs_base/trove-tempest-plugin/' @@ -751,55 +759,55 @@ SOURCES = { 'sahara-base': { 'type': 'url', 'location': ('$tarballs_base/sahara/' - 'sahara-master.tar.gz')}, + 'sahara-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-ambari': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-ambari/' - 'sahara-plugin-ambari-master.tar.gz')}, + 'sahara-plugin-ambari-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-cdh': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-cdh/' - 'sahara-plugin-cdh-master.tar.gz')}, + 'sahara-plugin-cdh-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-mapr': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-mapr/' - 'sahara-plugin-mapr-master.tar.gz')}, + 'sahara-plugin-mapr-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-spark': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-spark/' - 'sahara-plugin-spark-master.tar.gz')}, + 'sahara-plugin-spark-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-storm': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-storm/' - 'sahara-plugin-storm-master.tar.gz')}, + 'sahara-plugin-storm-${openstack_branch}.tar.gz')}, 'sahara-base-plugin-vanilla': { 'type': 'url', 'location': ('$tarballs_base/sahara-plugin-vanilla/' - 'sahara-plugin-vanilla-master.tar.gz')}, + 'sahara-plugin-vanilla-${openstack_branch}.tar.gz')}, 'searchlight-base': { 'type': 'url', 'location': ('$tarballs_base/searchlight/' - 'searchlight-master.tar.gz')}, + 'searchlight-${openstack_branch}.tar.gz')}, 'senlin-base': { 'type': 'url', 'location': ('$tarballs_base/senlin/' - 'senlin-master.tar.gz')}, + 'senlin-${openstack_branch}.tar.gz')}, 'solum-base': { 'type': 'url', 'location': ('$tarballs_base/solum/' - 'solum-master.tar.gz')}, + 'solum-${openstack_branch}.tar.gz')}, 'swift-base': { 'type': 'url', 'location': ('$tarballs_base/swift/' - 'swift-master.tar.gz')}, + 'swift-${openstack_branch}.tar.gz')}, 'tacker-base': { 'type': 'url', 'location': ('$tarballs_base/tacker/' - 'tacker-master.tar.gz')}, + 'tacker-${openstack_branch}.tar.gz')}, 'tacker-base-plugin-networking-sfc': { 'type': 'url', 'location': ('$tarballs_base/networking-sfc/' - 'networking-sfc-master.tar.gz')}, + 'networking-sfc-${openstack_branch}.tar.gz')}, 'tempest': { 'type': 'url', 'location': ('$tarballs_base/tempest/' @@ -811,11 +819,11 @@ SOURCES = { 'trove-base': { 'type': 'url', 'location': ('$tarballs_base/trove/' - 'trove-master.tar.gz')}, + 'trove-${openstack_branch}.tar.gz')}, 'vitrage-base': { 'type': 'url', 'location': ('$tarballs_base/vitrage/' - 'vitrage-master.tar.gz')}, + 'vitrage-${openstack_branch}.tar.gz')}, 'vmtp': { 'type': 'url', 'location': ('$tarballs_base/vmtp/' @@ -823,15 +831,15 @@ SOURCES = { 'watcher-base': { 'type': 'url', 'location': ('$tarballs_base/watcher/' - 'watcher-master.tar.gz')}, + 'watcher-${openstack_branch}.tar.gz')}, 'zaqar-base': { 'type': 'url', 'location': ('$tarballs_base/zaqar/' - 'zaqar-master.tar.gz')}, + 'zaqar-${openstack_branch}.tar.gz')}, 'zun-base': { 'type': 'url', 'location': ('$tarballs_base/zun/' - 'zun-master.tar.gz')} + 'zun-${openstack_branch}.tar.gz')} } @@ -1235,6 +1243,10 @@ def parse(conf, args, usage=None, prog=None, # NOTE(jeffrey4l): set the default base tag based on the # base option conf.set_default('base_tag', DEFAULT_BASE_TAGS.get(conf.base)) + conf.set_default('openstack_release', OPENSTACK_RELEASE.get(conf.base)) + prefix = '' if conf.openstack_release == 'master' else 'stable-' + openstack_branch = '{}{}'.format(prefix, conf.openstack_release) + conf.set_default('openstack_branch', openstack_branch) if not conf.base_image: conf.base_image = conf.base