diff --git a/contrib/rh-bkr/bkr.py b/contrib/rh-bkr/bkr.py
index efb9bc96ca..e47e05dece 100755
--- a/contrib/rh-bkr/bkr.py
+++ b/contrib/rh-bkr/bkr.py
@@ -17,7 +17,6 @@ import urllib
import glob
import uuid
import nitrate
-import sets
devnull = open(os.devnull, 'w')
@@ -53,7 +52,7 @@ def is_sequence(arg):
hasattr(arg, "__iter__"))
def seq_unique(seq):
- s = sets.Set()
+ s = set()
for i in seq:
if i not in s:
s.add(i)
@@ -592,7 +591,8 @@ class CmdSubmit(CmdBase):
self.parser.add_argument('--job', '-j', help='beaker xml job file')
self.parser.add_argument('--job-default', '-J', action='store_true', help='Use default job file. Only has effect if --job is not specified')
self.parser.add_argument('--verbose', '-v', action='count', help='print more information')
- self.parser.add_argument('--reservesys', '-R', action='store_true', help='add task /distribution/reservesys')
+ self.parser.add_argument('--reservesys', '-R', action='store_true', help='add task /distribution/reservesys (same as --reservesys-time=86400')
+ self.parser.add_argument('--reservesys-time', help='add task /distribution/reservesys with a duration in second')
self.parser.add_argument('--disable-selinux', action='store_true', help='add kernel option selinux=0 to disable AVC checks ($SELINUX_DISABLED)')
self.parser.add_argument('--var', '-V', action='append', help='Set template replacements (alternative to setting via environment variables')
self.parser.add_argument('--hosttype', help='The host type. Known values are \'veth\', \'dcb\', \'infiniband\', and \'wifi\'. Anything else uses the default. This determines the $HOSTREQUIRES template')
@@ -844,13 +844,18 @@ class CmdSubmit(CmdBase):
v = self._get_var('RESERVESYS')
if v is not None:
return v
- if not self.options.reservesys:
+ duration = self._get_var('RESERVE')
+ if self.options.reservesys:
+ duration = '86400'
+ if self.options.reservesys_time:
+ duration = self.options.reservesys_time
+ if not duration:
return ""
- return ''
+ return '' % (duration)
def _get_var_for_ARCH(self, key):
v = self._get_var('ARCH')
- if v is not None:
+ if v:
return v
v = self._get_var('DISTRO_ARCH')
if v is not None:
@@ -861,7 +866,7 @@ class CmdSubmit(CmdBase):
v = self._get_var('SELINUX_DISABLED')
if v is not None:
return v
- if self.options.disable_selinux:
+ if self.options.disable_selinux or self._get_var('SELINUX') == 'false':
return 'selinux=0'
return ''
diff --git a/contrib/rh-bkr/jenkins.sh b/contrib/rh-bkr/jenkins.sh
new file mode 100755
index 0000000000..5b4e6b4705
--- /dev/null
+++ b/contrib/rh-bkr/jenkins.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+set -e
+set -x
+
+DIR="$(dirname "$(readlink -f "$0")")"
+
+# We allow and expect the following environment variable
+# set by jenkins:
+# ARCH= // one of x86_64, ppc64, ppc64le, s390x, aarch64
+# RPM_URLS= // space separated list of --rpm arguments
+# BUILD_ID= // if non-empty, build NetworkManager from source and install it
+# RESERVE= // number of seconds to reserve the system (or empty)
+# SELINUX= // if set to 'false', boot with selinux=0
+# PROFILE=
+# HOSTYPE=
+# TESTS=
+# ARGS=
+
+RPM=()
+for r in $RPM_URLS; do
+ RPM+=(--rpm "$r")
+done
+
+if [ -n "$BUILD_ID" ]; then
+ BUILD_ID=(--build-id "$BUILD_ID")
+else
+ BUILD_ID=()
+fi
+
+if [ -n "$PROFILE" -a "$PROFILE" != "--" ]; then
+ PROFILE=(--profile "$PROFILE")
+else
+ PROFILE=()
+fi
+
+if [ -n "$HOSTTYPE" -a "$HOSTTYPE" != "--" ]; then
+ HOSTTYPE=(--hosttype "$HOSTTYPE")
+else
+ HOSTTYPE=()
+fi
+
+_ARGS=()
+for r in $ARGS; do
+ _ARGS+=("$r")
+done
+
+export WHITEBOARD="$BUILD_URL"
+
+python -u \
+ "$DIR"/bkr.py submit -v -v \
+ -J \
+ --var "WHITEBOARD=Test NetworkManager $BUILD_URL" \
+ "${RPM[@]}" \
+ "${BUILD_ID[@]}" \
+ --var "ARCH=$ARCH" \
+ --var "RESERVE=$RESERVE" \
+ --var "SELINUX=$SELINUX" \
+ "${PROFILE[@]}" \
+ "${HOSTTYPE[@]}" \
+ --var "TESTS=$TESTS" \
+ --bkr-write-job-id 'beaker_job_id' \
+ --bkr-wait-completion \
+ --bkr-job-results 'results.txt' \
+ --no-test \
+ "${_ARGS[@]}"
+