OK, I completed my fedfind/wikitcms conversion patch for
openqa_fedora_tools. I also fixed up some of the test case submission
data bits - they broke with relval report-auto (instead of jskladan's
version of non-interactive result submission) because they didn't
quite grok the 'test instance' concept report-auto follows.
Note this needs the very latest git wikitcms. I don't think latest
relval or fedfind is strictly required, but may as well bump them
anyway. I've installed the current wikitcms on fedora-qa-01. I will
cut new releases tomorrow.
I have tested this on fedora-qa-01, it ran and submitted a full set of
results for 2015-02-07. I believe it should work for Branched
nightlies (if we wind up nominating any) and TC/RC builds also, which
is a significant win. I did test this a bit:
https://fedora-qa-01.lab.bos.redhat.com/tests/15 is a one-job run
against F21 Final RC5, you can see it successfully got the ISO and
started the test but the test fails because the 'Timbuktu' screen
isn't there.
I revised the openqa_trigger.py CLI to use argparse; it has the same
basic modes as before but the syntax is a bit different.
'openqa_trigger.py current' runs against the 'current' compose event
if it has not already done so (what just plain 'openqa_trigger.py' did
before). 'openqa_trigger.py event' takes the same 'version id'
arguments as 'relval report-auto' and runs tasks (but does not
automatically report results) against the specified compose (what you
used to get by passing args, approximately, but much more robust and
capable).
The basic approach is that openqa_trigger gets a ValidationEvent from
python-wikitcms - either the Wiki.current_event property for
'current', or the event specified, obtained via the newly-added
Wiki.get_validation_event(), for 'event'. For 'event' it then just
goes ahead and runs the jobs and prints the IDs. For 'current' it
checks the last run compose version for each arch and runs if needed,
as before. The ValidationEvent's 'sortname' property is the value
written out to PERSISTENT to track the 'last run' - this property is
intended to always sort compose events 'correctly', so we should
always run when appropriate even when going from Rawhide to Branched,
Branched to a TC, TC to RC, RC to (next milestone) TC.
On both paths it gets a fedfind.Release object via the ValidationEvent
- ValidationEvents have a ff_release property which is the
fedfind.Release object that matches that event. It then queries
fedfind for image locations using a query that tries to get just *one*
generic-ish network install image for each arch. It passes the
location to download_image(), which is just download_rawhide_iso()
renamed and does the same job, only it can be simpler now.
From there it works pretty much as before, except we use the
ValidationEvent's 'version' property as the BUILD setting for OpenQA,
and report_job_results get_relval_commands() is tweaked slightly to
parse this properly to produce a correct report-auto command.
Probably the most likely bits to break here are the sortname thing
(see wikitcms helpers.py fedora_release_sort(), it's pretty stupid, I
should re-write it) and the image query, which might wind up getting
more than one image depending on how exactly the F22 Alpha composes
look. I'll keep a close eye on that. We can always take the list from
fedfind and further filter it so we have just one image per arch.
Image objects have a .arch attribute so this will be easy to do if
necessary. I *could* give the fedfind query code a 'I'm feeling lucky'-
ish mode to only return one image per (whatever), but not sure if that
would be too specialized, I'll think about it.
Please do ask any questions :)
--
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net