project-config/zuul/openstack_functions.py
Clark Boylan cf262b207d Add test jobs for devstack-precise-dib images
Next step in migrating to dib is moving to devstack-precise-dib images
in hpcloud. We have images and slaves built with dib for this label now
we need to run tests on those nodes. Add experimental jobs to
devstack-gate for nova network and neutron run against icehouse on these
new -dib images.

Change-Id: I3efb17d93173091827623c15704e5a79be8fca33
2014-10-08 15:29:33 -07:00

139 lines
5.1 KiB
Python

# Copyright 2013 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import re
def set_log_url(item, job, params):
if hasattr(item.change, 'refspec'):
path = "%s/%s/%s/%s" % (
params['ZUUL_CHANGE'][-2:], params['ZUUL_CHANGE'],
params['ZUUL_PATCHSET'], params['ZUUL_PIPELINE'])
elif hasattr(item.change, 'ref'):
path = "%s/%s/%s" % (
params['ZUUL_NEWREV'][:2], params['ZUUL_NEWREV'],
params['ZUUL_PIPELINE'])
else:
path = params['ZUUL_PIPELINE']
params['BASE_LOG_PATH'] = path
params['LOG_PATH'] = path + '/%s/%s' % (job.name,
params['ZUUL_UUID'][:7])
def reusable_node(item, job, params):
if 'OFFLINE_NODE_WHEN_COMPLETE' in params:
del params['OFFLINE_NODE_WHEN_COMPLETE']
def devstack_params(item, job, params):
change = item.change
# Note we can't fallback on the default labels because
# jenkins uses 'devstack-precise || devstack-trusty'.
# This is necessary to get the gearman plugin to register
# gearman jobs with both node labels.
# Remove this when we are done doing prelimindary dib testing.
if 'icehouse-dibtest' in job.name:
params['ZUUL_NODE'] = 'devstack-precise-dib'
elif 'dibtest' in job.name:
params['ZUUL_NODE'] = 'devstack-trusty-dib'
elif ((hasattr(change, 'branch') and
change.branch == 'stable/icehouse') or
('icehouse' in job.name or
'precise' in job.name)):
params['ZUUL_NODE'] = 'devstack-precise'
elif 'centos7' in job.name:
params['ZUUL_NODE'] = 'devstack-centos7'
elif 'aiopcpu' in job.name:
params['ZUUL_NODE'] = 'devstack-trusty-2-node'
elif 'newlibvirt' in job.name:
params['ZUUL_NODE'] = 'devstack-f20-virt-preview'
else:
params['ZUUL_NODE'] = 'devstack-trusty'
def default_params_precise(item, job, params):
if 'trusty' in job.name:
params['ZUUL_NODE'] = 'bare-trusty'
else:
params['ZUUL_NODE'] = 'bare-precise'
def default_params_trusty(item, job, params):
change = item.change
# Note we can't fallback on the default labels because
# jenkins uses 'bare-precise || bare-trusty'.
# This is necessary to get the gearman plugin to register
# gearman jobs with both node labels.
if ((hasattr(change, 'branch') and
change.branch == 'stable/icehouse') or
('icehouse' in job.name or
'precise' in job.name)):
params['ZUUL_NODE'] = 'bare-precise'
else:
params['ZUUL_NODE'] = 'bare-trusty'
def set_node_options(item, job, params, default):
# Set up log url paramter for all jobs
set_log_url(item, job, params)
# Default to single use node. Potentially overriden below.
# Select node to run job on.
params['OFFLINE_NODE_WHEN_COMPLETE'] = '1'
proposal_re = r'^.*(merge-release-tags|(propose|upstream)-(openstack-manuals|requirements|translation)-updates?)$' # noqa
pypi_re = r'^.*-(jenkinsci|mavencentral|pypi-(both|wheel))-upload$'
python26_re = r'^.*-(py(thon)?)?26.*$'
centos6_re = r'^.*-centos6.*$'
f20_re = r'^.*-f20.*$'
python33_re = r'^.*-(py(thon)?33|33).*$'
tripleo_re = r'^.*-tripleo.*$'
devstack_re = r'^.*-dsvm.*$'
# jobs run on the proposal worker
if re.match(proposal_re, job.name) or re.match(pypi_re, job.name):
reusable_node(item, job, params)
# Jobs needing python26
elif re.match(python26_re, job.name):
# Pass because job specified label is always correct.
pass
# Jobs needing centos6
elif re.match(centos6_re, job.name):
# Pass because job specified label is always correct.
pass
# Jobs needing fedora 20
elif re.match(f20_re, job.name):
# Pass because job specified label is always correct.
pass
# Jobs needing py33/pypy slaves
elif re.match(python33_re, job.name):
# Pass because job specified label is always correct.
pass
# Jobs needing tripleo slaves
elif re.match(tripleo_re, job.name):
# Pass because job specified label is always correct.
pass
# Jobs needing devstack slaves
elif re.match(devstack_re, job.name):
devstack_params(item, job, params)
elif default == 'trusty':
default_params_trusty(item, job, params)
else:
default_params_precise(item, job, params)
def set_node_options_default_precise(item, job, params):
set_node_options(item, job, params, 'precise')
def set_node_options_default_trusty(item, job, params):
set_node_options(item, job, params, 'trusty')