project-config/nodepool/scripts/prepare_tempest_testrepository.py
Matthew Treinish d0590b73e7
Fix preseed script for the brave new world
Ever since we started populating the subunit2sql db with data from all
gate and periodic jobs this script has been kinda useless. This was
added with the intent to preseed tempest runs with data from past runs
to hopefully have a positive impact on the testr scheduler. (its
actual usefulness is limited because of bug 1416512 and other
scheduler limitations) However, because we're not filtering now we
end up preseeding tempest runs with data from things like zuul unit
tests which are just a waste. This commit adds the necessary
filtering to the DB queries to ensure we only preseed with data
from previous tempest runs.

Note: For this patch to work the depends-on below must be included in
a subunit2sql release

Change-Id: I32866d63b5f0fa406213709fc88a9029d0318645
Depends-On: Id6ca7e7a4cd1f913d9f84efae5f48d247dd9ed64
2016-06-23 11:54:27 -04:00

53 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python2
#
# Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# 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 os
import sys
from subunit2sql.db import api
from subunit2sql import shell
from subunit2sql import write_subunit
DB_URI = 'mysql+pymysql://query:query@logstash.openstack.org/subunit2sql'
if len(sys.argv) == 2:
TEMPEST_PATH = sys.argv[1]
elif len(sys.argv) > 2:
TEMPEST_PATH = sys.argv[1]
DB_URI = sys.argv[2]
else:
TEMPEST_PATH = '/opt/stack/new/tempest'
def main():
shell.parse_args([])
shell.CONF.set_override('connection', DB_URI, group='database')
session = api.get_session()
runs = api.get_recent_successful_runs_by_run_metadata(
'build_name', 'gate-tempest-dsvm-neutron-full',
num_runs=10, session=session)
session.close()
preseed_path = os.path.join(TEMPEST_PATH, 'preseed-streams')
if not os.path.isdir(preseed_path):
os.mkdir(preseed_path)
for run in runs:
with open(os.path.join(preseed_path, run.uuid + '.subunit'), 'w') as fd:
write_subunit.sql2subunit(run.uuid, fd)
if __name__ == '__main__':
main()