A few weeks back, Amit put together a proof of concept for running the
test harness in a container, rather than directly on the host
That proof of concept relies on restraint, the new reference harness,
that is intended to eventually replace beah
At the same time, I don't think restraint is currently getting the level
of review and testing that it needs to mature into a plausible
replacement for beah as the default harness.
I think Amit's proposed patch provides a possible way forward:
1. Accept the initial approach where restraint is the *only* supported
harness when running inside a container. Specifying both
"contained_harness" and "harness" as ks_meta variables should be an
error at this point (side note: 'harness' should also be documented
along with all the other ks_meta variables, with a link to
2. Recommend publishing both beah *and* restraint in the harness repos
for Beaker installations. This will not only make restraint available
for container based testing, but also make it readily available via
"harness=restraint" for normal testing, without needing to add a custom
3. Once we have container based testing working reliably with restraint,
drop the restriction against using alternative harnesses in containers.
The priority at the moment though is to get something working that can
run on an Atomic Host, and still provide a relatively normal execution
environment for the executed tasks. Supporting alternative harnesses
*inside* containers is a nice-to-have that can wait until later - by
flatly disallowing it, we ensure we don't have to spend any time working
on container related issues that don't impact restraint. For the initial
iteration, we can also ignore the question of choosing the base image
used to run the harness, as well as being able to start and stop other
containers on the host.
I've filed an RFE for 0.18 on that basis:
As part of this, we may also want to move restraint from Bill's personal
account on GitHub to the main Beaker project account, but I don't think
that's particularly urgent at this point.
Red Hat Hosted & Shared Services
Software Engineering & Development, Brisbane
HSS Provisioning Architect
As part of implementing https://bugzilla.redhat.com/show_bug.cgi?id=846185 and
https://bugzilla.redhat.com/show_bug.cgi?id=1121462, I was thinking that the best
user experience would be if we ask nothing of the user. They need to just click
on a system's "Update Inventory" button or run the "bkr update-inventory <fqdn>" command
to update the inventory data for the system.
So, the key step is to figure out which distro to use. RHEL6/CentOS6 would cover most
of the hardware, but there may be exceptions for older/newer hardware archs. So, here is
what I am thinking:
1. Start with RHEL6/CentOS6, and check if the system is compatible with it. If yes, go to step 4,
else go to step 2.
2. Is the system compatible with RHEL7/CentOS7? If yes, go to step 4, else go to step 3.
3. Is the system compatible with RHEL5/CentOS5? If yes, go to step 4, else error out.
4. Submit a job with the chosen distro and /distribution/install and /distribution/inventory tasks.
(The job will use the <hostRequires force = .. /> element so that all non-removed systems can be inventoried
as long as the job owner has the sufficient rights on the system)
One immediate drawback of this is using hard coded distro names above.
Another idea I can think of is have a system level ksmeta variable defined such as "inventory_distro=MyOSMajor"
and use that. But that is asking of system owners/beaker admins to have to do that explicitly.
It would also vastly simplify the implementation.
Amit Saha <http://echorand.me>
PnT DevOps - Developer
Red Hat, Inc.