summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Client/setup.py2
-rw-r--r--Client/src/bkr/client/commands/cmd_task_delete.py94
-rw-r--r--Common/bkr/common/__init__.py2
-rw-r--r--Common/setup.py2
-rw-r--r--IntegrationTests/setup.py2
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/.composeinfo45
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/debug/tree/repodata/.emptyfile0
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/.treeinfo58
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/Packages/redhat-virtualization-host-image-update-1.0.0-1.noarch.rpmbin0 -> 6044 bytes
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3-primary.xml.gzbin0 -> 623 bytes
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c-filelists.xml.gzbin0 -> 253 bytes
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d-other.xml.gzbin0 -> 251 bytes
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/repomd.xml28
-rw-r--r--IntegrationTests/src/bkr/inttest/labcontroller/test_distro_import.py48
-rw-r--r--IntegrationTests/src/bkr/inttest/server/test_model.py16
-rw-r--r--LabController/setup.py2
-rwxr-xr-xLabController/src/bkr/labcontroller/distro_import.py6
-rw-r--r--Server/bkr/server/model/scheduler.py7
-rw-r--r--Server/setup.py2
-rw-r--r--beaker.spec4
-rw-r--r--documentation/user-guide/customizing-installation.rst25
-rw-r--r--documentation/whats-new/release-27.rst20
22 files changed, 344 insertions, 19 deletions
diff --git a/Client/setup.py b/Client/setup.py
index 40fec94..9a488d0 100644
--- a/Client/setup.py
+++ b/Client/setup.py
@@ -22,7 +22,7 @@ def bash_completion_dir():
setup(
name='beaker-client',
- version='27.3',
+ version='27.4',
description='Command-line client for interacting with Beaker',
author='Red Hat, Inc.',
author_email='beaker-devel@lists.fedorahosted.org',
diff --git a/Client/src/bkr/client/commands/cmd_task_delete.py b/Client/src/bkr/client/commands/cmd_task_delete.py
new file mode 100644
index 0000000..a86950f
--- /dev/null
+++ b/Client/src/bkr/client/commands/cmd_task_delete.py
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+"""
+.. _bkr-task-delete:
+
+bkr task-delete: Delete tasks to Beaker's task library
+======================================================
+
+.. program:: bkr task-delete
+
+Synopsis
+--------
+
+:program:`bkr task-delete` [*options*] <task_name>...
+
+Description
+-----------
+
+Deletes one or more task RPM packages to Beaker's task library. These tasks
+will be no longer available for jobs queued with the Beaker scheduler.
+
+Options
+-------
+
+Common :program:`bkr` options are described in the :ref:`Options
+<common-options>` section of :manpage:`bkr(1)`.
+
+Exit status
+-----------
+
+Non-zero on error, otherwise zero.
+
+Examples
+--------
+
+Delete a particular task::
+
+ bkr task-delete /distribution/beaker/dogfood
+
+Notes
+-----
+
+This command is only available to Beaker administrators.
+
+See also
+--------
+
+:manpage:`bkr(1)`
+"""
+
+from __future__ import print_function
+
+import json
+import sys
+
+from six.moves import xmlrpc_client
+
+from bkr.client import BeakerCommand
+
+
+class Task_Delete(BeakerCommand):
+ """
+ Delete task from task library
+ """
+ enabled = True
+
+ def options(self):
+ self.parser.usage = "%%prog %s [options] <task_name>..." % self.normalized_name
+
+ def run(self, *args, **kwargs):
+ tasks = args
+
+ self.set_hub(**kwargs)
+ failed = False
+ for task in tasks:
+ try:
+ task_id = self.hub.tasks.to_dict(task)['id']
+ output = json.loads(self.hub.tasks.disable_from_ui(task_id))
+ print('{}: {}'.format('success' if output['success'] else 'failed', task))
+ failed = not output['success']
+ except (KeyboardInterrupt, SystemExit):
+ raise
+ except xmlrpc_client.Fault as ex:
+ failed = True
+ sys.stderr.write(ex.faultString + '\n')
+ except Exception as ex:
+ failed = True
+ sys.stderr.write('Exception: %s\n' % ex)
+ exit(failed)
diff --git a/Common/bkr/common/__init__.py b/Common/bkr/common/__init__.py
index bee8df5..01951ab 100644
--- a/Common/bkr/common/__init__.py
+++ b/Common/bkr/common/__init__.py
@@ -2,4 +2,4 @@
# code in bkr.__init__), the version details are retrieved from here in
# order to correctly handle module shadowing on sys.path
-__version__ = '27.3'
+__version__ = '27.4'
diff --git a/Common/setup.py b/Common/setup.py
index d921063..9729f12 100644
--- a/Common/setup.py
+++ b/Common/setup.py
@@ -12,7 +12,7 @@ from setuptools import setup, find_packages
setup(
name='beaker-common',
- version='27.3',
+ version='27.4',
description='Common components for Beaker packages',
author='Red Hat, Inc.',
author_email='beaker-devel@lists.fedorahosted.org',
diff --git a/IntegrationTests/setup.py b/IntegrationTests/setup.py
index 8e11a57..b3374c8 100644
--- a/IntegrationTests/setup.py
+++ b/IntegrationTests/setup.py
@@ -12,7 +12,7 @@ def get_compose_layout():
setup(
name='beaker-integration-tests',
- version='27.3',
+ version='27.4',
description='Integration tests for Beaker',
author='Red Hat, Inc.',
author_email='beaker-devel@lists.fedorahosted.org',
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/.composeinfo b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/.composeinfo
new file mode 100644
index 0000000..b2692c7
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/.composeinfo
@@ -0,0 +1,45 @@
+[compose]
+date = 20200323
+id = RHVH-4.3-20200323.0
+label = RC-20200323.0
+respin = 0
+type = production
+
+[product]
+family = RHVH
+name = RHVH-4.3-20200323.0
+short = RHVH
+type = ga
+variants = RHVH
+version = 4.3
+
+[variant-RHVH]
+arches = x86_64
+id = RHVH
+name = RHVH
+type = variant
+uid = RHVH
+
+[variant-RHVH.x86_64]
+debug_dir = RHVH/x86_64/debug/tree
+debug_packages = RHVH/x86_64/debug/tree/Packages
+debug_repository = RHVH/x86_64/debug/tree
+debug_tree = RHVH/x86_64/debug/tree
+debuginfo = RHVH/x86_64/debug/tree
+iso_dir = RHVH/x86_64/iso
+isos = RHVH/x86_64/iso
+jigdo_dir = RHVH/x86_64/jigdo
+jigdos = RHVH/x86_64/jigdo
+os_dir = RHVH/x86_64/os
+os_tree = RHVH/x86_64/os
+packages = RHVH/x86_64/os/Packages
+repository = RHVH/x86_64/os
+source_dir = RHVH/source/tree
+source_iso_dir = RHVH/source/iso
+source_isos = RHVH/source/iso
+source_jigdo_dir = RHVH/source/jigdo
+source_jigdos = RHVH/source/jigdo
+source_packages = RHVH/source/tree/Packages
+source_repository = RHVH/source/tree
+source_tree = RHVH/source/tree
+
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/debug/tree/repodata/.emptyfile b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/debug/tree/repodata/.emptyfile
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/debug/tree/repodata/.emptyfile
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/.treeinfo b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/.treeinfo
new file mode 100644
index 0000000..2481029
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/.treeinfo
@@ -0,0 +1,58 @@
+[checksums]
+LiveOS/squashfs.img = sha256:c3ded74c6e0c2a1e073b4cf0944f309994793d94a2b6caffbb875c81081ee6ae
+images/boot.iso = sha256:2bb03f86c4e3a8ae1024f99e190bf8a3a0e842da4181889fa2c9f0944a3221ef
+images/product.img = sha256:0d37d61234659569203efeadc971b9af6b6c6c06405bd8f2e944473a40ffa5cc
+images/pxeboot/initrd.img = sha256:7b74dac8699c04e7d247b28d1bdfda4df279d81d03dfd1ad9bf56ef5b023c7f8
+images/pxeboot/vmlinuz = sha256:ca7fddf874856b3c99afd671e0aea30acc1f3fe095ca75b1dc432273381210a0
+
+[general]
+; WARNING.0 = This section provides compatibility with pre-productmd treeinfos.
+; WARNING.1 = Read productmd documentation for details about new format.
+arch = x86_64
+family = RHVH
+name = RHVH 4.3
+packagedir = Packages
+platforms = x86_64,xen
+repository = .
+timestamp = 1584961599
+variant = RHVH
+variants = RHVH
+version = 4.3
+
+[header]
+type = productmd.treeinfo
+version = 1.2
+
+[images-x86_64]
+boot.iso = images/boot.iso
+initrd = images/pxeboot/initrd.img
+kernel = images/pxeboot/vmlinuz
+product.img = images/product.img
+
+[images-xen]
+initrd = images/pxeboot/initrd.img
+kernel = images/pxeboot/vmlinuz
+product.img = images/product.img
+
+[release]
+name = RHVH
+short = RHVH
+version = 4.3
+
+[stage2]
+mainimage = LiveOS/squashfs.img
+
+[tree]
+arch = x86_64
+build_timestamp = 1584961599
+platforms = x86_64,xen
+variants = RHVH
+
+[variant-RHVH]
+id = RHVH
+name = RHVH
+packages = Packages
+repository = .
+type = variant
+uid = RHVH
+
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/Packages/redhat-virtualization-host-image-update-1.0.0-1.noarch.rpm b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/Packages/redhat-virtualization-host-image-update-1.0.0-1.noarch.rpm
new file mode 100644
index 0000000..63939e1
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/Packages/redhat-virtualization-host-image-update-1.0.0-1.noarch.rpm
Binary files differ
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3-primary.xml.gz b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3-primary.xml.gz
new file mode 100644
index 0000000..8325d6c
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3-primary.xml.gz
Binary files differ
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c-filelists.xml.gz b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c-filelists.xml.gz
new file mode 100644
index 0000000..c2e9888
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c-filelists.xml.gz
Binary files differ
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d-other.xml.gz b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d-other.xml.gz
new file mode 100644
index 0000000..cbf2ccf
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d-other.xml.gz
Binary files differ
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/repomd.xml b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/repomd.xml
new file mode 100644
index 0000000..16e855e
--- /dev/null
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/compose_layout/RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/repodata/repomd.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm">
+ <revision>1585308106</revision>
+ <data type="primary">
+ <checksum type="sha256">5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3</checksum>
+ <open-checksum type="sha256">9b740707a450393521856f8b15ac8e8dedc4e375a6d1f61975f8a123674517e1</open-checksum>
+ <location href="repodata/5a7f415cb1944486872b47158b3069b4ae9c3cd6a803d37a88d332cc670e76a3-primary.xml.gz"/>
+ <timestamp>1585308106</timestamp>
+ <size>623</size>
+ <open-size>1336</open-size>
+ </data>
+ <data type="filelists">
+ <checksum type="sha256">804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c</checksum>
+ <open-checksum type="sha256">2994a58d16ff98c4d314841d8f927b5c84e8833433984e15d09d1d6f8aee1f4c</open-checksum>
+ <location href="repodata/804e05b0170e258f81fff96691abdbe0d6c6a4f143b9a833d617aaad31e1505c-filelists.xml.gz"/>
+ <timestamp>1585308106</timestamp>
+ <size>253</size>
+ <open-size>323</open-size>
+ </data>
+ <data type="other">
+ <checksum type="sha256">8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d</checksum>
+ <open-checksum type="sha256">423e8fc8c24f88017ef181e2cf4159d72175fd241d5343b4badf9aacaa8ab605</open-checksum>
+ <location href="repodata/8a724cce1aea6e56ed4cf1f2a1382e258db8c0390287818b06b08d3e84c7126d-other.xml.gz"/>
+ <timestamp>1585308106</timestamp>
+ <size>251</size>
+ <open-size>319</open-size>
+ </data>
+</repomd>
diff --git a/IntegrationTests/src/bkr/inttest/labcontroller/test_distro_import.py b/IntegrationTests/src/bkr/inttest/labcontroller/test_distro_import.py
index f757756..483ad98 100644
--- a/IntegrationTests/src/bkr/inttest/labcontroller/test_distro_import.py
+++ b/IntegrationTests/src/bkr/inttest/labcontroller/test_distro_import.py
@@ -9,6 +9,7 @@ import os
import subprocess
import json
import pkg_resources
+import urlparse
from copy import copy, deepcopy
from bkr.inttest import Process
from bkr.inttest.labcontroller import LabControllerTestCase
@@ -1161,6 +1162,48 @@ class DistroImportTest(LabControllerTestCase):
u'variant': u'BaseOS',
}
+ self.x86_64_rhvh43 = {
+ u"arch": u"x86_64",
+ u"arches": [],
+ u"images": [
+ {
+ u"path": u"images/pxeboot/vmlinuz",
+ u"type": u"kernel"
+ },
+ {
+ u"path": u"images/pxeboot/initrd.img",
+ u"type": u"initrd"
+ }
+ ],
+ u"kernel_options": u" inst.stage2={}".format(urlparse.urljoin(
+ self.distro_url, u'RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os')),
+ u"kernel_options_post": None,
+ u"ks_meta": u" autopart_type=thinp liveimg=Packages/redhat-virtualization-host-image-update-1.0.0-1.noarch.rpm ks_keyword=inst.ks",
+ u"name": u"RHVH-4.3-20200323.0",
+ u"osmajor": u"RHVH4",
+ u"osminor": u"3",
+ u"repos": [
+ {
+ u"path": u"../../../RHVH/x86_64/os",
+ u"repoid": u"RHVH",
+ u"type": u"variant"
+ },
+ {
+ u"path": u"../../../RHVH/x86_64/debug/tree",
+ u"repoid": u"RHVH-debuginfo",
+ u"type": u"debug"
+ }
+ ],
+ u"tags": [
+ u"RC-20200323.0"
+ ],
+ u"tree_build_time": u"1584961599",
+ u"urls": [
+ u"{}".format(urlparse.urljoin(self.distro_url, u'RHVH4/RHVH-4.3-20200323.0/compose/RHVH/x86_64/os/'))
+ ],
+ u"variant": u"RHVH"
+ }
+
def _run_import(self, import_args):
p = subprocess.Popen(import_args,
stdout=subprocess.PIPE,
@@ -1486,3 +1529,8 @@ class DistroImportTest(LabControllerTestCase):
def test_rhel8_partner_import(self):
trees = self.dry_run_import_trees(['%sRHEL8Alpha/Partners/RHEL-8.0-20180531.2/compose' % self.distro_url])
self.assertItemsEqual(trees, [self.x86_64_rhel8_partner])
+
+ def test_rhvh43_import(self):
+ trees = self.dry_run_import_trees(['{}'.format(urlparse.urljoin(self.distro_url,
+ 'RHVH4/RHVH-4.3-20200323.0/compose'))])
+ self.assertItemsEqual(trees, [self.x86_64_rhvh43])
diff --git a/IntegrationTests/src/bkr/inttest/server/test_model.py b/IntegrationTests/src/bkr/inttest/server/test_model.py
index fc9db8a..9a9c335 100644
--- a/IntegrationTests/src/bkr/inttest/server/test_model.py
+++ b/IntegrationTests/src/bkr/inttest/server/test_model.py
@@ -1383,12 +1383,24 @@ class DistroTreeTest(DatabaseTestCase):
self.assertRaises(ValueError, lambda: distro_tree.url_in_lab(
self.lc, scheme=['http', 'nfs'], required=True))
- def provision_distro_tree(self, distro_tree):
- recipe = data_setup.create_recipe(distro_tree=distro_tree)
+ def provision_distro_tree(self, distro_tree, ks_meta=None):
+ recipe = data_setup.create_recipe(distro_tree=distro_tree, ks_meta=ks_meta)
data_setup.create_job_for_recipes([recipe])
data_setup.mark_recipe_waiting(recipe, lab_controller=self.lc)
return recipe
+ def test_ksmeta_ks_keyword(self):
+ # Test that the 'ks_keyword' variable when put in the ks_meta attribute
+ # changes the name of the value used to specify the kickstart.
+ distro_rhel6 = data_setup.create_distro(osmajor=u'RedHatEnterpriseLinux6',
+ osminor=u'5')
+ rhel6_ppc64 = data_setup.create_distro_tree(distro=distro_rhel6,
+ arch=u'ppc64')
+ r1 = self.provision_distro_tree(rhel6_ppc64, ks_meta="ks_keyword=preseed/url")
+ self.assertIn('preseed/url=http://', r1.installation.kernel_options)
+ self.assertNotIn('ks=', r1.installation.kernel_options)
+
+
def test_custom_netbootloader(self):
# ppc64, RHEL 6
diff --git a/LabController/setup.py b/LabController/setup.py
index e5e25b3..291e81c 100644
--- a/LabController/setup.py
+++ b/LabController/setup.py
@@ -49,7 +49,7 @@ else:
setup(
name='beaker-lab-controller',
- version='27.3',
+ version='27.4',
description='Daemons for controlling a Beaker lab',
author='Red Hat, Inc.',
author_email='beaker-devel@lists.fedorahosted.org',
diff --git a/LabController/src/bkr/labcontroller/distro_import.py b/LabController/src/bkr/labcontroller/distro_import.py
index 8fcc5db..6abede9 100755
--- a/LabController/src/bkr/labcontroller/distro_import.py
+++ b/LabController/src/bkr/labcontroller/distro_import.py
@@ -1542,7 +1542,11 @@ class TreeInfoRHVH4(TreeInfoMixin, Importer):
self.tree["kernel_options"] = kopts + " inst.stage2=%s" % self.parser.url
img_rpm = self._find_image_update_rpm()
ks_meta = self.tree.get("ks_meta") or ""
- self.tree["ks_meta"] = ks_meta + " autopart_type=thinp liveimg=%s" % img_rpm
+
+ # RHVH assumes that installation is happening based on 'inst.ks' on kernel cmdline
+ ks_keyword = 'ks_keyword=inst.ks'
+ autopart_type = 'autopart_type=thinp liveimg={}'.format(img_rpm)
+ self.tree["ks_meta"] = "{} {} {}".format(ks_meta, autopart_type, ks_keyword)
def _find_image_update_rpm(self):
base = dnf.Base()
diff --git a/Server/bkr/server/model/scheduler.py b/Server/bkr/server/model/scheduler.py
index d135dda..90ece6c 100644
--- a/Server/bkr/server/model/scheduler.py
+++ b/Server/bkr/server/model/scheduler.py
@@ -2645,7 +2645,8 @@ class Recipe(TaskBase, ActivityMixin):
if 'no_default_harness_repo' not in install_options.ks_meta \
and not self.harness_repo():
raise ValueError('Failed to find repo for harness')
- if 'ks' in install_options.kernel_options:
+ ks_keyword = install_options.ks_meta.get('ks_keyword', 'ks')
+ if ks_keyword in install_options.kernel_options:
# Use it as is
rendered_kickstart = None
elif self.kickstart:
@@ -2705,7 +2706,7 @@ class Recipe(TaskBase, ActivityMixin):
system=getattr(self.resource, 'system', None),
user=self.recipeset.job.owner,
recipe=self, kickstart=kickstart)
- install_options.kernel_options['ks'] = rendered_kickstart.link
+ install_options.kernel_options[ks_keyword] = rendered_kickstart.link
else:
ks_appends = [ks_append.ks_append for ks_append in self.ks_appends]
rendered_kickstart = generate_kickstart(install_options=install_options,
@@ -2713,7 +2714,7 @@ class Recipe(TaskBase, ActivityMixin):
system=getattr(self.resource, 'system', None),
user=self.recipeset.job.owner,
recipe=self, ks_appends=ks_appends)
- install_options.kernel_options['ks'] = rendered_kickstart.link
+ install_options.kernel_options[ks_keyword] = rendered_kickstart.link
self.installation.kernel_options = install_options.kernel_options_str
self.installation.rendered_kickstart = rendered_kickstart
diff --git a/Server/setup.py b/Server/setup.py
index f5efec7..54952c2 100644
--- a/Server/setup.py
+++ b/Server/setup.py
@@ -186,7 +186,7 @@ else:
setup(
name='beaker-server',
namespace_packages = ['bkr'],
- version='27.3',
+ version='27.4',
description='Beaker scheduler and web interface',
long_description=
'Beaker is a system for full stack software integration testing '
diff --git a/beaker.spec b/beaker.spec
index 08a419c..e3af444 100644
--- a/beaker.spec
+++ b/beaker.spec
@@ -15,10 +15,10 @@
# not representable in RPM. For example, a release candidate might be 0.15.0rc1
# but that is not usable for the RPM Version because it sorts higher than
# 0.15.0, so the RPM will have Version 0.15.0 and Release 0.rc1 in that case.
-%global upstream_version 27.3
+%global upstream_version 27.4
Name: beaker
-Version: 27.3
+Version: 27.4
Release: 1%{?dist}
Summary: Full-stack software and hardware integration testing system
Group: Applications/Internet
diff --git a/documentation/user-guide/customizing-installation.rst b/documentation/user-guide/customizing-installation.rst
index 102ebb5..1dfcc7c 100644
--- a/documentation/user-guide/customizing-installation.rst
+++ b/documentation/user-guide/customizing-installation.rst
@@ -103,11 +103,18 @@ The following kernel options are treated specially by Beaker:
.. _kickstart-metadata:
-Kickstart metadata
-~~~~~~~~~~~~~~~~~~
+Kickstart metadata (ks_meta)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following variables are supported and can be selected by placing them in
+the ``ks_meta`` attribute in the ``recipe`` element. In many cases, these
+variables correspond to the similarly-named kickstart option.
-The following variables are supported. In many cases, these variables
-correspond to the similarly-named kickstart option.
+For example in the job XML::
+
+ ...
+ <recipe kernel_options="" kernel_options_post="" ks_meta="harness=restraint hwclock_is_utc" role="None" whiteboard="Lab Controller">
+ ...
``auth=<authentication configuration options>``
Authentication configuration to use. For example,
@@ -277,6 +284,16 @@ correspond to the similarly-named kickstart option.
``keyboard=<layout>``
Keyboard layout to use. Default is ``us``.
+``ks_keyword``
+ Change the normal kickstart kernel command line keyword from 'ks' to user
+ specified value. This can be useful for instance if wanting to install an
+ operating system like Debian. Could do ``ks_keyword=preseed`` and then the
+ kickstart file will be generated but on kernel command it would be present
+ as ``preseed=http://example.com/kickstart/18`` as an example. A custom
+ preseed template will need to be created and put in
+ ``/etc/beaker/kickstarts/``. For example if doing a Debian install the
+ file ``/etc/beaker/kickstarts/Debian`` should be created.
+
``lang=<localeid>``
Locale to use. Default is ``en_US.UTF-8``.
diff --git a/documentation/whats-new/release-27.rst b/documentation/whats-new/release-27.rst
index 3731325..1cc274e 100644
--- a/documentation/whats-new/release-27.rst
+++ b/documentation/whats-new/release-27.rst
@@ -227,4 +227,22 @@ Beaker 27.3
* | :issue:`1814784`: Improved stability in beaker-proxy. Now, WSGI layer
of beaker-proxy is capable of closing all sockets imminently after
request is finished.
- | (Contributed by Martin Styk) \ No newline at end of file
+ | (Contributed by Martin Styk)
+
+Beaker 27.4
+~~~~~~~~~~~
+* | :issue:`1816102`: New command for beaker-client introduced.
+ Beaker-client is providing the way how to remove a task from task
+ library based on the name. This feature is limited to administrators.
+ You can execute as following `bkr task-remove <name>`.
+ | (Contributed by Martin Styk)
+* | :issue:`1795917`: Added support to use different variable for kickstart
+ on kernel cmdline. Now user can define new `ks_meta` with name
+ `ks_keyword`.
+ | (Contributed by John Villalovos)
+* | :issue:`1818070`: Now, distribution RHVH is imported by default with
+ additional `ks_meta` variable `ks_keyword='inst.ks'`. This mitigates
+ problems with an older version of RHVH where `ks` do not trigger
+ the installation process in RHVH, instead of that, it is considered
+ an upgrade.
+ | (Contributed by Martin Styk)