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
This commit is contained in:
Mark Goddard 2019-12-06 11:13:37 +00:00
parent df987c9d3f
commit 55d8828be3
1 changed files with 123 additions and 111 deletions

View File

@ -33,7 +33,12 @@ DISTRO_RELEASE = {
'debian': '10', 'debian': '10',
'ubuntu': '18.04', '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 # This is noarch repository so we will use it on all architectures
DELOREAN = \ DELOREAN = \
@ -246,8 +251,10 @@ _CLI_OPTS = [
help=('Squash the image layers. WARNING: it will consume lots' help=('Squash the image layers. WARNING: it will consume lots'
' of disk IO. "docker-squash" tool is required, install' ' of disk IO. "docker-squash" tool is required, install'
' it by "pip install docker-squash"')), ' 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'), help='OpenStack release for building kolla-toolbox'),
cfg.StrOpt('openstack-branch', default='master',
help='Branch for source images'),
] ]
_BASE_OPTS = [ _BASE_OPTS = [
@ -281,67 +288,67 @@ SOURCES = {
'openstack-base': { 'openstack-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/requirements/' 'location': ('$tarballs_base/requirements/'
'requirements-master.tar.gz')}, 'requirements-${openstack_branch}.tar.gz')},
'aodh-base': { 'aodh-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/aodh/' 'location': ('$tarballs_base/aodh/'
'aodh-master.tar.gz')}, 'aodh-${openstack_branch}.tar.gz')},
'barbican-base': { 'barbican-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/barbican/' 'location': ('$tarballs_base/barbican/'
'barbican-master.tar.gz')}, 'barbican-${openstack_branch}.tar.gz')},
'bifrost-base': { 'bifrost-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/bifrost/' 'location': ('$tarballs_base/bifrost/'
'bifrost-master.tar.gz')}, 'bifrost-${openstack_branch}.tar.gz')},
'blazar-base': { 'blazar-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/blazar/' 'location': ('$tarballs_base/blazar/'
'blazar-master.tar.gz')}, 'blazar-${openstack_branch}.tar.gz')},
'ceilometer-base': { 'ceilometer-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/ceilometer/' 'location': ('$tarballs_base/ceilometer/'
'ceilometer-master.tar.gz')}, 'ceilometer-${openstack_branch}.tar.gz')},
'ceilometer-base-plugin-panko': { 'ceilometer-base-plugin-panko': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/panko/' 'location': ('$tarballs_base/panko/'
'panko-master.tar.gz')}, 'panko-${openstack_branch}.tar.gz')},
'cinder-base': { 'cinder-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/cinder/' 'location': ('$tarballs_base/cinder/'
'cinder-master.tar.gz')}, 'cinder-${openstack_branch}.tar.gz')},
'congress-base': { 'congress-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/congress/' 'location': ('$tarballs_base/congress/'
'congress-master.tar.gz')}, 'congress-${openstack_branch}.tar.gz')},
'cloudkitty-base': { 'cloudkitty-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/cloudkitty/' 'location': ('$tarballs_base/cloudkitty/'
'cloudkitty-master.tar.gz')}, 'cloudkitty-${openstack_branch}.tar.gz')},
'cyborg-base': { 'cyborg-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/cyborg/' 'location': ('$tarballs_base/cyborg/'
'cyborg-master.tar.gz')}, 'cyborg-${openstack_branch}.tar.gz')},
'designate-base': { 'designate-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/designate/' 'location': ('$tarballs_base/designate/'
'designate-master.tar.gz')}, 'designate-${openstack_branch}.tar.gz')},
'ec2-api': { 'ec2-api': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/ec2-api/' 'location': ('$tarballs_base/ec2-api/'
'ec2-api-master.tar.gz')}, 'ec2-api-${openstack_branch}.tar.gz')},
'freezer-api': { 'freezer-api': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/freezer-api/' 'location': ('$tarballs_base/freezer-api/'
'freezer-api-master.tar.gz')}, 'freezer-api-${openstack_branch}.tar.gz')},
'freezer-base': { 'freezer-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/freezer/' 'location': ('$tarballs_base/freezer/'
'freezer-master.tar.gz')}, 'freezer-${openstack_branch}.tar.gz')},
'glance-base': { 'glance-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/glance/' 'location': ('$tarballs_base/glance/'
'glance-master.tar.gz')}, 'glance-${openstack_branch}.tar.gz')},
'gnocchi-base': { 'gnocchi-base': {
'type': 'git', 'type': 'git',
'reference': 'master', 'reference': 'master',
@ -350,195 +357,195 @@ SOURCES = {
'heat-base': { 'heat-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/heat/' 'location': ('$tarballs_base/heat/'
'heat-master.tar.gz')}, 'heat-${openstack_branch}.tar.gz')},
'horizon': { 'horizon': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/horizon/' 'location': ('$tarballs_base/horizon/'
'horizon-master.tar.gz')}, 'horizon-${openstack_branch}.tar.gz')},
'horizon-plugin-blazar-dashboard': { 'horizon-plugin-blazar-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/blazar-dashboard/' 'location': ('$tarballs_base/blazar-dashboard/'
'blazar-dashboard-master.tar.gz')}, 'blazar-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-congress-dashboard': { 'horizon-plugin-congress-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/congress-dashboard/' 'location': ('$tarballs_base/congress-dashboard/'
'congress-dashboard-master.tar.gz')}, 'congress-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-cloudkitty-dashboard': { 'horizon-plugin-cloudkitty-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/cloudkitty-dashboard/' 'location': ('$tarballs_base/cloudkitty-dashboard/'
'cloudkitty-dashboard-master.tar.gz')}, 'cloudkitty-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-designate-dashboard': { 'horizon-plugin-designate-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/designate-dashboard/' 'location': ('$tarballs_base/designate-dashboard/'
'designate-dashboard-master.tar.gz')}, 'designate-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-fwaas-dashboard': { 'horizon-plugin-fwaas-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-fwaas-dashboard/' 'location': ('$tarballs_base/neutron-fwaas-dashboard/'
'neutron-fwaas-dashboard-master.tar.gz')}, 'neutron-fwaas-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-freezer-web-ui': { 'horizon-plugin-freezer-web-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/freezer-web-ui/' 'location': ('$tarballs_base/freezer-web-ui/'
'freezer-web-ui-master.tar.gz')}, 'freezer-web-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-heat-dashboard': { 'horizon-plugin-heat-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/heat-dashboard/' 'location': ('$tarballs_base/heat-dashboard/'
'heat-dashboard-master.tar.gz')}, 'heat-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-ironic-ui': { 'horizon-plugin-ironic-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/ironic-ui/' 'location': ('$tarballs_base/ironic-ui/'
'ironic-ui-master.tar.gz')}, 'ironic-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-karbor-dashboard': { 'horizon-plugin-karbor-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/karbor-dashboard/' 'location': ('$tarballs_base/karbor-dashboard/'
'karbor-dashboard-master.tar.gz')}, 'karbor-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-magnum-ui': { 'horizon-plugin-magnum-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/magnum-ui/' 'location': ('$tarballs_base/magnum-ui/'
'magnum-ui-master.tar.gz')}, 'magnum-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-manila-ui': { 'horizon-plugin-manila-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/manila-ui/' 'location': ('$tarballs_base/manila-ui/'
'manila-ui-master.tar.gz')}, 'manila-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-masakari-dashboard': { 'horizon-plugin-masakari-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/masakari-dashboard/' 'location': ('$tarballs_base/masakari-dashboard/'
'masakari-dashboard-master.tar.gz')}, 'masakari-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-mistral-dashboard': { 'horizon-plugin-mistral-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/mistral-dashboard/' 'location': ('$tarballs_base/mistral-dashboard/'
'mistral-dashboard-master.tar.gz')}, 'mistral-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-monasca-ui': { 'horizon-plugin-monasca-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-ui/' 'location': ('$tarballs_base/monasca-ui/'
'monasca-ui-master.tar.gz')}, 'monasca-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-murano-dashboard': { 'horizon-plugin-murano-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/murano-dashboard/' 'location': ('$tarballs_base/murano-dashboard/'
'murano-dashboard-master.tar.gz')}, 'murano-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-neutron-vpnaas-dashboard': { 'horizon-plugin-neutron-vpnaas-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-vpnaas-dashboard/' 'location': ('$tarballs_base/neutron-vpnaas-dashboard/'
'neutron-vpnaas-dashboard-master.tar.gz')}, 'neutron-vpnaas-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-octavia-dashboard': { 'horizon-plugin-octavia-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/octavia-dashboard/' 'location': ('$tarballs_base/octavia-dashboard/'
'octavia-dashboard-master.tar.gz')}, 'octavia-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-qinling-dashboard': { 'horizon-plugin-qinling-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/qinling-dashboard/' 'location': ('$tarballs_base/qinling-dashboard/'
'qinling-dashboard-master.tar.gz')}, 'qinling-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-sahara-dashboard': { 'horizon-plugin-sahara-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-dashboard/' 'location': ('$tarballs_base/sahara-dashboard/'
'sahara-dashboard-master.tar.gz')}, 'sahara-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-searchlight-ui': { 'horizon-plugin-searchlight-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/searchlight-ui/' 'location': ('$tarballs_base/searchlight-ui/'
'searchlight-ui-master.tar.gz')}, 'searchlight-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-senlin-dashboard': { 'horizon-plugin-senlin-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/senlin-dashboard/' 'location': ('$tarballs_base/senlin-dashboard/'
'senlin-dashboard-master.tar.gz')}, 'senlin-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-solum-dashboard': { 'horizon-plugin-solum-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/solum-dashboard/' 'location': ('$tarballs_base/solum-dashboard/'
'solum-dashboard-master.tar.gz')}, 'solum-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-tacker-dashboard': { 'horizon-plugin-tacker-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/tacker-horizon/' 'location': ('$tarballs_base/tacker-horizon/'
'tacker-horizon-master.tar.gz')}, 'tacker-horizon-${openstack_branch}.tar.gz')},
'horizon-plugin-trove-dashboard': { 'horizon-plugin-trove-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/trove-dashboard/' 'location': ('$tarballs_base/trove-dashboard/'
'trove-dashboard-master.tar.gz')}, 'trove-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-vitrage-dashboard': { 'horizon-plugin-vitrage-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/vitrage-dashboard/' 'location': ('$tarballs_base/vitrage-dashboard/'
'vitrage-dashboard-master.tar.gz')}, 'vitrage-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-watcher-dashboard': { 'horizon-plugin-watcher-dashboard': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/watcher-dashboard/' 'location': ('$tarballs_base/watcher-dashboard/'
'watcher-dashboard-master.tar.gz')}, 'watcher-dashboard-${openstack_branch}.tar.gz')},
'horizon-plugin-zaqar-ui': { 'horizon-plugin-zaqar-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/zaqar-ui/' 'location': ('$tarballs_base/zaqar-ui/'
'zaqar-ui-master.tar.gz')}, 'zaqar-ui-${openstack_branch}.tar.gz')},
'horizon-plugin-zun-ui': { 'horizon-plugin-zun-ui': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/zun-ui/' 'location': ('$tarballs_base/zun-ui/'
'zun-ui-master.tar.gz')}, 'zun-ui-${openstack_branch}.tar.gz')},
'ironic-base': { 'ironic-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/ironic/' 'location': ('$tarballs_base/ironic/'
'ironic-master.tar.gz')}, 'ironic-${openstack_branch}.tar.gz')},
'ironic-inspector': { 'ironic-inspector': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/ironic-inspector/' 'location': ('$tarballs_base/ironic-inspector/'
'ironic-inspector-master.tar.gz')}, 'ironic-inspector-${openstack_branch}.tar.gz')},
'karbor-base': { 'karbor-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/karbor/' 'location': ('$tarballs_base/karbor/'
'karbor-master.tar.gz')}, 'karbor-${openstack_branch}.tar.gz')},
'keystone-base': { 'keystone-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/keystone/' 'location': ('$tarballs_base/keystone/'
'keystone-master.tar.gz')}, 'keystone-${openstack_branch}.tar.gz')},
'kuryr-base': { 'kuryr-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/kuryr/' 'location': ('$tarballs_base/kuryr/'
'kuryr-master.tar.gz')}, 'kuryr-${openstack_branch}.tar.gz')},
'kuryr-libnetwork': { 'kuryr-libnetwork': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/kuryr-libnetwork/' 'location': ('$tarballs_base/kuryr-libnetwork/'
'kuryr-libnetwork-master.tar.gz')}, 'kuryr-libnetwork-${openstack_branch}.tar.gz')},
'magnum-base': { 'magnum-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/magnum/' 'location': ('$tarballs_base/magnum/'
'magnum-master.tar.gz')}, 'magnum-${openstack_branch}.tar.gz')},
'manila-base': { 'manila-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/manila/' 'location': ('$tarballs_base/manila/'
'manila-master.tar.gz')}, 'manila-${openstack_branch}.tar.gz')},
'masakari-base': { 'masakari-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/masakari/' 'location': ('$tarballs_base/masakari/'
'masakari-master.tar.gz')}, 'masakari-${openstack_branch}.tar.gz')},
'masakari-monitors': { 'masakari-monitors': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/masakari-monitors/' 'location': ('$tarballs_base/masakari-monitors/'
'masakari-monitors-master.tar.gz')}, 'masakari-monitors-${openstack_branch}.tar.gz')},
'mistral-base': { 'mistral-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/mistral/' 'location': ('$tarballs_base/mistral/'
'mistral-master.tar.gz')}, 'mistral-${openstack_branch}.tar.gz')},
'mistral-base-plugin-tacker': { 'mistral-base-plugin-tacker': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/tacker/' 'location': ('$tarballs_base/tacker/'
'tacker-master.tar.gz')}, 'tacker-${openstack_branch}.tar.gz')},
'monasca-agent': { 'monasca-agent': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-agent/' 'location': ('$tarballs_base/monasca-agent/'
'monasca-agent-master.tar.gz')}, 'monasca-agent-${openstack_branch}.tar.gz')},
'monasca-api': { 'monasca-api': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-api/' 'location': ('$tarballs_base/monasca-api/'
'monasca-api-master.tar.gz')}, 'monasca-api-${openstack_branch}.tar.gz')},
'monasca-log-api': { 'monasca-log-api': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-log-api/' 'location': ('$tarballs_base/monasca-log-api/'
'monasca-log-api-master.tar.gz')}, 'monasca-log-api-${openstack_branch}.tar.gz')},
'monasca-notification': { 'monasca-notification': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-notification/' 'location': ('$tarballs_base/monasca-notification/'
'monasca-notification-master.tar.gz')}, 'monasca-notification-${openstack_branch}.tar.gz')},
'monasca-persister': { 'monasca-persister': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-persister/' 'location': ('$tarballs_base/monasca-persister/'
'monasca-persister-master.tar.gz')}, 'monasca-persister-${openstack_branch}.tar.gz')},
'monasca-statsd': { 'monasca-statsd': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-statsd/' '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 # FIXME(dszumski): Use openstack tar when infra is fixed
'monasca-thresh': { 'monasca-thresh': {
'type': 'url', 'type': 'url',
@ -547,91 +554,91 @@ SOURCES = {
'monasca-thresh-additions-monasca-common': { 'monasca-thresh-additions-monasca-common': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/monasca-common/' 'location': ('$tarballs_base/monasca-common/'
'monasca-common-master.tar.gz')}, 'monasca-common-${openstack_branch}.tar.gz')},
'murano-base': { 'murano-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/murano/' 'location': ('$tarballs_base/murano/'
'murano-master.tar.gz')}, 'murano-${openstack_branch}.tar.gz')},
'neutron-base': { 'neutron-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron/' 'location': ('$tarballs_base/neutron/'
'neutron-master.tar.gz')}, 'neutron-${openstack_branch}.tar.gz')},
'neutron-base-plugin-neutron-fwaas': { 'neutron-base-plugin-neutron-fwaas': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-fwaas/' 'location': ('$tarballs_base/neutron-fwaas/'
'neutron-fwaas-master.tar.gz')}, 'neutron-fwaas-${openstack_branch}.tar.gz')},
'neutron-base-plugin-networking-ansible': { 'neutron-base-plugin-networking-ansible': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-ansible/' 'location': ('$tarballs_base/networking-ansible/'
'networking-ansible-master.tar.gz')}, 'networking-ansible-${openstack_branch}.tar.gz')},
'neutron-base-plugin-networking-baremetal': { 'neutron-base-plugin-networking-baremetal': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-baremetal/' 'location': ('$tarballs_base/networking-baremetal/'
'networking-baremetal-master.tar.gz')}, 'networking-baremetal-${openstack_branch}.tar.gz')},
'neutron-base-plugin-networking-generic-switch': { 'neutron-base-plugin-networking-generic-switch': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-generic-switch/' 'location': ('$tarballs_base/networking-generic-switch/'
'networking-generic-switch-master.tar.gz')}, 'networking-generic-switch-${openstack_branch}.tar.gz')},
'neutron-base-plugin-networking-sfc': { 'neutron-base-plugin-networking-sfc': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-sfc/' 'location': ('$tarballs_base/networking-sfc/'
'networking-sfc-master.tar.gz')}, 'networking-sfc-${openstack_branch}.tar.gz')},
'neutron-base-plugin-vmware-nsx': { 'neutron-base-plugin-vmware-nsx': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/vmware-nsx/' 'location': ('$tarballs_base/vmware-nsx/'
'vmware-nsx-master.tar.gz')}, 'vmware-nsx-${openstack_branch}.tar.gz')},
'neutron-base-plugin-vpnaas-agent': { 'neutron-base-plugin-vpnaas-agent': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-vpnaas/' 'location': ('$tarballs_base/neutron-vpnaas/'
'neutron-vpnaas-master.tar.gz')}, 'neutron-vpnaas-${openstack_branch}.tar.gz')},
'neutron-bgp-dragent': { 'neutron-bgp-dragent': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-dynamic-routing/' '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': { 'neutron-server-opendaylight-plugin-networking-odl': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-odl/' 'location': ('$tarballs_base/networking-odl/'
'networking-odl-master.tar.gz')}, 'networking-odl-${openstack_branch}.tar.gz')},
'neutron-server-opendaylight-plugin-networking-bgpvpn': { 'neutron-server-opendaylight-plugin-networking-bgpvpn': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-bgpvpn/' 'location': ('$tarballs_base/networking-bgpvpn/'
'networking-bgpvpn-master.tar.gz')}, 'networking-bgpvpn-${openstack_branch}.tar.gz')},
'neutron-server-opendaylight-plugin-networking-l2gw': { 'neutron-server-opendaylight-plugin-networking-l2gw': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-l2gw/' 'location': ('$tarballs_base/networking-l2gw/'
'networking-l2gw-master.tar.gz')}, 'networking-l2gw-${openstack_branch}.tar.gz')},
'neutron-server-opendaylight-plugin-networking-sfc': { 'neutron-server-opendaylight-plugin-networking-sfc': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-sfc/' 'location': ('$tarballs_base/networking-sfc/'
'networking-sfc-master.tar.gz')}, 'networking-sfc-${openstack_branch}.tar.gz')},
'neutron-server-plugin-neutron-dynamic-routing': { 'neutron-server-plugin-neutron-dynamic-routing': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-dynamic-routing/' 'location': ('$tarballs_base/neutron-dynamic-routing/'
'neutron-dynamic-routing-master.tar.gz')}, 'neutron-dynamic-routing-${openstack_branch}.tar.gz')},
'neutron-server-plugin-vmware-nsxlib': { 'neutron-server-plugin-vmware-nsxlib': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/vmware-nsxlib/' 'location': ('$tarballs_base/vmware-nsxlib/'
'vmware-nsxlib-master.tar.gz')}, 'vmware-nsxlib-${openstack_branch}.tar.gz')},
'neutron-vpnaas-agent': { 'neutron-vpnaas-agent': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/neutron-vpnaas/' 'location': ('$tarballs_base/neutron-vpnaas/'
'neutron-vpnaas-master.tar.gz')}, 'neutron-vpnaas-${openstack_branch}.tar.gz')},
'neutron-server-ovn-plugin-networking-ovn': { 'neutron-server-ovn-plugin-networking-ovn': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-ovn/' 'location': ('$tarballs_base/networking-ovn/'
'networking-ovn-master.tar.gz')}, 'networking-ovn-${openstack_branch}.tar.gz')},
'neutron-metadata-agent-ovn-plugin-networking-ovn': { 'neutron-metadata-agent-ovn-plugin-networking-ovn': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-ovn/' 'location': ('$tarballs_base/networking-ovn/'
'networking-ovn-master.tar.gz')}, 'networking-ovn-${openstack_branch}.tar.gz')},
'nova-base': { 'nova-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/nova/' 'location': ('$tarballs_base/nova/'
'nova-master.tar.gz')}, 'nova-${openstack_branch}.tar.gz')},
'nova-base-plugin-blazar': { 'nova-base-plugin-blazar': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/blazar-nova/' 'location': ('$tarballs_base/blazar-nova/'
'blazar-nova-master.tar.gz')}, 'blazar-nova-${openstack_branch}.tar.gz')},
'nova-base-plugin-mksproxy': { 'nova-base-plugin-mksproxy': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/nova-mksproxy/' 'location': ('$tarballs_base/nova-mksproxy/'
@ -643,19 +650,19 @@ SOURCES = {
'octavia-base': { 'octavia-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/octavia/' 'location': ('$tarballs_base/octavia/'
'octavia-master.tar.gz')}, 'octavia-${openstack_branch}.tar.gz')},
'panko-base': { 'panko-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/panko/' 'location': ('$tarballs_base/panko/'
'panko-master.tar.gz')}, 'panko-${openstack_branch}.tar.gz')},
'placement-base': { 'placement-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/placement/' 'location': ('$tarballs_base/placement/'
'placement-master.tar.gz')}, 'placement-${openstack_branch}.tar.gz')},
'qinling-base': { 'qinling-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/qinling/' 'location': ('$tarballs_base/qinling/'
'qinling-master.tar.gz')}, 'qinling-${openstack_branch}.tar.gz')},
'tempest-plugin-tempest-conf': { 'tempest-plugin-tempest-conf': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/python-tempestconf/' 'location': ('$tarballs_base/python-tempestconf/'
@ -727,7 +734,8 @@ SOURCES = {
'tempest-plugin-tripleo-common': { 'tempest-plugin-tripleo-common': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/tripleo-common-tempest-plugin/' 'location': ('$tarballs_base/tripleo-common-tempest-plugin/'
'tripleo-common-tempest-plugin-master.tar.gz')}, 'tripleo-common-tempest-plugin-master.'
'tar.gz')},
'tempest-plugin-trove': { 'tempest-plugin-trove': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/trove-tempest-plugin/' 'location': ('$tarballs_base/trove-tempest-plugin/'
@ -751,55 +759,55 @@ SOURCES = {
'sahara-base': { 'sahara-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara/' 'location': ('$tarballs_base/sahara/'
'sahara-master.tar.gz')}, 'sahara-${openstack_branch}.tar.gz')},
'sahara-base-plugin-ambari': { 'sahara-base-plugin-ambari': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-ambari/' 'location': ('$tarballs_base/sahara-plugin-ambari/'
'sahara-plugin-ambari-master.tar.gz')}, 'sahara-plugin-ambari-${openstack_branch}.tar.gz')},
'sahara-base-plugin-cdh': { 'sahara-base-plugin-cdh': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-cdh/' 'location': ('$tarballs_base/sahara-plugin-cdh/'
'sahara-plugin-cdh-master.tar.gz')}, 'sahara-plugin-cdh-${openstack_branch}.tar.gz')},
'sahara-base-plugin-mapr': { 'sahara-base-plugin-mapr': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-mapr/' 'location': ('$tarballs_base/sahara-plugin-mapr/'
'sahara-plugin-mapr-master.tar.gz')}, 'sahara-plugin-mapr-${openstack_branch}.tar.gz')},
'sahara-base-plugin-spark': { 'sahara-base-plugin-spark': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-spark/' 'location': ('$tarballs_base/sahara-plugin-spark/'
'sahara-plugin-spark-master.tar.gz')}, 'sahara-plugin-spark-${openstack_branch}.tar.gz')},
'sahara-base-plugin-storm': { 'sahara-base-plugin-storm': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-storm/' 'location': ('$tarballs_base/sahara-plugin-storm/'
'sahara-plugin-storm-master.tar.gz')}, 'sahara-plugin-storm-${openstack_branch}.tar.gz')},
'sahara-base-plugin-vanilla': { 'sahara-base-plugin-vanilla': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/sahara-plugin-vanilla/' 'location': ('$tarballs_base/sahara-plugin-vanilla/'
'sahara-plugin-vanilla-master.tar.gz')}, 'sahara-plugin-vanilla-${openstack_branch}.tar.gz')},
'searchlight-base': { 'searchlight-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/searchlight/' 'location': ('$tarballs_base/searchlight/'
'searchlight-master.tar.gz')}, 'searchlight-${openstack_branch}.tar.gz')},
'senlin-base': { 'senlin-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/senlin/' 'location': ('$tarballs_base/senlin/'
'senlin-master.tar.gz')}, 'senlin-${openstack_branch}.tar.gz')},
'solum-base': { 'solum-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/solum/' 'location': ('$tarballs_base/solum/'
'solum-master.tar.gz')}, 'solum-${openstack_branch}.tar.gz')},
'swift-base': { 'swift-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/swift/' 'location': ('$tarballs_base/swift/'
'swift-master.tar.gz')}, 'swift-${openstack_branch}.tar.gz')},
'tacker-base': { 'tacker-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/tacker/' 'location': ('$tarballs_base/tacker/'
'tacker-master.tar.gz')}, 'tacker-${openstack_branch}.tar.gz')},
'tacker-base-plugin-networking-sfc': { 'tacker-base-plugin-networking-sfc': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/networking-sfc/' 'location': ('$tarballs_base/networking-sfc/'
'networking-sfc-master.tar.gz')}, 'networking-sfc-${openstack_branch}.tar.gz')},
'tempest': { 'tempest': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/tempest/' 'location': ('$tarballs_base/tempest/'
@ -811,11 +819,11 @@ SOURCES = {
'trove-base': { 'trove-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/trove/' 'location': ('$tarballs_base/trove/'
'trove-master.tar.gz')}, 'trove-${openstack_branch}.tar.gz')},
'vitrage-base': { 'vitrage-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/vitrage/' 'location': ('$tarballs_base/vitrage/'
'vitrage-master.tar.gz')}, 'vitrage-${openstack_branch}.tar.gz')},
'vmtp': { 'vmtp': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/vmtp/' 'location': ('$tarballs_base/vmtp/'
@ -823,15 +831,15 @@ SOURCES = {
'watcher-base': { 'watcher-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/watcher/' 'location': ('$tarballs_base/watcher/'
'watcher-master.tar.gz')}, 'watcher-${openstack_branch}.tar.gz')},
'zaqar-base': { 'zaqar-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/zaqar/' 'location': ('$tarballs_base/zaqar/'
'zaqar-master.tar.gz')}, 'zaqar-${openstack_branch}.tar.gz')},
'zun-base': { 'zun-base': {
'type': 'url', 'type': 'url',
'location': ('$tarballs_base/zun/' '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 # NOTE(jeffrey4l): set the default base tag based on the
# base option # base option
conf.set_default('base_tag', DEFAULT_BASE_TAGS.get(conf.base)) 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: if not conf.base_image:
conf.base_image = conf.base conf.base_image = conf.base