Metadata-Version: 2.1
Name: beaker-jobwatch
Version: 8.2
Summary: Automatically reschedules broken Beaker jobs
Author-email: CKI Team <cki-project@redhat.com>
License: GPLv2+
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: lxml
Requires-Dist: requests
Provides-Extra: dev
Requires-Dist: types-lxml; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Provides-Extra: lint
Requires-Dist: cki-lib[lint]@ git+https://gitlab.com/cki-project/cki-lib.git@production ; extra == "lint"
Provides-Extra: release
Requires-Dist: build; extra == "release"
Requires-Dist: twine; extra == "release"
Provides-Extra: test
Requires-Dist: cki-lib[test]@ git+https://gitlab.com/cki-project/cki-lib.git@production ; extra == "test"
Requires-Dist: freezegun; extra == "test"

# Beaker-jobwatch

Automatically reschedule broken Beaker jobs

## Description

beaker-jobwatch is a tool that monitors given Beaker jobs and reschedules them
automatically if they fail to finish. It can guarantee that when it's finished,
you will have a complete set of results

## Features

It can detect following problems:

- aborted recipes
- external watchdog killing a recipe
- destructive task breaking the machine
- kernel panic killing the machine
- failed /distribution/install (off by default)
- failure of a user specified task (so called critical task)
- abort of a user specified task (so called required tasks)

  A task can be aborted in the following scenarios:
  - rstrnt-abort is called in the task
  - rstrnt-abort is called in a previous task (which aborts all later tasks)
  - beaker job aborts the recipe due to external watchdog
  - restraint failed to fetch the task from the fetch URL (which does not abort all later tasks)
- file conflict during installation

Other features:

- automatically NACKs and cancels broken recipes so they don't interfere with
  result processing tools (e.g. Beaker Matrix report)
- maximum number of reschedules to prevent resource exhaustion
- status reports including list of rescheduled recipe set
- detecting destructive tasks (tasks preventing subsequent tasks from
  executing) and removing them from jobs
- measure duration of job run (overall by default, per arch in debug mode)
- broken machine exclusion (machine that broke a recipe will not be used for
  the rescheduled recipe)
- it can retry a recipe if queued for more than specified time
- it can cancel a recipe if it is running for more than specified time (no
  retry will be happen)
- it can cancel all recipes if beaker-jobwatch is running for more than specified time (no
  retry will be happen)

## Usage

```shell
beaker-jobwatch --job 123123 --job 235234
```

## Removed features

Compared to version 7.18, the following features have been removed:

- feature duplication:
  - providing Beaker username/password parameters via `--username` and
    `--password`, use a Beaker client configuration file instead
  - ability to pass jobs via stdin, use `--job` instead
- features aimed at interactive use:
  - status updates on keypress
  - not waiting for jobs to finish via `--no-wait`
  - TCMS support via `--run`, `--case` and `--refresh-jobs`
  - short parameter names `-j` and `-m`
  - using multiple comma-separated values with `--job` and `--ignore-failure`,
    specify the option multiple times instead
  - job IDs with prefixes `TJ#` or `J:`, specify the raw job ID instead
  - special handling of nacked recipes for the jobs given via `--job`
