GithubHelp home page GithubHelp logo

beaker-project / beaker Goto Github PK

View Code? Open in Web Editor NEW
77.0 20.0 40.0 26.72 MB

Hardware integration testing system and lab automation for Fedora and RHEL

Home Page: http://beaker-project.org/

License: GNU General Public License v2.0

Makefile 0.08% Shell 0.50% Python 81.68% HTML 1.83% JavaScript 13.37% CSS 0.01% Mako 0.01% Genshi 1.69% Less 0.84%
python testing beaker lab-automation pxe netboot provisioning infrastructure hacktoberfest

beaker's Introduction

Beaker is open-source software for managing and automating labs of test computers.

See the Beaker homepage for further documentation and information about the Beaker project. The Developer guide in particular might be useful if you are working on Beaker.

Repo Layout

  • Server/

    • assets/
      Source files for static assets (JavaScript, LESS) which are served to the web browser. The webassets module manages compilation and minification of the raw source files into a form suitable for serving to the browser.

    • bkr/server/tools/
      Various modules that are run as ancillary processes to the server.

    • bkr/server/config/
      These are application specific configuration items.

    • bkr/server/kickstarts/
      Kickstart templates that are served to the lab controller for provisioning test systems. See the admin guide for further details.

    • bkr/server/snippets/
      These are sections of kickstart templates that can be inserted into other kickstart templates as needed.

    • bkr/server/static/
      Legacy static assets (not managed by the webassets module). No new assets are added here.

    • bkr/server/templates/
      Kid templates for TurboGears controller methods and TurboGears widgets.

    • bkr/server/alembic/versions/
      Alembic database migration scripts.

  • LabController/
    This contains all the source code for the lab controller.

    • addDistro/
      Scripts to run on the import of distros. See the admin guide for details.

    • apache/beaker-lab-controller.conf
      Apache configuration file. Used to configure the serving of various files including logs.

    • apache/404.html
      Custom 404 error page for logs.

    • aux/anamon, aux/anamon.init, aux/anamon.service
      "Anamon", the Anaconda monitoring script. This runs during Anaconda installations and periodically uploads Anaconda logs to Beaker.

    • cron.hourly/
      Anything to be run as a cron job on the lab controller goes in here. Currently contains a single script that expires distros.

    • init.d/
      Contains the init scripts for the individual lab controller processes.

    • src/bkr/labcontroller/
      Modules that act as entry points for the main processes listed in init.d/, as well as related modules.

    • src/bkr/labcontroller/power-scripts/
      Contains scripts responsible for power cycling test machines.

  • IntegrationTests/
    This directory contains the complete Beaker test suite. Tests for the server, lab controller and client are found in their corresponding directories in the src/bkr/inttest/ directory.

  • Client/
    All source files for the beaker client are found here.

    • src/bkr/client/
      Modules that are shared and utilized by various commands.

    • src/bkr/client/commands/
      Each module in this directory corresponds to a different subcommand for the bkr client. Man pages for each subcommand are included as a module-level docstring in reStructuredText format.

  • documentation/
    Beaker's documentation in reStructuredText format.

  • SchemaUpgrades/
    Legacy database upgrade instructions, for Beaker versions up to 0.8.2. Newer database upgrades are managed by Alembic, with migration scripts added to Server/bkr/server/alembic/versions/.

  • Common/
    Any substantial amount of source code that can be utilized by more than one package should be here.

    • bkr/common/schema/
      Any kind of beaker entity that has a schema definition, will be defined here. This does not include database schemas.
  • Misc/
    Utilities and scripts which are used for developing Beaker but which do not form part of the source tree itself.

    • rpmbuild.sh
      Builds SRPM or RPM development packages from the current git HEAD revision. For example, Misc/rpmbuild.sh -bb will perform a local RPM build resulting in packages like beaker-*-20.1-0.git.2.2dff0c7.noarch.rpm.

beaker's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beaker's Issues

[BUG] File conflicts in multilib installation of restraint-rhts

Describe the bug
restraint-rhts fails to install on a multilib system due to file conflicts in x86_64 and i686 packages (excerpt from Anaconda's program.log):

12:24:56,833 INF program: + dnf -y install restraint-rhts 12:24:56,833 INF program: Updating Subscription Management repositories. 12:24:56,833 INF program: Unable to read consumer identity 12:24:56,833 INF program: 12:24:56,834 INF program: This system is not registered with an entitlement server. You can use subscription-manager to register. 12:24:56,834 INF program: 12:24:56,834 INF program: Last metadata expiration check: 0:00:10 ago on Tue Sep 6 08:24:32 2022. 12:24:56,834 INF program: Dependencies resolved. 12:24:56,834 INF program: ================================================================================ 12:24:56,834 INF program: Package Architecture Version Repository Size 12:24:56,834 INF program: ================================================================================ 12:24:56,835 INF program: Installing: 12:24:56,835 INF program: restraint-rhts i686 0.4.0-1.el9 beaker-harness 28 k 12:24:56,835 INF program: restraint-rhts x86_64 0.4.0-1.el9 beaker-harness 27 k 12:24:56,835 INF program: Installing dependencies: 12:24:56,835 INF program: make x86_64 1:4.3-7.el9 beaker-BaseOS 542 k 12:24:56,835 INF program: restraint i686 0.4.0-1.el9 beaker-harness 3.9 M 12:24:56,836 INF program: restraint x86_64 0.4.0-1.el9 beaker-harness 3.8 M 12:24:56,836 INF program: 12:24:56,836 INF program: Transaction Summary 12:24:56,836 INF program: ================================================================================ 12:24:56,836 INF program: Install 5 Packages 12:24:56,836 INF program: 12:24:56,836 INF program: Total download size: 8.3 M 12:24:56,837 INF program: Installed size: 33 M 12:24:56,837 INF program: Downloading Packages: 12:24:56,837 INF program: (1/5): make-4.3-7.el9.x86_64.rpm 11 MB/s | 542 kB 00:00 12:24:56,837 INF program: (2/5): restraint-rhts-0.4.0-1.el9.i686.rpm 39 kB/s | 28 kB 00:00 12:24:56,837 INF program: (3/5): restraint-rhts-0.4.0-1.el9.x86_64.rpm 39 kB/s | 27 kB 00:00 12:24:56,837 INF program: (4/5): restraint-0.4.0-1.el9.i686.rpm 388 kB/s | 3.9 MB 00:10 12:24:56,837 INF program: (5/5): restraint-0.4.0-1.el9.x86_64.rpm 300 kB/s | 3.8 MB 00:13 12:24:56,838 INF program: -------------------------------------------------------------------------------- 12:24:56,838 INF program: Total 649 kB/s | 8.3 MB 00:13 12:24:56,838 INF program: Running transaction check 12:24:56,838 INF program: Transaction check succeeded. 12:24:56,838 INF program: Running transaction test 12:24:56,838 INF program: The downloaded packages were saved in cache until the next successful transaction. 12:24:56,838 INF program: You can remove cached packages by executing 'dnf clean packages'. 12:24:56,839 INF program: Error: Transaction test error: 12:24:56,839 INF program: file /usr/share/selinux/packages/restraint/restraint.pp conflicts between attempted installs of restraint-0.4.0-1.el9.i686 and restraint-0.4.0-1.el9.x86_64 12:24:56,839 INF program: file /usr/share/selinux/packages/restraint/rhts.pp conflicts between attempted installs of restraint-rhts-0.4.0-1.el9.x86_64 and restraint-rhts-0.4.0-1.el9.i686
Please refer to RH Beaker job #6966531 for additional details.

Version-Release number
restraint-rhts-0.4.0-1

To Reproduce
Steps to reproduce the behavior:
Either:

  1. Schedule a job with inst.multilib on kernel command line, or
  2. in an installed system with Beaker repo, try to install restraint-rhts.i686 and restraint-rhts.x86_64 (both need to be specified in case the repo contains also packages for other architectures - because of https://bugzilla.redhat.com/show_bug.cgi?id=1996681).

Actual behavior
RHEL installation fails due to conflicting files in multilib packages.

Expected behavior
No file conflicts, system installation is successful.

[BUG] Beaker is vulnerable to jquery multiple XSS - CVE-2020-11022 and CVE-2020-11023

DESCRIPTION
The systems on my company are scanned for security vulnerabilities and beaker has been triggered vulnerable to CVE-2020-11022 and CVE-2020-11023 associated with multiple XSS on jquery.

Port: 443/tcp
Severity: Medium
Summary: The remote web server is affected by multiple cross site scripting vulnerability.
Details: According to the self-reported version in the script, the version of JQuery hosted on the remote web server is greater than or equal to 1.2 and prior to 3.5.0. It is, therefore, affected by multiple cross site scripting vulnerabilities. Note, the vulnerabilities referenced in this plugin have no security impact on PAN-OS, and/or the scenarios required for successful exploitation do not exist on devices running a PAN-OS release.
Fix: Upgrade to JQuery version 3.5.0 or later.
Extra info:

URL               : https://<beaker.fqdn>/static/javascript/jquery-2.0.2.min.js
Installed version : 2.0.2
Fixed version     : 3.5.0

VERSION-RELEASE NUMBER
On the customer portal (https://access.redhat.com/solutions/32036) Red Hat said that jquery is not maintained on RHEL-7, thus the solution pages suggests that users should fetch the jquery files from other packages of the RHEL-7 repos and maintain it on their own. This seems to be the case for Beaker, since jquery-2.0.2.min.js comes from the Beaker server package:

[root@<fqdn> javascript]# rpm -qf /usr/share/bkr/server/static/javascript/jquery-2.0.2.min.js 
beaker-server-28.2-1.el7.noarch

ACTUAL BEHAVIOR
Beaker vulnerable to XSS.

EXPECTED BEHAVIOR
Beaker should not be vulnerable to XSS.

ADDITIONAL CONTEXT
At first, I gave it a try on patching our forked beaker to use jquery-3.5.1.min.js file (fetched from java-latest-openjdk-javadoc-18.0.1.0.10-2.rolling.el7 rpm) instead of the jquery-2.0.2.min.js and by also changing the widgets.py file:

--- a/Server/bkr/server/widgets.py
+++ b/Server/bkr/server/widgets.py
@@ -155,7 +155,7 @@ def update_params(self, d):
         d['urls'] = [url(u) for u in bundle.urls()]


-jquery = LocalJSLink('bkr', '/static/javascript/jquery-2.0.2.min.js',
+jquery = LocalJSLink('bkr', '/static/javascript/jquery-3.5.1.min.js',
         order=1) # needs to come after MochiKit
 beaker_js = LocalJSBundleLink('js', order=5)
 beaker_css = LocalCSSBundleLink('css')

The Beaker server and services started normally, but I noticed that the top bar of the interface does not work anymore -> instead of being forwarded to something like https://<beaker.fqdn>/jobs the UI gets stuck,on https://<beaker.fqdn>/# . Other than this, basic stuff seems fine and I was able to edit options and even provision a system through a job.

Since the last commit on this topic ( b5e7c42 ) also updated jquery-ui, I gave it a try by also fetching jquery-ui-1.11.2.min.js from phpMyAdmin-4.4.15.10-6.el7 rpm and updating the widgets.py file accordingly.

I am attaching both patches I tried on this venture. Also, this is how I was finding the js files:

[root@<fqdn> ~]# yum whatprovides *jquery-ui*.min.js | grep Filename
Filename    : /usr/share/RackTables/static/js/jquery-ui-1.8.21.min.js
Filename    : /usr/lib/python2.7/site-packages/reviewboard/static/lib/js/jquery-ui-1.8.24.custom.min.js
Filename    : /usr/lib/python2.7/site-packages/reviewboard/htdocs/static/lib/js/jquery-ui-1.8.24.custom.min.js
Filename    : /usr/share/bkr/server/static/javascript/jquery-ui-1.9.2.min.js
...

Where are the jquery and jquery-ui files on the beaker server rpm fetched from? Are they different from their original version? Not much of a js expert here :-P

Thanks in advance for any help on this :-)

0023-beaker-updating-jquery-min-js-to-fix-multiple-XSS-vu.v1.patch.txt
0023-beaker-updating-jquery-min-js-to-fix-multiple-XSS-vu.v2.patch.txt

[BUG] Kerberos authentication fails on Python 3.9

Describe the bug
When kerberos authentication is attempted, an exception is thrown:

Traceback (most recent call last):
File "/usr/bin/bkr", line 33, in <module>
sys.exit(load_entry_point('beaker-client==28.0', 'console_scripts', 'bkr')())
File "/usr/lib/python3.9/site-packages/bkr/client/main.py", line 113, in main
return cmd.run(*cmd_args, **cmd_opts.__dict__)
File "/usr/lib/python3.9/site-packages/bkr/client/commands/cmd_whoami.py", line 57, in run
self.set_hub(**kwargs)
File "/usr/lib/python3.9/site-packages/bkr/client/__init__.py", line 84, in set_hub
self.container.set_hub(username, password, auto_login=self.requires_login,
File "/usr/lib/python3.9/site-packages/bkr/client/command.py", line 328, in set_hub
self.hub = HubProxy(conf=self.conf, auto_login=auto_login)
File "/usr/lib/python3.9/site-packages/bkr/common/hub.py", line 87, in __init__
self._login()
File "/usr/lib/python3.9/site-packages/bkr/common/hub.py", line 114, in _login
login_method()
File "/usr/lib/python3.9/site-packages/bkr/common/hub.py", line 206, in _login_krbv
req_enc = base64.encodestring(res.token)
AttributeError: module 'base64' has no attribute 'encodestring'

Version-Release number

28

To Reproduce
Steps to reproduce the behavior:

  1. Configure and initialize kerberos with kinit
  2. Configure bkr to connect to the desired hub
  3. Run bkr whoami

Actual behavior
Kerberos connection doesn't work.

Expected behavior
Kerberos connection should succeed and the command should complete successfully.

Additional context
base64 module of Python 3.9 doesn't support encodestring method. It should use encodebytes.

[RFE] Enable to deploy Beaker server / lab-controller on non-x86-64 environment

Is your feature request related to a problem? Please describe.
At this moment it is not possible to deploy Beaker in environment without x86_64 machines.

Beaker itself is completely noarch product, however, we use dependencies that can be found only on particular architectures.
For example syslinux. This package is packaged only to x86-64 RHEL 7.

We should get rid of dependencies like this to enable the user to install Beaker.
If dependencies enable simpler onboarding then we should mark them as prerequisites for a given environment (e.g. install syslinux on x86-64).

Describe the solution you'd like
I can install Beaker on top of PPC64.

[RFE] clarify external/local in bkr-watchdog-extend(1)

Is your feature request related to a problem? Please describe.
Learning about bkr watchdog-extend I wanted to know whether the command will adjust only external watchdog or both external.

But I could not tell neither from the manpage nor from --help

Describe the solution you'd like

--help and/or manpage should mention the fact that this command adjusts external watchdog only.

Describe alternatives you've considered

I asked on redhat-internal #beaker and got answer from @jbastian in few hours. ;-)

Additional context
bwe

[BUG] Memory usage for exports is insane

Describe the bug
You need a beefy instance for reproducing this issue. Anyway, if you have a huge pool of machines + a lot of excluded OS(s) on them then export will end up with 500 status code.

500 is returned because the worker is killed by the system due to OOM even when we have 1.5 G allocated for this operation.
When I was running this I was able to peak to almost 3G.

Version-Release number
latest

To Reproduce
Do system export in production

Actual behavior
500 - Error

Expected behavior
CSV export

[BUG] get unwanted waring message with <hypervisor op="=" value=""/>

I try to reserve a bare metal machine by adding the following to the job xml,but get unwanted message:
WARNING: job xml validation failed: Element hostRequires has extra content: hypervisor, line 8,
and due to a bug[1] in asyncio,most of my autotest beaker jobs failed,would you please omit that warning?

  <hostRequires>
    <hypervisor op="=" value=""/>
    <device_description op="=" value="UEFI"/>
    <arch op="=" value="x86_64"/>
    <key_value key="DISKSPACE" op="&gt;" value="50G"/>
    <system_type value="Machine"/>
  </hostRequires>

[1]https://bugzilla.redhat.com/show_bug.cgi?id=1901457

[RFE] Add CentOSStream 9 Repo under yum/download

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

In case i would like to install the following on CentOSStream9
beaker-client
beaker-harness

Need to use the following repos

https://beaker-project.org/yum/beaker-client-Fedora.repo
https://beaker-project.org/yum/beaker-harness-Fedora.repo

Please refer
Describe the solution you'd like

https://beaker-project.org/yum/beaker-client-CentOSStream.repo
https://beaker-project.org/yum/beaker-harness-CentOSStream.repo

with the following rpms:
https://beaker-project.org/yum/client/CentOSStream
https://beaker-project.org/yum/harness/CentOSStream

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Fedora packages are installed as a w/a but no CentOS automotive upstream project will allow to refer
Fedora packages as a dependency to CS9

Additional context
you can refer this
https://gitlab.com/CentOS/automotive/sample-images

[RFE]beaker should fail the job when no requestd hardware available

I try to reserve a 'SAS' server with "bkr workflow-simple --arch=x86_64 --distro=Fedora-Rawhide-20200607.n.0 Server --hostrequire devices_driver=SAS --task=/distribution/check-install --task=/distribution/reservesys",but find
that beaker reserve a kvm host,I think beaker should fail the job or queue reservation on a 'SAS' server when there is no available 'SAS' server.
I try to clone the job with web,get the same result.
I've changed the value to 'SATA',it works as there is available 'SATA' server.

[RFE] Change authentication cookie from a session cookie to a persistent cookie

This is a "quality of life" improvement. At the moment Beaker uses session cookies. So when you close your browser the cookie disappears and then you need to login again the next time you go to the server.

Suggest changing this to a persistent cookie so that the cookie's expiration will match the expiration specified in "visit.timeout" in the beaker server.cfg file.

RPM build - CentOS Stream 9

At this moment it is not possible to create a new RPM build for CentOS Stream 9.
Build is failing in early stage with following error:

DEBUG util.py:444:  No matching package to install: 'python3-mock'
DEBUG util.py:444:  No matching package to install: 'python3-nose'

It is necessary to investigate why packages are not available and what we will do next.

Should the install_start watchdog be 3 hours?

So the install_start watchdog appears to be set to 3 hours when the install starts. Which seems kind of long for the use cases I do.

Are installs really taking longer than 30 minutes?

The watchdog gets set to 3 hours when the install process tells the beaker lab controller that it is starting the install. So the install has started at that point.

The reason I am asking is we are sometimes seeing issues where our install finishes reboots and then something goes wrong in our firmware and it doesn't boot from the disk. So then it takes about 3 hours for the job to get aborted.

Looking at the watchdog flow it appears to be:

  • 30 minutes when the provision process starts
  • 3 hours when the install kickstart hits the "/install_start/<recipe_id>" on the lab controller
  • 40 minutes (2400 seconds) when Restraint starts
  • Then task specific watchdog time once task starts.

install_start code:

  • def install_start(self, recipe_id=None):
    """ Called from %pre of the test machine. We call
    the server's install_start()
    """
    _debug_id = "(unspecified recipe)" if recipe_id is None else recipe_id
    logger.debug("install_start for R:%s" % _debug_id)
    return self.hub.recipes.install_start(recipe_id)
  • def install_start(self, recipe_id=None):
    """
    Records the start of a recipe's installation. The watchdog is extended
    by 3 hours to allow the installation to complete.
    """
    try:
    recipe = Recipe.by_id(recipe_id)
    except InvalidRequestError:
    raise BX(_("Invalid Recipe ID %s" % recipe_id))
    if not recipe.installation:
    raise BX(_('Recipe %s not provisioned yet') % recipe_id)
    installation = recipe.installation
    if not installation.install_started:
    installation.install_started = datetime.utcnow()
    # extend watchdog by 3 hours 60 * 60 * 3
    kill_time = 10800
    logger.debug('Extending watchdog for %s', recipe.t_id)
    recipe.extend(kill_time)

[BUG] kernel oops that happens during provison are marked as panic in the last task

Describe the bug
This was initially reported on https://bugzilla.redhat.com/show_bug.cgi?id=1623729

In case there is kernel oops during provision this oops is marked as a kernel panic in the last beaker task. This causes confusion to understand why that task is shown as panic.

Version-Release number
28.2

To Reproduce
Steps to reproduce the behavior:

  1. Provision an OS that triggers kernel oops at provision, but the provision completes successfully
  2. Run several tasks
  3. The last task will show as panic, because of the oops that happened in the provisioning.

Actual behavior
Last task show as panic

Expected behavior
Last task shouldn't show as panic

Beaker no longer provides both "Take" and "Borrow" options for test nodes

At some point in the past, when looking at individual machines that have a status of Automated, we had both the "Take" and "Borrow" options available to us:

image

But now, we only have the "Borrow" option, at which point we can then "Take" the machine once we've already borrowed it.
If we switch the machine to have a status of "Manual", we can only Take the machine.

We aren't sure if this is a change as of Beaker 28.2; we've played around with many different access policies and none of them seem to solve the issue.

[RFE] Fedora 36 rpms / repo

The Beaker download page https://beaker-project.org/download.html provides a fedora.repo file, but no packages exist for Fedora 36 (yet):

$ sudo dnf install beaker-redhat
Beaker Client - Fedora36                        541  B/s | 237  B     00:00    
Errors during downloading metadata for repository 'beaker-client':
  - Status code: 404 for https://beaker-project.org/yum/client/Fedora36/repodata/repomd.xml (IP: 8.43.85.221)
Error: Failed to download metadata for repo 'beaker-client': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

[BUG] Beaker job fails to complete on a multilib system

Describe the bug
Beaker jobs that are executed on a multilib system fail to complete (see issue #163). The reason is that the installation of restraint-rhts fails due to file conflicts in the multilib (i686, x86_64) packages, and subsequent jobs that should be run after system installation aren't run and finally the job fails with a warning after the watchdog expires.

Beside a proper fix consisting of removing the file conflicts in restraint-rhts package, a simple workaround would be to specify architecture of the restraint-rhts package to be installed, in a similar way to a workaround implemented in our automated graphical installations testing tool, Anabot:

$package_command -y install restraint-rhts.$(uname -m) instead of just $package_command -y install restraint-rhts

Version-Release number
restraint-rhts-0.4.0-1

To Reproduce
Steps to reproduce the behavior:

  • Schedule a job with 'inst.multilib' on kernel command line.

Actual behavior
The job fails with a warning after the watchdog times out, due to a failure to install restraint-rths.

Expected behavior
The job finishes without issues, restraint-rhts is installed within kickstart %post script.

[BUG] Missing instructions to prepare beaker release.

Describe the bug
Beaker Architecture documentation is missing instructions to prepare beaker release.

Version-Release number

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'https://beaker-project.org/docs/architecture-guide/' and there is no doc for preparing beaker release.
  2. Since this architecture document is targetted for developers, it seems like an appropriate location.

Actual behavior
No Doc exists

Expected behavior
Beaker Release doc should exist.

Screenshots
N/A

Additional context
N/A

[BUG] grubport snippet breaks unified grub.cfg setup of CentOS Stream 9

Describe the bug
grubport snippet modifies /boot/efi/EFI/redhat/grub.cfg. Modification is necessary on EFI system with older distros like RHEL7 and RHEL8. However since Fedora 34 and CentOS Stream 9, the file should not be modified as it becomes a step stone to the unified grub.cfg, i.e. /boot/grub2/grub.cfg.

To Reproduce
Steps to reproduce the behavior:

  1. Provision CentOS Stream 9 on a system
  2. Check /boot/efi/EFI/redhat/grub.cfg

Actual behavior
/boot/efi/EFI/redhat/grub.cfg contains actual boot entries or 'blscfg'.

Expected behavior
/boot/efi/EFI/redhat/grub.cfg should look something like this:

search --no-floppy --set prefix --file /boot/grub2/grub.cfg
set prefix=($prefix)/boot/grub2
configfile $prefix/grub.cfg

Additional context
About unified grub.cfg setup
https://fedoraproject.org/wiki/Changes/UnifyGrubConfig

[BUG] beaker-proxy hangs on a GET request resulting in all Beaker jobs hanging - server/controller reboot necessary

DESCRIPTION
The systems on my company are scanned for security vulnerabilities and the beaker-proxy service is hanging with one GET request made by the vulnerability tool.

After the GET request searching for an specific vulnerability is received, all beaker jobs get stuck in a Waiting or Updating stage and don't move forward. Restarting beaker-proxy and beaker-watchdog services does not get Beaker unstuck - only thing that works is literally restarting everything on the Beaker Controllers and Beaker Server!

Stack trace on the beaker-proxy.log suggests the failure is on the UTF-8 decodification of this GET request that contains a 0x80 byte

...
Jun 20 07:45:13 <hostname> beaker-proxy: ::ffff:<IP OF VULN. SCANNER> - - [2022-06-20 07:45:13] "GET .\.\.\.\.\.\.\.\.\.\/winnt/win.ini HTTP/1.1" 404 342 0.000217
Jun 20 07:45:13 <hostname> beaker-proxy: ::ffff:<IP OF VULN. SCANNER> - - [2022-06-20 07:45:13] "GET /nessus\..\..\..\..\..\..\windows\win.ini HTTP/1.1" 404 342 0.000257
Jun 20 07:45:14 <hostname> beaker-proxy: ::ffff:<IP OF VULN. SCANNER> - - [2022-06-20 07:45:14] "GET /nessus\..\..\..\..\..\..\winnt\win.ini HTTP/1.1" 404 342 0.000303
Jun 20 07:45:14 <hostname> beaker-proxy[12587]: bkr.labcontroller.main ERROR Error handling request GET /<80>../<80>../<80>../<80>../<80>../<80>../windows/win.ini
Jun 20 07:45:14 <hostname> beaker-proxy[12587]: Traceback (most recent call last):
Jun 20 07:45:14 <hostname> beaker-proxy: Traceback (most recent call last):
Jun 20 07:45:14 <hostname> beaker-proxy: File "/usr/lib64/python2.7/site-packages/gevent/pywsgi.py", line 884, in handle_one_response
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/bkr/labcontroller/main.py", line 169, in _log_failed_requests
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     return func(environ, start_response)
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/werkzeug/wrappers.py", line 285, in application
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     return f(*args[:-2] + (request,))(*args[-2:])
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/bkr/labcontroller/main.py", line 133, in __call__
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     if req.path in ('/', '/RPC2', '/server'):
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/werkzeug/utils.py", line 71, in __get__
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     value = self.func(obj)
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/werkzeug/wrappers.py", line 503, in path
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     self.charset, self.encoding_errors)
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib/python2.7/site-packages/werkzeug/_compat.py", line 92, in wsgi_decoding_dance
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     return s.decode(charset)
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:   File "/usr/lib64/python2.7/encodings/utf_8.py", line 16, in decode
Jun 20 07:45:14 <hostname> beaker-proxy[12587]:     return codecs.utf_8_decode(input, errors, True)
Jun 20 07:45:14 <hostname> beaker-proxy[12587]: UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 1: invalid start byte
...

VERSION-RELEASE-NUMBER
[root@ beaker]# rpm -qa | grep beaker-lab
beaker-lab-controller-28.2-1.el7.noarch

REPRODUCE
Still trying to figure out a python or shell script to reproduce the stack trace. Trying something like this:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import codecs
import requests

url = "https://<fqdn>/\x81../\x80../\x80../\x80../\x80../\x80../windows/win.ini HTTP/1.1"

x = requests.get( codecs.encode(url, encoding='utf-8', errors='strict') )

print(x.status_code)

print(x.text)

But still haven't quite been able to reproduce it.

ACTUAL BEHAVIOR
The beaker-proxy service hangs, and thus all beaker jobs hang - reboot of everything is necessary.

EXPECTED BEHAVIOR
No hang on anything - just a 404 error should be returned with no stack trace on the logs.

ADITIONAL CONTEXT
Code that fails:

[root@<fqdn> ~]# rpm -qf /usr/lib64/python2.7/encodings/utf_8.py
python-libs-2.7.5-90.el7.x86_64

[root@<fqdn> beaker]# cat /usr/lib64/python2.7/encodings/utf_8.py
""" Python 'utf-8' Codec


Written by Marc-Andre Lemburg ([email protected]).

(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.

"""
import codecs

### Codec APIs

encode = codecs.utf_8_encode

def decode(input, errors='strict'):
    return codecs.utf_8_decode(input, errors, True)
...

Maybe the GET request need to be further sanitized somewhere prior to trying to decode it?

Thanks in advance for any help on this issue :-)

[RFE]load-request command

Hi,

There are loan-return and loan-grant commands,would you please provide a load-request command,
so that my team's autotest service could send load request to specific server automatically?

Thanks,
Lili

Fedora 31 harness not up on beaker-project.org

There is not a version of the restraint harness for Fedora 31 available at https://beaker-project.org/yum/harness/, but we want to run tests with Fedora 31.

Without this harness, running tasks like reservesys result in the job incorrectly reporting failures/not notifying users that their machine is reserved, even if the OS installed correctly, etc.

Even though Fedora 31 is a bit older, is there a version of restraint suitable for it? If so, where can we find it?

[BUG] Git sub modules error and bootstrap issue

I tried setting up the beaker in my local and faced issues with git sub modules getting timed out and the bootstrap version which was used in this project is not in active development and fresh install threw so many less errors(undefined variables and mixins).

[BUG] lessc having issues with bootstrap file

Unsure why I started seeing these errors in the /var/log/beaker/server-errors.log file.

Doing the following fails. Which seems to be what Beaker is doing in the traceback below

/usr/share/bkr/server/assets# lessc style.less
ArgumentError: Error evaluating function `percentage`: argument must be a number in /usr/share/bkr/server/assets/bootstrap/less/variables.less on line 292, column 27:
291 // -------------------------
292 @fluidGridColumnWidth:    percentage(@gridColumnWidth/@gridRowWidth);
293 @fluidGridGutterWidth:    percentage(@gridGutterWidth/@gridRowWidth);

Saw this in the log file which led me to the above:

Nov 22 14:00:20 beaker beaker-server[33210]: 2022-11-22 14:00:20,284 bkr.server ERROR app.py:log_exception():L1423 Exception on /bkr/client/ [POST]
Nov 22 14:00:20 beaker beaker-server[33210]: Traceback (most recent call last):
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
Nov 22 14:00:20 beaker beaker-server[33210]:     response = self.full_dispatch_request()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/flask/app.py", line 1470, in full_dispatch_request
Nov 22 14:00:20 beaker beaker-server[33210]:     self.try_trigger_before_first_request_functions()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/flask/app.py", line 1497, in try_trigger_before_first_request_functions
Nov 22 14:00:20 beaker beaker-server[33210]:     func()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/bkr/server/wsgi.py", line 120, in init
Nov 22 14:00:20 beaker beaker-server[33210]:     assets.build_assets()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/bkr/server/assets.py", line 170, in build_assets
Nov 22 14:00:20 beaker beaker-server[33210]:     bundle.build()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/bundle.py", line 567, in build
Nov 22 14:00:20 beaker beaker-server[33210]:     disable_cache=disable_cache))
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/bundle.py", line 504, in _build
Nov 22 14:00:20 beaker beaker-server[33210]:     force, disable_cache=disable_cache, extra_filters=extra_filters)
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/bundle.py", line 429, in _merge_and_apply
Nov 22 14:00:20 beaker beaker-server[33210]:     kwargs=item_data)
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/merge.py", line 272, in apply
Nov 22 14:00:20 beaker beaker-server[33210]:     return self._wrap_cache(key, func)
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/merge.py", line 219, in _wrap_cache
Nov 22 14:00:20 beaker beaker-server[33210]:     content = func().getvalue()
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/merge.py", line 252, in func
Nov 22 14:00:20 beaker beaker-server[33210]:     getattr(filter, type)(data, out, **kwargs_final)
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/filter/less.py", line 97, in input
Nov 22 14:00:20 beaker beaker-server[33210]:     self.subprocess(args, out, in_)
Nov 22 14:00:20 beaker beaker-server[33210]:   File "/usr/lib/python2.7/site-packages/webassets/filter/__init__.py", line 505, in subprocess
Nov 22 14:00:20 beaker beaker-server[33210]:     proc.returncode, stdout, stderr))
Nov 22 14:00:20 beaker beaker-server[33210]: FilterError: less: subprocess returned a non-success result code: 1, stdout=, stderr=#033[31mArgumentError: Error evaluating function `percentage`: argument must be a number#033[39m#033[31m in #033[39mbootstrap/less/variables.less#033[90m on line 292, column 27:#033[39m
Nov 22 14:00:20 beaker beaker-server[33210]: #033[90m291 // -------------------------#033[39m
Nov 22 14:00:20 beaker beaker-server[33210]: 292 @fluidGridColumnWidth:    #033[7m#033[31m#033[1mp#033[22mercentage(@gridColumnWidth/@gridRowWidth);#033[39m#033[27m
Nov 22 14:00:20 beaker beaker-server[33210]: #033[90m293 @fluidGridGutterWidth:    percentage(@gridGutterWidth/@gridRowWidth);#033[39m#033[0m#033[0m

[BUG] Do not use deprecated kernel boot arguments

Description of problem:
When installing Fedora-Rawhide (future Fedora 34) in Beaker, the following warnings are printed by the installer:

[ 9.574010] dracut-cmdline[299]: Warning: 'ks='
[ 9.584962] dracut-cmdline[299]: Warning: ks has been deprecated and will be removed. Please use inst.ks instead.
[ 9.596929] dracut-cmdline[299]: Warning: 'ksdevice=00:00:1A:1B:0B:8C'
[ 9.604937] dracut-cmdline[299]: Warning: ksdevice has been deprecated and will be removed. Please use inst.ks.device instead.
[ 9.637034] dracut-cmdline[299]: Warning: 'ksdevice=' is deprecated. Supplied BOOTIF takes precedence.
...
Boot argument 'leavebootorder' is deprecated and will be removed in the future. Please use 'inst.leavebootorder' instead.
...

Fedora change page:
https://fedoraproject.org/wiki/Changes/Ignore_Anaconda_kernel_boot_parameters_without_inst_prefix

Please, use the proper kernel command line arguments with the "inst." prefix instead of the deprecated arguments.

Boot arguments without the "inst." prefix are marked as deprecated since RHEL-7:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/chap-anaconda-boot-options#sect-boot-options-deprecated-removed

Version-Release number of selected component (if applicable):
Beaker 27.4

[BUG] "group" tag omitted when using `job-submit --combine`

Describe the bug
When using bkr job-submit --combine to combine several jobs into a single job, the "group" tag in the job XMLs to be combined is omitted.

Version-Release number
beaker-client-28.3-3.fc37.noarch
beaker-common-28.3-3.fc37.noarch

To Reproduce
Steps to reproduce the behavior:

  1. Prepare 2 job XMLs with the same contents of the following (notice that in the 1st line group="some-group-in-beaker"):
<job retention_tag="120days" group="some-group-in-beaker">
	<whiteboard>example job xml</whiteboard>
	<recipeSet priority="Normal">
		<recipe whiteboard="BaseOS" ks_meta="harness='restraint-rhts beakerlib-redhat' disable_repo_CRB disable_repo_CRB-debuginfo">
			<distroRequires>
				<and>
					<distro_name op="=" value="RHEL-9.0.0"/>
					<distro_variant op="=" value="BaseOS"/>
					<distro_arch op="=" value="x86_64"/>
				</and>
			</distroRequires>
			<hostRequires/>
			<repos/>
			<partitions/>
			<watchdog panic="ignore"/>
			<task name="/distribution/reservesys" role="None">
				<params>
					<param name="RESERVETIME" value="604800"/>
				</params>
				<rpm name="test(/distribution/reservesys)" path="/mnt/tests/distribution/reservesys"/>
			</task>
		</recipe>
	</recipeSet>
</job>
  1. Say the 2 files are named a.xml and b.xml
  2. bkr job-submit --combine --xml --dry-run a.xml b.xml

Actual behavior
Only retention_tag is kept, but group="some-group-in-beaker" doesn't present in the resulting XML:

<job retention_tag="120days"><whiteboard>example job xml</whiteboard><recipeSet priority="Normal">
		<recipe whiteboard="BaseOS" ks_meta="harness='restraint-rhts beakerlib-redhat' disable_repo_CRB disable_repo_CRB-debuginfo">
...
		</recipe>
	</recipeSet><recipeSet priority="Normal">
		<recipe whiteboard="BaseOS" ks_meta="harness='restraint-rhts beakerlib-redhat' disable_repo_CRB disable_repo_CRB-debuginfo">
...
		</recipe>
	</recipeSet></job>

Expected behavior
group="some-group-in-beaker" doesn't get omitted in the resulting XML, for example:

<job retention_tag="120days" group="some-group-in-beaker"><whiteboard>example job xml</whiteboard><recipeSet priority="Normal">
		<recipe whiteboard="BaseOS" ks_meta="harness='restraint-rhts beakerlib-redhat' disable_repo_CRB disable_repo_CRB-debuginfo">
...
		</recipe>
	</recipeSet><recipeSet priority="Normal">
		<recipe whiteboard="BaseOS" ks_meta="harness='restraint-rhts beakerlib-redhat' disable_repo_CRB disable_repo_CRB-debuginfo">
...
		</recipe>
	</recipeSet></job>

Screenshots

Additional context

[BUG] bkr job-results ends with an ISE 500 traceback for jobs with too many results

Describe the bug
When a job contains a lot of reported results (7500), it can't be retrieved via cmdline, bkr job-results returns a non-descriptive ISE 500 traceback:

Traceback (most recent call last):
File "/usr/bin/bkr", line 11, in
load_entry_point('beaker-client==28.2', 'console_scripts', 'bkr')()
File "/usr/lib/python3.6/site-packages/bkr/client/main.py", line 113, in main
return cmd.run(*cmd_args, **cmd_opts.dict)
File "/usr/lib/python3.6/site-packages/bkr/client/commands/cmd_job_results.py", line 124, in run
myxml = self.hub.taskactions.to_xml(task, False, True, include_logs)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1112, in call
return self.__send(self.__name, args)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1452, in __request
verbose=self.__verbose
File "/usr/lib/python3.6/site-packages/bkr/common/xmlrpc3.py", line 470, in request
result = transport_class.request(self, *args, **kwargs)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1154, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python3.6/site-packages/bkr/common/xmlrpc3.py", line 405, in single_request
response.msg)
xmlrpc.client.ProtocolError: <ProtocolError for beaker.engineering.redhat.com/client/: 500 Internal error>

Version-Release number
Beaker 28.2

To Reproduce
Schedule a job that reports more than 7500 results

Actual behavior
ISE 500 traceback from bkr client, WebUI loads, albeit slowly.

Expected behavior
Beaker should give users a descriptive error instructing them what went wrong and how to fix it (not an ISE 500), do so consistently (same behavior when using webui and api) and ideally do it in a timely manner and abort cleanly when limits are reached.

[BUG] Dogfood is always failing on test_by_date_added selenium test

Describe the bug
Integration tests are failing during full run on a single node.

Version-Release number
Latest in development. However, I was able to reproduce it on stable.

To Reproduce
Run dogfood.

Actual behavior

======================================================================
ERROR: test_by_date_added (bkr.inttest.server.selenium.test_system_search.Search)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/bkr/inttest/server/selenium/test_system_search.py", line 287, in test_by_date_added
    check_system_search_results(b, present=[new_system], absent=[old_system])
  File "/usr/lib/python2.7/site-packages/bkr/inttest/server/webdriver_utils.py", line 122, in check_system_search_results
    './/td[1]/a/text()="%s"]' % system.fqdn)
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 290, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 744, in find_element
    {'using': by, 'value': value})['value']
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//table[@id=\"widget\" and .//td[1]/a/text()=\"system7269.Search.test.by.date.added\"]"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpFfTSB6/extensions/[email protected]/components/driver-component.js:10770)
    at fxdriver.Timer.prototype.setTimeout/<.notify (file:///tmp/tmpFfTSB6/extensions/[email protected]/components/driver-component.js:625)
-------------------- >> begin captured logging << --------------------
2020-06-23 13:37:03,364 bkr.server.tests.data_setup DEBUG Created user user7259
2020-06-23 13:37:03,377 bkr.server.model.activity DEBUG Tentative GroupActivity: object_id=2L, service=u'testdata', field=u'User', action=u'Added', old=None, new=u'host/lab7260.testdata.invalid', user=None
2020-06-23 13:37:03,390 bkr.server.tests.data_setup DEBUG Created user user7261
2020-06-23 13:37:03,401 bkr.server.model.inventory DEBUG Idle system system7262.Search.test.by.date.added changed lab controller, flagging it for scheduling
2020-06-23 13:37:03,402 bkr.server.model.inventory DEBUG system7262.Search.test.by.date.added status changed from symbol('NEVER_SET') to SystemStatus.automated
2020-06-23 13:37:03,425 bkr.server.tests.data_setup DEBUG Created system system7262.Search.test.by.date.added
2020-06-23 13:37:03,425 bkr.server.model.inventory DEBUG Idle system system7262.Search.test.by.date.added changed loan status, flagging it for scheduling
2020-06-23 13:37:03,428 bkr.server.model.activity DEBUG Tentative GroupActivity: object_id=2L, service=u'testdata', field=u'User', action=u'Added', old=None, new=u'host/lab7264.testdata.invalid', user=None
2020-06-23 13:37:03,443 bkr.server.tests.data_setup DEBUG Created user user7265
2020-06-23 13:37:03,453 bkr.server.model.inventory DEBUG Idle system system7266.Search.test.by.date.added changed lab controller, flagging it for scheduling
2020-06-23 13:37:03,453 bkr.server.model.inventory DEBUG system7266.Search.test.by.date.added status changed from symbol('NEVER_SET') to SystemStatus.automated
2020-06-23 13:37:03,473 bkr.server.tests.data_setup DEBUG Created system system7266.Search.test.by.date.added
2020-06-23 13:37:03,473 bkr.server.model.inventory DEBUG Idle system system7266.Search.test.by.date.added changed loan status, flagging it for scheduling
2020-06-23 13:37:05,544 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session {"desiredCapabilities": {"platform": "ANY", "browserName": "firefox", "version": "", "marionette": false, "javascriptEnabled": true}}
2020-06-23 13:37:05,703 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:05,704 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/timeouts/implicit_wait {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "ms": 15000.0}
2020-06-23 13:37:05,768 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:05,769 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/window/current/position {"y": 0, "x": 0, "windowHandle": "current", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:05,793 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:05,794 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/window/current/size {"width": 1920, "windowHandle": "current", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "height": 1200}
2020-06-23 13:37:05,820 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:05,821 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:05,861 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:05,861 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"url": "http://slave-08.columbia.lab.eng.brq.redhat.com/bkr/", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:06,620 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:06,621 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "link text", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "Log in"}
2020-06-23 13:37:06,753 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:06,753 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{95ce3ef0-0548-4741-98f5-fa2b1ae912b0}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{95ce3ef0-0548-4741-98f5-fa2b1ae912b0}"}
2020-06-23 13:37:06,849 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:06,850 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "user_name"}
2020-06-23 13:37:07,004 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,004 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{62402f6f-ed63-42cf-a746-c35907c5c9a4}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{62402f6f-ed63-42cf-a746-c35907c5c9a4}"}
2020-06-23 13:37:07,082 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,083 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "user_name"}
2020-06-23 13:37:07,099 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,099 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{62402f6f-ed63-42cf-a746-c35907c5c9a4}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{62402f6f-ed63-42cf-a746-c35907c5c9a4}", "value": ["u", "s", "e", "r", "7", "2", "5", "9"]}
2020-06-23 13:37:07,146 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,146 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "password"}
2020-06-23 13:37:07,154 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,155 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{bf6aae24-035a-4b51-8713-9d61a0dffe0c}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{bf6aae24-035a-4b51-8713-9d61a0dffe0c}"}
2020-06-23 13:37:07,224 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,225 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "password"}
2020-06-23 13:37:07,240 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,241 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{bf6aae24-035a-4b51-8713-9d61a0dffe0c}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{bf6aae24-035a-4b51-8713-9d61a0dffe0c}", "value": ["p", "a", "s", "s", "w", "o", "r", "d"]}
2020-06-23 13:37:07,337 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,337 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "login"}
2020-06-23 13:37:07,358 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:07,359 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{dfff7e98-88e8-485b-82e9-1907f285eafb}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{dfff7e98-88e8-485b-82e9-1907f285eafb}"}
2020-06-23 13:37:08,230 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:08,240 bkr.server.tests.data_setup DEBUG Created user user7268
2020-06-23 13:37:08,252 bkr.server.model.inventory DEBUG system7269.Search.test.by.date.added status changed from None to SystemStatus.manual
2020-06-23 13:37:08,275 bkr.server.tests.data_setup DEBUG Created system system7269.Search.test.by.date.added
2020-06-23 13:37:08,279 bkr.server.tests.data_setup DEBUG Created user user7271
2020-06-23 13:37:08,288 bkr.server.model.inventory DEBUG system7272.Search.test.by.date.added status changed from None to SystemStatus.manual
2020-06-23 13:37:08,312 bkr.server.tests.data_setup DEBUG Created system system7272.Search.test.by.date.added
2020-06-23 13:37:08,327 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"url": "http://slave-08.columbia.lab.eng.brq.redhat.com/bkr/", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:09,094 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,095 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "link text", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "Show Search Options"}
2020-06-23 13:37:09,209 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,209 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{7f73d1b1-e7a9-4492-8ee3-d18eb51a719a}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{7f73d1b1-e7a9-4492-8ee3-d18eb51a719a}"}
2020-06-23 13:37:09,343 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,344 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:09,354 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,855 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:09,915 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,915 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.table"}
2020-06-23 13:37:09,923 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,923 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}"}
2020-06-23 13:37:09,928 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,929 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}"}
2020-06-23 13:37:09,934 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,934 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{fc249dc1-afe4-4bd5-9853-a2b2e0b63e8a}", "value": ".//option[normalize-space(.) = \"System/Added\"]"}
2020-06-23 13:37:09,945 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,946 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{077d0aed-e2c5-406d-9c5a-1f4e83b23c53}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{077d0aed-e2c5-406d-9c5a-1f4e83b23c53}"}
2020-06-23 13:37:09,950 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:09,951 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{077d0aed-e2c5-406d-9c5a-1f4e83b23c53}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{077d0aed-e2c5-406d-9c5a-1f4e83b23c53}"}
2020-06-23 13:37:10,116 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,117 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.operation"}
2020-06-23 13:37:10,125 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,126 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}"}
2020-06-23 13:37:10,130 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,130 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}"}
2020-06-23 13:37:10,135 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,135 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{028c0bb7-b8f9-4ee0-83ec-2ba044b84808}", "value": ".//option[normalize-space(.) = \"is\"]"}
2020-06-23 13:37:10,147 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,147 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{74e4499d-160d-496c-a99f-df0ce3a8b824}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{74e4499d-160d-496c-a99f-df0ce3a8b824}"}
2020-06-23 13:37:10,152 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,152 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{74e4499d-160d-496c-a99f-df0ce3a8b824}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{74e4499d-160d-496c-a99f-df0ce3a8b824}"}
2020-06-23 13:37:10,296 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,297 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:10,304 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,304 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{2486c6c6-c23a-4522-a865-98e02f0c786e}/clear {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{2486c6c6-c23a-4522-a865-98e02f0c786e}"}
2020-06-23 13:37:10,380 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,380 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:10,389 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,390 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{2486c6c6-c23a-4522-a865-98e02f0c786e}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{2486c6c6-c23a-4522-a865-98e02f0c786e}", "value": ["2", "0", "0", "1", "-", "0", "1", "-", "1", "5"]}
2020-06-23 13:37:10,614 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,615 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "id", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "searchform"}
2020-06-23 13:37:10,622 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:10,623 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f0518abb-9ca9-4d6a-9491-26aa434c4f4a}/submit {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f0518abb-9ca9-4d6a-9491-26aa434c4f4a}"}
2020-06-23 13:37:11,366 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:11,366 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and not(.//td[1]/a/text()=\"system7269.Search.test.by.date.added\")]"}
2020-06-23 13:37:11,389 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:11,389 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and .//td[1]/a/text()=\"system7272.Search.test.by.date.added\"]"}
2020-06-23 13:37:11,398 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:11,398 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"url": "http://slave-08.columbia.lab.eng.brq.redhat.com/bkr/", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:12,119 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,119 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "link text", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "Show Search Options"}
2020-06-23 13:37:12,223 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,223 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{91072d13-9875-4845-bbd4-423dc92a9cd6}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{91072d13-9875-4845-bbd4-423dc92a9cd6}"}
2020-06-23 13:37:12,335 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,336 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:12,369 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,870 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:12,908 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,909 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.table"}
2020-06-23 13:37:12,917 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,918 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{5a145809-1b5b-46c2-829f-76ed123b1a34}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{5a145809-1b5b-46c2-829f-76ed123b1a34}"}
2020-06-23 13:37:12,924 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,924 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{5a145809-1b5b-46c2-829f-76ed123b1a34}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{5a145809-1b5b-46c2-829f-76ed123b1a34}"}
2020-06-23 13:37:12,932 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,933 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{5a145809-1b5b-46c2-829f-76ed123b1a34}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{5a145809-1b5b-46c2-829f-76ed123b1a34}", "value": ".//option[normalize-space(.) = \"System/Added\"]"}
2020-06-23 13:37:12,943 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,943 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{25e5f1db-2168-48c5-b120-8a21faaa5e8e}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{25e5f1db-2168-48c5-b120-8a21faaa5e8e}"}
2020-06-23 13:37:12,949 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:12,949 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{25e5f1db-2168-48c5-b120-8a21faaa5e8e}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{25e5f1db-2168-48c5-b120-8a21faaa5e8e}"}
2020-06-23 13:37:13,113 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,113 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.operation"}
2020-06-23 13:37:13,121 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,121 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}"}
2020-06-23 13:37:13,126 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,126 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}"}
2020-06-23 13:37:13,131 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,131 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{229b45f6-6ad0-44c7-bd04-8ba9c48305ee}", "value": ".//option[normalize-space(.) = \"before\"]"}
2020-06-23 13:37:13,140 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,140 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{8f4c4dfd-05d7-4cad-a186-9e48ff0104d2}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{8f4c4dfd-05d7-4cad-a186-9e48ff0104d2}"}
2020-06-23 13:37:13,145 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,145 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{8f4c4dfd-05d7-4cad-a186-9e48ff0104d2}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{8f4c4dfd-05d7-4cad-a186-9e48ff0104d2}"}
2020-06-23 13:37:13,323 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,323 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:13,331 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,331 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f3b41064-3db7-46e0-ad00-b06e27b00b68}/clear {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f3b41064-3db7-46e0-ad00-b06e27b00b68}"}
2020-06-23 13:37:13,405 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,406 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:13,417 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,418 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f3b41064-3db7-46e0-ad00-b06e27b00b68}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f3b41064-3db7-46e0-ad00-b06e27b00b68}", "value": ["2", "0", "0", "1", "-", "0", "1", "-", "1", "6"]}
2020-06-23 13:37:13,625 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,625 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "id", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "searchform"}
2020-06-23 13:37:13,632 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:13,633 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{300f3fa4-2008-47c2-8666-a6d1d07e0dd4}/submit {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{300f3fa4-2008-47c2-8666-a6d1d07e0dd4}"}
2020-06-23 13:37:14,436 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:14,437 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and not(.//td[1]/a/text()=\"system7269.Search.test.by.date.added\")]"}
2020-06-23 13:37:14,474 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:14,475 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and .//td[1]/a/text()=\"system7272.Search.test.by.date.added\"]"}
2020-06-23 13:37:14,487 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:14,488 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"url": "http://slave-08.columbia.lab.eng.brq.redhat.com/bkr/", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:15,367 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:15,367 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "link text", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "Show Search Options"}
2020-06-23 13:37:15,503 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:15,503 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f8096435-ab22-46bd-8d90-5aee44234caa}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f8096435-ab22-46bd-8d90-5aee44234caa}"}
2020-06-23 13:37:15,647 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:15,647 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:15,662 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,164 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:16,221 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,221 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.table"}
2020-06-23 13:37:16,231 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,232 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{89dea461-9590-4f4e-bc36-a3a8b870b72b}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{89dea461-9590-4f4e-bc36-a3a8b870b72b}"}
2020-06-23 13:37:16,240 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,240 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{89dea461-9590-4f4e-bc36-a3a8b870b72b}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{89dea461-9590-4f4e-bc36-a3a8b870b72b}"}
2020-06-23 13:37:16,245 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,246 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{89dea461-9590-4f4e-bc36-a3a8b870b72b}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{89dea461-9590-4f4e-bc36-a3a8b870b72b}", "value": ".//option[normalize-space(.) = \"System/Added\"]"}
2020-06-23 13:37:16,258 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,258 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{ed98aaf4-c0d4-4223-b4b1-81e67e2faf68}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{ed98aaf4-c0d4-4223-b4b1-81e67e2faf68}"}
2020-06-23 13:37:16,265 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,266 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{ed98aaf4-c0d4-4223-b4b1-81e67e2faf68}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{ed98aaf4-c0d4-4223-b4b1-81e67e2faf68}"}
2020-06-23 13:37:16,454 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,455 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.operation"}
2020-06-23 13:37:16,469 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,469 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}"}
2020-06-23 13:37:16,475 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,475 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}"}
2020-06-23 13:37:16,481 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,481 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{e2c0d25b-28d2-488c-b3d8-72b6df886c9d}", "value": ".//option[normalize-space(.) = \"after\"]"}
2020-06-23 13:37:16,492 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,492 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{b865d5d2-1a9c-41a6-9575-6e47cb2910ed}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{b865d5d2-1a9c-41a6-9575-6e47cb2910ed}"}
2020-06-23 13:37:16,497 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,498 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:16,504 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,504 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{d80bde5a-e5f9-4b17-8d25-8e74a255e326}/clear {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{d80bde5a-e5f9-4b17-8d25-8e74a255e326}"}
2020-06-23 13:37:16,590 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,590 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:16,602 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,602 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{d80bde5a-e5f9-4b17-8d25-8e74a255e326}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{d80bde5a-e5f9-4b17-8d25-8e74a255e326}", "value": ["2", "0", "2", "0", "-", "1", "2", "-", "3", "1"]}
2020-06-23 13:37:16,831 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,832 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "id", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "searchform"}
2020-06-23 13:37:16,838 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:16,839 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{030fb281-c1fa-49af-a8cf-610c3a9d6a67}/submit {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{030fb281-c1fa-49af-a8cf-610c3a9d6a67}"}
2020-06-23 13:37:17,578 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:17,579 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and not(.//td)]"}
2020-06-23 13:37:17,600 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:17,601 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/url {"url": "http://slave-08.columbia.lab.eng.brq.redhat.com/bkr/", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932"}
2020-06-23 13:37:18,369 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:18,369 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "link text", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "Show Search Options"}
2020-06-23 13:37:18,463 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:18,464 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{226219ff-96d1-407e-828a-dcb88ed39d9c}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{226219ff-96d1-407e-828a-dcb88ed39d9c}"}
2020-06-23 13:37:18,576 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:18,577 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:18,605 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,106 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/execute {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "args": [], "script": "return jQuery(\"#searchform\").is(\":animated\")"}
2020-06-23 13:37:19,152 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,152 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.table"}
2020-06-23 13:37:19,164 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,164 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{d21adb38-5450-4736-b875-f4c3f1987408}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{d21adb38-5450-4736-b875-f4c3f1987408}"}
2020-06-23 13:37:19,171 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,172 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{d21adb38-5450-4736-b875-f4c3f1987408}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{d21adb38-5450-4736-b875-f4c3f1987408}"}
2020-06-23 13:37:19,178 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,179 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{d21adb38-5450-4736-b875-f4c3f1987408}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{d21adb38-5450-4736-b875-f4c3f1987408}", "value": ".//option[normalize-space(.) = \"System/Added\"]"}
2020-06-23 13:37:19,199 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,199 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f05c89a4-d6b2-422a-8222-8a1e7a8f8fb8}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f05c89a4-d6b2-422a-8222-8a1e7a8f8fb8}"}
2020-06-23 13:37:19,207 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,207 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{f05c89a4-d6b2-422a-8222-8a1e7a8f8fb8}/click {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{f05c89a4-d6b2-422a-8222-8a1e7a8f8fb8}"}
2020-06-23 13:37:19,372 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,372 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.operation"}
2020-06-23 13:37:19,383 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,383 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{8fe73fbe-31f7-4784-a49d-4399498555b8}/name {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{8fe73fbe-31f7-4784-a49d-4399498555b8}"}
2020-06-23 13:37:19,390 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,390 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{8fe73fbe-31f7-4784-a49d-4399498555b8}/attribute/multiple {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "name": "multiple", "id": "{8fe73fbe-31f7-4784-a49d-4399498555b8}"}
2020-06-23 13:37:19,400 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,401 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{8fe73fbe-31f7-4784-a49d-4399498555b8}/elements {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{8fe73fbe-31f7-4784-a49d-4399498555b8}", "value": ".//option[normalize-space(.) = \"after\"]"}
2020-06-23 13:37:19,414 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,415 selenium.webdriver.remote.remote_connection DEBUG GET http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{0098e5e5-b4fd-400d-bad4-703dd843460a}/selected {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{0098e5e5-b4fd-400d-bad4-703dd843460a}"}
2020-06-23 13:37:19,421 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,421 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:19,430 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,430 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{6077c799-4831-4051-945b-a25d178dcbaa}/clear {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{6077c799-4831-4051-945b-a25d178dcbaa}"}
2020-06-23 13:37:19,528 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,529 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "name", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "systemsearch-0.value"}
2020-06-23 13:37:19,537 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,538 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{6077c799-4831-4051-945b-a25d178dcbaa}/value {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{6077c799-4831-4051-945b-a25d178dcbaa}", "value": ["2", "0", "2", "0", "-", "0", "6", "-", "2", "0"]}
2020-06-23 13:37:19,796 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,797 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "id", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "searchform"}
2020-06-23 13:37:19,803 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:19,804 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element/{4fc58354-e668-4e7c-908a-aabdc55caa6d}/submit {"sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "id": "{4fc58354-e668-4e7c-908a-aabdc55caa6d}"}
2020-06-23 13:37:20,692 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:20,692 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and not(.//td[1]/a/text()=\"system7272.Search.test.by.date.added\")]"}
2020-06-23 13:37:20,706 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2020-06-23 13:37:20,706 selenium.webdriver.remote.remote_connection DEBUG POST http://127.0.0.1:57609/hub/session/dcb0b267-e20e-4b84-b4bf-d342ffdf9932/element {"using": "xpath", "sessionId": "dcb0b267-e20e-4b84-b4bf-d342ffdf9932", "value": "//table[@id=\"widget\" and .//td[1]/a/text()=\"system7269.Search.test.by.date.added\"]"}
2020-06-23 13:37:35,766 selenium.webdriver.remote.remote_connection DEBUG Finished Request
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 2270 tests in 7811.159s

FAILED (SKIP=18, errors=1)
5468.35user 751.70system 2:10:14elapsed 79%CPU (0avgtext+0avgdata 682248maxresident)k
70016inputs+25532872outputs (153major+128993488minor)pagefaults 0swaps

Expected behavior
All good.

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

[BUG] result="New" status="Completed" is reported for tasks that are finished but didn't provide any result

Describe the bug
result="New" status="Completed" is reported for tasks that are finished but didn't provide any result. If there's no result provided it should be considered as "misconfiguration" and "Warn" result should be set.

Version-Release number
28.2

To Reproduce
Steps to reproduce the behavior:

  1. Create a Beaker task which exits with zero return code
  2. Execute such task in Beaker job with restraint harness
  3. Wait for the submitted job to finish
  4. Check result and status of the task

Actual behavior
result="New" status="Completed" is reported

Expected behavior
result="Warn" status="Completed" is reported

Additional context
I think that this behaviour was implemented in past in beah.
Restraint checks for the return code of the test executed and if it's non-zero then result="Warn" status="Aborted" is set.
The issue with the "New" result is that it's sometimes available also in other cases when the status is "Completed" but the result is not yet updated, so any kind of automation has to wait for both status="Complete" (or "Aborted") and result being something else than "New" to consider the task as really finished and be able to get the real result. If the "New" result stays, the automation has no way to know if the result will change in future or if it will stay as reported in this issue.

Also this may be a restraint bug which could be also resolved by restraint reporting the result first and then letting the Beaker know that the status should be "Complete", but I haven't checked the restraint code nor the API for task updates and if it's even possible to do it in this order.

[RFE] Hide password in power management

Is your feature request related to a problem? Please describe.
The password in power management is exposed.

Describe the solution you'd like
Password will be hidden by default and the user can toggle to actually see it.

Additional context
image

[BUG] beaker-expire-distros --remove-all failed

Describe the bug
During maintenance we tried to remove all distributions from Lab Controller so we can replace all distros with new location. Execution of beaker-expire-distros --remove-all failed with the following error:
All distros are missing! Please check your server!

Version-Release number
27.4

To Reproduce
Run beaker-expire-distros --remove-all

Actual behavior
Error occurs

Expected behavior
All distro_trees are removed from given Lab Controller

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

[RFE] Ability to control key,value over the HTTP API

Is your feature request related to a problem? Please describe.

Hi all, I'm part of virt team at RH and we provide machines to the virt team with Beaker, using both automatic and manual. I'm not sure if this is the proper place and/or this is something that is already implemented, but we haven't found a nice solution yet, So, for us, would be nice to have better visibility of our loans to avoid having idle machines in someone's held. An automatic user notification, to check if we can get back the machines (even when using the manual) would be nice. With more control about the notification system (message, when, ignore flags, etc..).

Describe the solution you'd like

We are thinking about creating some kind of command-line wrapper/client to beaker to get some information and act on. Not sure if the "key,value" feature was designed to that, but we thought that we could use this to store some information (like tags) and get this via HTTP API. Looking to the project documentation we haven't found ways to see/change the 'key, value' information. Is that possible today? Or to be implemented?

Describe alternatives you've considered

Would also be nice to have more control over the loan on the web interface (for instance: how long do you intend to use this machine?)

Thanks in advance

[BUG] system_post snippet not used by Beaker

Describe the bug
We have a system_post file defined in /etc/beaker/snippets, but it does not seem to be used when provisioning systems.
It doesn't appear in our anaconda-ks.cfg files, and the tasks in system_post are not executed when the installation is completed.

All other snippets appear to be used/executed correctly.

Beaker version: 28.2

To Reproduce
Steps to reproduce the behavior:

  1. Populate /etc/beaker/snippets with the "snippets" directory found here
  2. Run an automatic or manual provision on a system with RHEL 7 as the distro.
  3. Wait for the installation to complete.
  4. Log into the test node you provisioned.
  5. Observe the anaconda-ks.cfg and original-ks.cfg files in /root and find that the system_post snippet did not get added.
  6. Also, find that the fsdp_setup folder is not present in /root, even though that is the expected result of the system_post tasks being run.

Actual behavior
The anaconda-ks.cfg and original-ks.cfg files show that all snippets were used/pulled EXCEPT for the system_post snippet.
Along with this, the fsdp_setup directory/git repository expected to be created by the tasks in system_post is not created, further supporting that this snippet is being ignored.

Expected behavior
We expect that the two files indicated above will show the contents of the system_post snippet, showing that the anaconda kickstarter file did in fact use the system_post snippet and execute it after installation.

In addition, we expect a directory called fsdp_setup to be present in \root, as this indicates the snippet is being executed.

Screenshots
Contents of anaconda-ks.cfg:

#version=DEVEL
# Use text mode install
text
# Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts=''
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --hostname=node-06.ofa.iol.unh.edu --activate
# Reboot after installation
reboot
repo --name="beaker-Server-HighAvailability" --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/HighAvailability --cost=100
repo --name="beaker-Server-ResilientStorage" --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/ResilientStorage --cost=100
repo --name="beaker-Server" --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/ --cost=100
repo --name="Server-HighAvailability" --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd//addons/HighAvailability
repo --name="Server-ResilientStorage" --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd//addons/ResilientStorage
# Use network installation
url --url="http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/"
# Root password
rootpw --iscrypted $1$yocb6JIG$ehIHzyAnTlqiCfm.jDx3f/
# SELinux configuration
selinux --enforcing
# System services
services --enabled="chronyd"
# Do not configure the X Window System
skipx
# System timezone
timezone America/New_York --ntpservers=gateway
# System bootloader configuration
bootloader --append="console=ttyS0,115200n8 crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel

%pre --logfile=/dev/console
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi

# Check in with Beaker Server
fetch - http://beaker.ofa.iol.unh.edu:8000/install_start/278

if command -v python3 >/dev/null ; then
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
   python_command="python3"
elif [ -f /usr/libexec/platform-python ] && \
     /usr/libexec/platform-python --version 2>&1 | grep -q "Python 3" ; then
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
   python_command="/usr/libexec/platform-python"
else
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon
   python_command="python"
fi
$python_command /tmp/anamon --recipe-id 278 --xmlrpc-url 'http://beaker.ofa.iol.unh.edu:8000/RPC2'
# no snippet data for RedHatEnterpriseLinux7_pre
# no snippet data for RedHatEnterpriseLinux_pre
%end

%post --logfile=/dev/console
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi

# Check in with Beaker Server, let it know our hostname, and
# record our install time.

# We will try a number of different places to figure out the system's FQDN.
# In all cases we will only accept a real FQDN (no "localhost", and must have
# a domain portion). DNS is our preferred source, otherwise the installer
# should have stored a hostname in /etc based on the kickstart or DHCP info.
# As a last resort we will use the system's first IP address.
function find_fqdn() {
    local fqdn=
    # hostname -f is the most future-proof approach, but it isn't always reliable
    fqdn=$(hostname -f)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Preferred fallback if the OS is recent enough to provide it
    fqdn=$(cat /etc/hostname)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Red Hat-based systems prior to systemd will have this
    fqdn=$(grep ^HOSTNAME= /etc/sysconfig/network | cut -f2- -d=)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Getting desperate... pick the first local IP address
    ipaddr=$(hostname -i)
    if [[ "$ipaddr" != "127.0.0.1" ]] ; then echo "$ipaddr" ; return ; fi
    # Getting even more desperate (RHEL5 and earlier)
    ip addr show | grep -v ' lo' | grep -Po '(?<=inet )[0-9.]+'
}
REPORTED_FQDN=$(find_fqdn)
fetch - "http://beaker.ofa.iol.unh.edu:8000/install_done/278/$REPORTED_FQDN"
fetch - http://beaker.ofa.iol.unh.edu:8000/nopxe/node-06.ofa.iol.unh.edu
echo 278 > /root/RECIPE.TXT

# If netboot_method= is found in /proc/cmdline record it to /root
netboot_method=$(grep -oP "(?<=netboot_method=)[^\s]+(?=)" /proc/cmdline)
if [ -n "$netboot_method" ]; then
echo $netboot_method >/root/NETBOOT_METHOD.TXT
fi

# Enable post-install boot notification

if command -v python3 >/dev/null ; then
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
elif [ -f /usr/libexec/platform-python ] && \
     /usr/libexec/platform-python --version 2>&1 | grep -q "Python 3" ; then
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
    sed -i 's/#!\/usr\/bin\/python3/#!\/usr\/libexec\/platform-python/' /usr/local/sbin/anamon
else
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon
fi
chmod 755 /usr/local/sbin/anamon

# OS without `initscripts` need to use systemd
if [ -e /etc/init.d/functions ]; then
    fetch /etc/rc.d/init.d/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon.init

    chmod 755 /etc/rc.d/init.d/anamon
    if selinuxenabled &>/dev/null ; then
        restorecon /etc/rc.d/init.d/anamon /usr/local/sbin/anamon
    fi

    chkconfig --add anamon
else
    fetch /etc/systemd/system/anamon.service http://beaker.ofa.iol.unh.edu/beaker/anamon.service
    systemctl enable anamon
fi

cat << __EOT__ > /etc/sysconfig/anamon
XMLRPC_URL="http://beaker.ofa.iol.unh.edu:8000/RPC2"
RECIPE_ID="278"
LOGFILES="/var/log/boot.log /var/log/messages /var/log/dmesg"
__EOT__

if [ -f /etc/sysconfig/readahead ] ; then
    :
    cat >>/etc/sysconfig/readahead <<EOF

# readahead conflicts with auditd, see bug 561486 for detailed explanation.
#
# Should a task need to change these settings, it must revert to this state
# when test is done.

READAHEAD_COLLECT="no"
READAHEAD_COLLECT_ON_RPM="no"
EOF
fi
systemctl disable systemd-readahead-collect.service

if [ -e /etc/sysconfig/ntpdate ] ; then
    systemctl enable ntpdate.service
fi
if [ -e "/etc/sysconfig/ntpd" ]; then
    systemctl enable ntpd.service
    GOT_G=$(/bin/cat /etc/sysconfig/ntpd | grep -E '^OPTIONS' | grep '\-g')

    if [ -z "$GOT_G" ]; then
        /bin/sed -i -r 's/(^OPTIONS\s*=\s*)(['\''|"])(.+)$/\1\2\-x \3 /' /etc/sysconfig/ntpd
    fi
fi
if [ -e /etc/chrony.conf ] ; then
    cp /etc/chrony.conf{,.orig}
    # use only DHCP-provided time servers, no default pool servers
    sed -i '/^server /d' /etc/chrony.conf
    cp /etc/sysconfig/network{,.orig}
    # setting iburst should speed up initial sync
    # https://bugzilla.redhat.com/show_bug.cgi?id=787042#c12
    echo NTPSERVERARGS=iburst >>/etc/sysconfig/network
    systemctl disable ntpd.service
    systemctl disable ntpdate.service
    systemctl enable chronyd.service
    systemctl enable chrony-wait.service
fi

if efibootmgr &>/dev/null ; then
    # grab the PXE IPv4 FlexibleLOM from the boot order
    bootnum=$(efibootmgr | grep "Embedded FlexibleLOM 1 Port 1 : HPE Ethernet 1Gb 4-port 366FLR Adapter - NIC (PXE IPv4)")  
    # trim the actual boot order number from the value
    bootnum=${bootnum:4:5}
    bootnum=${bootnum:0:4}
    
    # extract the bootnum out of the boot order and put it at the front:
    boot_order=$(efibootmgr | awk '/BootOrder/ { print $2 }')
    boot_order_test=${boot_order//$bootnum,}
    #if boot device is at the end of the list,
    if [ "$boot_order_test" = "$boot_order" ]; then
        new_boot_order=${boot_order//$bootnum}
        new_boot_order=${bootnum},${new_boot_order}
        new_boot_order=${new_boot_order:: -1}
    else # device is in middle or beginning of the list.
        new_boot_order=${boot_order//$bootnum,}
        new_boot_order=${bootnum},${new_boot_order}
    fi
    # Change the boot order to boot from network boot.
    efibootmgr -o "$new_boot_order"
fi


#Add Task Repo
cat <<"EOF" >/etc/yum.repos.d/beaker-tasks.repo
[beaker-tasks]
name=beaker-tasks
baseurl=http://beaker.ofa.iol.unh.edu/repos/278
enabled=1
gpgcheck=0
skip_if_unavailable=0
EOF


# Add Harness Repo
cat <<"EOF" >/etc/yum.repos.d/beaker-harness.repo
[beaker-harness]
name=beaker-harness
baseurl=http://beaker.ofa.iol.unh.edu/harness/RedHatEnterpriseLinux7/
enabled=1
gpgcheck=0
EOF

# Add distro and custom Repos
cat <<"EOF" >/etc/yum.repos.d/beaker-Server-HighAvailability.repo
[beaker-Server-HighAvailability]
name=beaker-Server-HighAvailability
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/HighAvailability
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF
cat <<"EOF" >/etc/yum.repos.d/beaker-Server-ResilientStorage.repo
[beaker-Server-ResilientStorage]
name=beaker-Server-ResilientStorage
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/ResilientStorage
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF
cat <<"EOF" >/etc/yum.repos.d/beaker-Server.repo
[beaker-Server]
name=beaker-Server
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF


if command -v dnf >/dev/null ; then
   package_command="dnf"
else
   package_command="yum"
fi
# fill the yum cache and redirect output to /dev/null
# This speeds up yum because of a bug where it will update stdout too often.
# http://lists.baseurl.org/pipermail/yum-devel/2011-December/008857.html
$package_command check-update -y > /dev/null 2>&1 || true
cat <<"EOF" >/etc/profile.d/beaker-harness-env.sh
export BEAKER_LAB_CONTROLLER_URL="http://beaker.ofa.iol.unh.edu:8000/"
export BEAKER_LAB_CONTROLLER=beaker.ofa.iol.unh.edu
export BEAKER_RECIPE_ID=278
export BEAKER_HUB_URL="http://beaker.ofa.iol.unh.edu/bkr/"
EOF
cat <<"EOF" >/etc/profile.d/beaker-harness-env.csh
setenv BEAKER_LAB_CONTROLLER_URL "http://beaker.ofa.iol.unh.edu:8000/"
setenv BEAKER_LAB_CONTROLLER beaker.ofa.iol.unh.edu
setenv BEAKER_RECIPE_ID 278
setenv BEAKER_HUB_URL "http://beaker.ofa.iol.unh.edu/bkr/"
EOF

if command -v dnf >/dev/null ; then
   package_command="dnf"
else
   package_command="yum"
fi
$package_command -y install restraint-rhts

#Add test user account
useradd --password '$6$oIW3o2Mr$XbWZKaM7nA.cQqudfDJScupXOia5h1u517t6Htx/Q/MgXm82Pc/OcytatTeI4ULNWOMJzvpCigWiL4xKP9PX4.' test
cat <<"EOF" >/etc/profile.d/beaker.sh
export BEAKER="http://beaker.ofa.iol.unh.edu/bkr/"
export BEAKER_JOB_WHITEBOARD='Reserve Workflow provision of distro Red Hat Enterprise Linux 7.9 on a specific system for 1 hour'
export BEAKER_RECIPE_WHITEBOARD=''
EOF
cat <<"EOF" >/etc/profile.d/beaker.csh
setenv BEAKER "http://beaker.ofa.iol.unh.edu/bkr/"
setenv BEAKER_JOB_WHITEBOARD 'Reserve Workflow provision of distro Red Hat Enterprise Linux 7.9 on a specific system for 1 hour'
setenv BEAKER_RECIPE_WHITEBOARD ''
EOF
cat << EOF > /etc/profile.d/rh-env.sh
export LAB_CONTROLLER=beaker.ofa.iol.unh.edu
export DUMPSERVER=""

# Inside Red Hat, the NFSSERVERS variable points to mounts for each of the RHEL
# releases supported, so for example
# rhel5-nfs.blah.foo.bar.redhat.com:/export/home which would then have a
# a directory structure of <fqdn_of_test_machine>/ and in that directory
# would be freeform files that can be used in a test setting.
export NFSSERVERS=""

# The lookaside area is for non-release specific files to be downloaded.
# Generally, they are user space programs, scripts, or tests that are
# expected to work on any install and don't need a per-release area.
# All of the rdma-setup scripts are in this area inside the Red Hat cluster
export LOOKASIDE=http://builder-01.ofa.iol.unh.edu/lookaside

# This is the root directory for downloading build files.  This is not
# like something we'll need inside the OFA cluster as we don't have internal,
# private builds like we do inside Red Hat
export BUILDURL=http://download.eng.bos.redhat.com
EOF
mkdir -p /root/.ssh
cat >>/root/.ssh/authorized_keys <<"__EOF__"
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFePyDLPHQVSAxoET1gMpc6hIJ/lOPpSI8oJBtvkMJP5HH6SdmA6YWmyFyoO3MMlznAfs+4/7O5Zz3mPNIE21tOmFCH7ESEpR7fYnpkFXa9bVnFONJxFAlmJXhdQIqpMr1SR+h2b2LcGbYIAF6N6mnl+nJccoHnbUqIMafnMR0f54sN942MsPQ7tkmxQVty/8JaXiFfvappSjdFCYX8CyKtC3XXkVFMrAVrTn3Gu2Fwb415bmkIQ+bfzz1npcKz0Kg6Z3qWq5t8ALm/AFRGj+z1ln0kjRT5TNdxkeotNLdbpgouZhZMYu6/kAKSn0oCkUtUA++KFEG1OruAtonfuT3MtBykLaQq/KGfxDZWuclq9ciz+s/cnMuGXoCmsRcUv1GJ5mIxvJ9INg/3wJAyCXDOrThG3J+HTGJpdNwbOSKg4xMVhd2cqrVGGFyOpB0sur2xRy76rLmxHItQTPMnFsiYejAdJX7kKkzs0Nk95k4FSQpQPq9qekuEMXRP1QAlhk= [email protected]
__EOF__
restorecon -R /root/.ssh
chmod go-w /root /root/.ssh /root/.ssh/authorized_keys
# Disable rhts-compat for Fedora15/RHEL7 and newer.
cat >> /etc/profile.d/task-overrides-rhts.sh <<END
export RHTS_OPTION_COMPATIBLE=
export RHTS_OPTION_COMPAT_SERVICE=
END
# no snippet data for RedHatEnterpriseLinux7_post
# no snippet data for RedHatEnterpriseLinux_post
%end

%onerror
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi
fetch - http://beaker.ofa.iol.unh.edu:8000/install_fail/278
sleep 10
%end

%post
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi
# Check in with Beaker Server, record our postinstall time.
fetch - http://beaker.ofa.iol.unh.edu:8000/postinstall_done/278
# Give anamon a chance to finish collecting logs.
sleep 10
%end

%packages --ignoremissing
atop
bash-completion
bonnie++
chrony
dbench
ftop
git-all
htop
ibutils
iftop
infiniband-diags
iotop
iperf3
iscsi-initiator-utils
kexec-tools
latencytop-tui
libcxgb4
libhfi1
libibverbs-utils
libmlx4
libmlx5
libpsm2
librdmacm-utils
netperf
nfs-utils
ntop
numatop
nuttcp
opa-address-resolution
opa-basic-tools
opa-ff
pciutils
perf
perftest
qperf
sockperf
srptools
tiotest
tiptop
uperf
vim-X11
vim-enhanced

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

Contents of original-ks.cfg:

url --url=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/

text
# System bootloader configuration
bootloader --location=mbr --append="console=ttyS0,115200n8"
network --bootproto=dhcp --hostname=node-02.ofa.iol.unh.edu

repo --name=beaker-Server-HighAvailability --cost=100 --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/HighAvailability
repo --name=beaker-Server-ResilientStorage --cost=100 --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/ResilientStorage
repo --name=beaker-Server --cost=100 --baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/

firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US.UTF-8

reboot
#Root password
rootpw --iscrypted $1$yocb6JIG$ehIHzyAnTlqiCfm.jDx3f/
# SELinux configuration
selinux --enforcing


timezone America/New_York

zerombr
clearpart --all --initlabel

autopart
# no snippet data for RedHatEnterpriseLinux7
# no snippet data for RedHatEnterpriseLinux
repo --name=epel --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=x86_64 --install --noverifyssl

%packages --ignoremissing
# Task requirements will be installed by the harness
# Generally useful OS tools
pciutils
nfs-utils
iscsi-initiator-utils
git-all
bash-completion
vim-X11
vim-enhanced

# Overall RDMA tools
libibverbs-utils
librdmacm-utils
infiniband-diags
ibutils
srptools

# Driver specific packages
libmlx4
libmlx5
libcxgb4
libhfi1
opa-ff
opa-address-resolution
opa-basic-tools
libpsm2

# Performance testers for RDMA
qperf
perftest

# Additional packages...not in base RHEL, requires EPEL to be enabled
perf
iperf3
uperf
sockperf
nuttcp
netperf
atop
ftop
htop
iftop
iotop
latencytop-tui
ntop
numatop
tiptop
bonnie++
dbench
tiotest
chrony
%end



%pre --log=/dev/console
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi

# Check in with Beaker Server
fetch - http://beaker.ofa.iol.unh.edu:8000/install_start/279

if command -v python3 >/dev/null ; then
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
   python_command="python3"
elif [ -f /usr/libexec/platform-python ] && \
     /usr/libexec/platform-python --version 2>&1 | grep -q "Python 3" ; then
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
   python_command="/usr/libexec/platform-python"
else
   fetch /tmp/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon
   python_command="python"
fi
$python_command /tmp/anamon --recipe-id 279 --xmlrpc-url 'http://beaker.ofa.iol.unh.edu:8000/RPC2'
# no snippet data for RedHatEnterpriseLinux7_pre
# no snippet data for RedHatEnterpriseLinux_pre
%end

%post --log=/dev/console
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi

# Check in with Beaker Server, let it know our hostname, and
# record our install time.

# We will try a number of different places to figure out the system's FQDN.
# In all cases we will only accept a real FQDN (no "localhost", and must have
# a domain portion). DNS is our preferred source, otherwise the installer
# should have stored a hostname in /etc based on the kickstart or DHCP info.
# As a last resort we will use the system's first IP address.
function find_fqdn() {
    local fqdn=
    # hostname -f is the most future-proof approach, but it isn't always reliable
    fqdn=$(hostname -f)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Preferred fallback if the OS is recent enough to provide it
    fqdn=$(cat /etc/hostname)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Red Hat-based systems prior to systemd will have this
    fqdn=$(grep ^HOSTNAME= /etc/sysconfig/network | cut -f2- -d=)
    if [[ "$fqdn" == *.* && "$fqdn" != localhost.* ]] ; then echo "$fqdn" ; return ; fi
    # Getting desperate... pick the first local IP address
    ipaddr=$(hostname -i)
    if [[ "$ipaddr" != "127.0.0.1" ]] ; then echo "$ipaddr" ; return ; fi
    # Getting even more desperate (RHEL5 and earlier)
    ip addr show | grep -v ' lo' | grep -Po '(?<=inet )[0-9.]+'
}
REPORTED_FQDN=$(find_fqdn)
fetch - "http://beaker.ofa.iol.unh.edu:8000/install_done/279/$REPORTED_FQDN"
fetch - http://beaker.ofa.iol.unh.edu:8000/nopxe/node-02.ofa.iol.unh.edu
echo 279 > /root/RECIPE.TXT

# If netboot_method= is found in /proc/cmdline record it to /root
netboot_method=$(grep -oP "(?<=netboot_method=)[^\s]+(?=)" /proc/cmdline)
if [ -n "$netboot_method" ]; then
echo $netboot_method >/root/NETBOOT_METHOD.TXT
fi

# Enable post-install boot notification

if command -v python3 >/dev/null ; then
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
elif [ -f /usr/libexec/platform-python ] && \
     /usr/libexec/platform-python --version 2>&1 | grep -q "Python 3" ; then
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon3
    sed -i 's/#!\/usr\/bin\/python3/#!\/usr\/libexec\/platform-python/' /usr/local/sbin/anamon
else
    fetch /usr/local/sbin/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon
fi
chmod 755 /usr/local/sbin/anamon

# OS without `initscripts` need to use systemd
if [ -e /etc/init.d/functions ]; then
    fetch /etc/rc.d/init.d/anamon http://beaker.ofa.iol.unh.edu/beaker/anamon.init

    chmod 755 /etc/rc.d/init.d/anamon
    if selinuxenabled &>/dev/null ; then
        restorecon /etc/rc.d/init.d/anamon /usr/local/sbin/anamon
    fi

    chkconfig --add anamon
else
    fetch /etc/systemd/system/anamon.service http://beaker.ofa.iol.unh.edu/beaker/anamon.service
    systemctl enable anamon
fi

cat << __EOT__ > /etc/sysconfig/anamon
XMLRPC_URL="http://beaker.ofa.iol.unh.edu:8000/RPC2"
RECIPE_ID="279"
LOGFILES="/var/log/boot.log /var/log/messages /var/log/dmesg"
__EOT__

if [ -f /etc/sysconfig/readahead ] ; then
    :
    cat >>/etc/sysconfig/readahead <<EOF

# readahead conflicts with auditd, see bug 561486 for detailed explanation.
#
# Should a task need to change these settings, it must revert to this state
# when test is done.

READAHEAD_COLLECT="no"
READAHEAD_COLLECT_ON_RPM="no"
EOF
fi
systemctl disable systemd-readahead-collect.service

if [ -e /etc/sysconfig/ntpdate ] ; then
    systemctl enable ntpdate.service
fi
if [ -e "/etc/sysconfig/ntpd" ]; then
    systemctl enable ntpd.service
    GOT_G=$(/bin/cat /etc/sysconfig/ntpd | grep -E '^OPTIONS' | grep '\-g')

    if [ -z "$GOT_G" ]; then
        /bin/sed -i -r 's/(^OPTIONS\s*=\s*)(['\''|"])(.+)$/\1\2\-x \3 /' /etc/sysconfig/ntpd
    fi
fi
if [ -e /etc/chrony.conf ] ; then
    cp /etc/chrony.conf{,.orig}
    # use only DHCP-provided time servers, no default pool servers
    sed -i '/^server /d' /etc/chrony.conf
    cp /etc/sysconfig/network{,.orig}
    # setting iburst should speed up initial sync
    # https://bugzilla.redhat.com/show_bug.cgi?id=787042#c12
    echo NTPSERVERARGS=iburst >>/etc/sysconfig/network
    systemctl disable ntpd.service
    systemctl disable ntpdate.service
    systemctl enable chronyd.service
    systemctl enable chrony-wait.service
fi

if efibootmgr &>/dev/null ; then
    # grab the PXE IPv4 FlexibleLOM from the boot order
    bootnum=$(efibootmgr | grep "Embedded FlexibleLOM 1 Port 1 : HPE Ethernet 1Gb 4-port 366FLR Adapter - NIC (PXE IPv4)")  
    # trim the actual boot order number from the value
    bootnum=${bootnum:4:5}
    bootnum=${bootnum:0:4}
    
    # extract the bootnum out of the boot order and put it at the front:
    boot_order=$(efibootmgr | awk '/BootOrder/ { print $2 }')
    boot_order_test=${boot_order//$bootnum,}
    #if boot device is at the end of the list,
    if [ "$boot_order_test" = "$boot_order" ]; then
        new_boot_order=${boot_order//$bootnum}
        new_boot_order=${bootnum},${new_boot_order}
        new_boot_order=${new_boot_order:: -1}
    else # device is in middle or beginning of the list.
        new_boot_order=${boot_order//$bootnum,}
        new_boot_order=${bootnum},${new_boot_order}
    fi
    # Change the boot order to boot from network boot.
    efibootmgr -o "$new_boot_order"
fi


#Add Task Repo
cat <<"EOF" >/etc/yum.repos.d/beaker-tasks.repo
[beaker-tasks]
name=beaker-tasks
baseurl=http://beaker.ofa.iol.unh.edu/repos/279
enabled=1
gpgcheck=0
skip_if_unavailable=0
EOF


# Add Harness Repo
cat <<"EOF" >/etc/yum.repos.d/beaker-harness.repo
[beaker-harness]
name=beaker-harness
baseurl=http://beaker.ofa.iol.unh.edu/harness/RedHatEnterpriseLinux7/
enabled=1
gpgcheck=0
EOF

# Add distro and custom Repos
cat <<"EOF" >/etc/yum.repos.d/beaker-Server-HighAvailability.repo
[beaker-Server-HighAvailability]
name=beaker-Server-HighAvailability
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/HighAvailability
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF
cat <<"EOF" >/etc/yum.repos.d/beaker-Server-ResilientStorage.repo
[beaker-Server-ResilientStorage]
name=beaker-Server-ResilientStorage
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/addons/ResilientStorage
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF
cat <<"EOF" >/etc/yum.repos.d/beaker-Server.repo
[beaker-Server]
name=beaker-Server
baseurl=http://beaker.ofa.iol.unh.edu/distros/rhel-server-7.9-x86_64-dvd/
enabled=1
gpgcheck=0
skip_if_unavailable=1
EOF


if command -v dnf >/dev/null ; then
   package_command="dnf"
else
   package_command="yum"
fi
# fill the yum cache and redirect output to /dev/null
# This speeds up yum because of a bug where it will update stdout too often.
# http://lists.baseurl.org/pipermail/yum-devel/2011-December/008857.html
$package_command check-update -y > /dev/null 2>&1 || true
cat <<"EOF" >/etc/profile.d/beaker-harness-env.sh
export BEAKER_LAB_CONTROLLER_URL="http://beaker.ofa.iol.unh.edu:8000/"
export BEAKER_LAB_CONTROLLER=beaker.ofa.iol.unh.edu
export BEAKER_RECIPE_ID=279
export BEAKER_HUB_URL="http://beaker.ofa.iol.unh.edu/bkr/"
EOF
cat <<"EOF" >/etc/profile.d/beaker-harness-env.csh
setenv BEAKER_LAB_CONTROLLER_URL "http://beaker.ofa.iol.unh.edu:8000/"
setenv BEAKER_LAB_CONTROLLER beaker.ofa.iol.unh.edu
setenv BEAKER_RECIPE_ID 279
setenv BEAKER_HUB_URL "http://beaker.ofa.iol.unh.edu/bkr/"
EOF

if command -v dnf >/dev/null ; then
   package_command="dnf"
else
   package_command="yum"
fi
$package_command -y install restraint-rhts

#Add test user account
useradd --password '$6$oIW3o2Mr$XbWZKaM7nA.cQqudfDJScupXOia5h1u517t6Htx/Q/MgXm82Pc/OcytatTeI4ULNWOMJzvpCigWiL4xKP9PX4.' test
cat <<"EOF" >/etc/profile.d/beaker.sh
export BEAKER="http://beaker.ofa.iol.unh.edu/bkr/"
export BEAKER_JOB_WHITEBOARD='Reserve Workflow provision of distro Red Hat Enterprise Linux 7.9 on a specific system for 3600 seconds'
export BEAKER_RECIPE_WHITEBOARD=''
EOF
cat <<"EOF" >/etc/profile.d/beaker.csh
setenv BEAKER "http://beaker.ofa.iol.unh.edu/bkr/"
setenv BEAKER_JOB_WHITEBOARD 'Reserve Workflow provision of distro Red Hat Enterprise Linux 7.9 on a specific system for 3600 seconds'
setenv BEAKER_RECIPE_WHITEBOARD ''
EOF
cat << EOF > /etc/profile.d/rh-env.sh
export LAB_CONTROLLER=beaker.ofa.iol.unh.edu
export DUMPSERVER=""

# Inside Red Hat, the NFSSERVERS variable points to mounts for each of the RHEL
# releases supported, so for example
# rhel5-nfs.blah.foo.bar.redhat.com:/export/home which would then have a
# a directory structure of <fqdn_of_test_machine>/ and in that directory
# would be freeform files that can be used in a test setting.
export NFSSERVERS=""

# The lookaside area is for non-release specific files to be downloaded.
# Generally, they are user space programs, scripts, or tests that are
# expected to work on any install and don't need a per-release area.
# All of the rdma-setup scripts are in this area inside the Red Hat cluster
export LOOKASIDE=http://builder-01.ofa.iol.unh.edu/lookaside

# This is the root directory for downloading build files.  This is not
# like something we'll need inside the OFA cluster as we don't have internal,
# private builds like we do inside Red Hat
export BUILDURL=http://download.eng.bos.redhat.com
EOF
mkdir -p /root/.ssh
cat >>/root/.ssh/authorized_keys <<"__EOF__"
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFePyDLPHQVSAxoET1gMpc6hIJ/lOPpSI8oJBtvkMJP5HH6SdmA6YWmyFyoO3MMlznAfs+4/7O5Zz3mPNIE21tOmFCH7ESEpR7fYnpkFXa9bVnFONJxFAlmJXhdQIqpMr1SR+h2b2LcGbYIAF6N6mnl+nJccoHnbUqIMafnMR0f54sN942MsPQ7tkmxQVty/8JaXiFfvappSjdFCYX8CyKtC3XXkVFMrAVrTn3Gu2Fwb415bmkIQ+bfzz1npcKz0Kg6Z3qWq5t8ALm/AFRGj+z1ln0kjRT5TNdxkeotNLdbpgouZhZMYu6/kAKSn0oCkUtUA++KFEG1OruAtonfuT3MtBykLaQq/KGfxDZWuclq9ciz+s/cnMuGXoCmsRcUv1GJ5mIxvJ9INg/3wJAyCXDOrThG3J+HTGJpdNwbOSKg4xMVhd2cqrVGGFyOpB0sur2xRy76rLmxHItQTPMnFsiYejAdJX7kKkzs0Nk95k4FSQpQPq9qekuEMXRP1QAlhk= [email protected]
__EOF__
restorecon -R /root/.ssh
chmod go-w /root /root/.ssh /root/.ssh/authorized_keys
# Disable rhts-compat for Fedora15/RHEL7 and newer.
cat >> /etc/profile.d/task-overrides-rhts.sh <<END
export RHTS_OPTION_COMPATIBLE=
export RHTS_OPTION_COMPAT_SERVICE=
END
# no snippet data for RedHatEnterpriseLinux7_post
# no snippet data for RedHatEnterpriseLinux_post
%end

%onerror
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi
fetch - http://beaker.ofa.iol.unh.edu:8000/install_fail/279
sleep 10
%end

%post
set -x
# Some distros have curl in their minimal install set, others have wget.
# We define a wrapper function around the best available implementation
# so that the rest of the script can use that for making HTTP requests.
if command -v curl >/dev/null ; then
    # Older curl versions lack --retry
    if curl --help 2>&1 | grep -q .*--retry ; then
        function fetch() {
            curl -L --retry 20 --remote-time -o "$1" "$2"
        }
    else
        function fetch() {
            curl -L --remote-time -o "$1" "$2"
        }
    fi
elif command -v wget >/dev/null ; then
    # In Anaconda images wget is actually busybox
    if wget --help 2>&1 | grep -q BusyBox ; then
        function fetch() {
            wget -O "$1" "$2"
        }
    else
        function fetch() {
            wget --tries 20 -O "$1" "$2"
        }
    fi
else
    echo "No HTTP client command available!"
    function fetch() {
        false
    }
fi
# Check in with Beaker Server, record our postinstall time.
fetch - http://beaker.ofa.iol.unh.edu:8000/postinstall_done/279
# Give anamon a chance to finish collecting logs.
sleep 10
%end

Additional context

You may need to remove the snippet at ../snippets/per_osmajor/system/RedHatEnterpriseLinux7, as it causes a gpg check to fail and thus a test harness never gets pulled. You can still log into the machine and check the files regardless, but check-install will never run, thus, telling you that the install never completed. Either way, the results I describe above will be the same.

[RFE] Add ability to skip task repo if not available

Is your feature request related to a problem? Please describe.

We had a partner recently that was running into an issue setting up some repos and installing packages on a machine they had provisioned with DCI/Beaker. We traced the issue back to the beaker-tasks repo that is on the machine after Beaker is done. The partner ran a "yum clean all" and then attempted to perform some more yum commands, but ran into problems with the system not being able to get the repomd.xml for the beaker-tasks repo since it is deleted from the Beaker server from which it was served and the clean command removed the cache for it.

We understand removing the repo from the Beaker server makes sense, but our ask would be that the repo either be disabled by Beaker on the provisioned system or be skipped if it can't be found.

[RFE] Support other distributions

Is your feature request related to a problem? Please describe.
OpenFabrics is planning to use Beaker to automated RDMA kernel testing and to provide a dev/test/debug cluster for the OpenFabrics members.
As SUSE is interested in taking part in this, we would need Beaker to support other distros then RH based.
SUSE would obviously contribute for the autoyast part.

Describe the solution you'd like
Be able to deploy non RH-based distributions using Beaker

[BUG] RHVH 4.4 Installation failure due to disk capacity is not reported correctly

Describe the bug
Beaker doesn't catch anaconda error in RHVH 4.4 when disk size is not big enough for creating thinp w/ autopart

Version-Release number
26.4
To Reproduce
Schedule RHVH4.4 on a machine with 20G

Actual behavior
Installation failed. No disk capacity error is shown

Expected behavior
Installation failed. Disk capacity is shown

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

[RFE] Use Restraint as default harness across all supported distributions

Current situation

Beah is used for RHEL 5 up to RHEL 7.
Restraint is used for RHEL 8 + all Fedoras.

However, Beah is no longer developed nor supported. Last commit beaker-project/beah@3dd6d51. Almost 2 years ago.

Proposed solution

Use Restraint as default harness across all supported distros.
At this point, Restraint is in really good shape and can be used in all available distributions - RHEL 5 up to Fedora Rawhide.

There will be still the option to run Beah, however, a user has to define harness to be beah.

[RFE] Add harness packages for Fedora 36 and RHEL 9

Is your feature request related to a problem? Please describe.
Importing the Fedora 36 and RHEL 9 distros works fine and they appear in beaker but provisioning with them always fails because it couldn't find the repo containing harness packages for the distro.

Describe the solution you'd like
It would be nice if there were officially supported harness packages for these distros in the beaker-project.org/yum/harness repository so that you can simply run beaker-repo-update and import them automatically. It says in the docs that you can point it at the harness-testing repo to get harness packages that are release candidates instead but neither Fedora 36 or RHEL 9 are in there currently. Fedora 36 has been out for a little while now and 37 is on the way so it would be nice to be able to use them in future provisioning to test on newer distros.

Describe alternatives you've considered
It seems like you could substitute in another http hosted repository when using the beaker-repo-update command with the -b flag but this is undesirable as it depends on whoever may be hosting the repository to maintain it.

[BUG] beaker-import will overwrite previously stored Install Options

When doing a beaker-import it will overwrite any previously stored Install Options (Kickstart Metadata, Kernel Options, & Kernel Options Post) that may already be set for the distro.

This is problematic in environments where you may import a distro to one lab controller and then work to figure out the correct Install Options to use. Once that is done you then go to import the distro on other lab controllers and the Install Options get erased by default.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.