From 1772ec50c6803f015606b5454cd10ec5c28f8176 Mon Sep 17 00:00:00 2001 From: Lili Nie Date: Thu, 9 May 2024 05:25:25 -0400 Subject: [PATCH] Support `cpu.model-name` hardware requirement for mrack --- spec/hardware/cpu.fmf | 2 +- tmt/steps/provision/mrack.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/spec/hardware/cpu.fmf b/spec/hardware/cpu.fmf index fd92d55a55..e19d4de66c 100644 --- a/spec/hardware/cpu.fmf +++ b/spec/hardware/cpu.fmf @@ -100,4 +100,4 @@ example: link: - implemented-by: /tmt/steps/provision/artemis.py - implemented-by: /tmt/steps/provision/mrack.py - note: "``cpu.flag``, ``cpu.processors``, ``cpu.model``, ``cpu.cores`` only" + note: "``cpu.flag``, ``cpu.processors``, ``cpu.model``, ``cpu.cores``, ``cpu.model-name`` only" diff --git a/tmt/steps/provision/mrack.py b/tmt/steps/provision/mrack.py index d06ef05ca7..545f4833a3 100644 --- a/tmt/steps/provision/mrack.py +++ b/tmt/steps/provision/mrack.py @@ -52,6 +52,7 @@ class GuestInspectType(TypedDict): 'cpu.flag', 'cpu.processors', 'cpu.model', + 'cpu.model_name', 'cpu.cores', 'disk.size', 'disk.model_name', @@ -275,6 +276,24 @@ def _transform_cpu_cores( children=[MrackHWBinOp('cores', beaker_operator, actual_value)]) +def _transform_cpu_model_name( + constraint: tmt.hardware.TextConstraint, + logger: tmt.log.Logger) -> MrackBaseHWElement: + beaker_operator, actual_value, negate = operator_to_beaker_op( + constraint.operator, + constraint.value) + + if negate: + return MrackHWNotGroup(children=[ + MrackHWGroup( + 'cpu', + children=[MrackHWBinOp('model_name', beaker_operator, actual_value)])]) + + return MrackHWGroup( + 'cpu', + children=[MrackHWBinOp('model_name', beaker_operator, actual_value)]) + + def _transform_disk_driver( constraint: tmt.hardware.TextConstraint, logger: tmt.log.Logger) -> MrackBaseHWElement: @@ -439,6 +458,7 @@ def _transform_zcrypt_mode( 'cpu.model': _transform_cpu_model, # type: ignore[dict-item] 'cpu.processors': _transform_cpu_processors, # type: ignore[dict-item] 'cpu.cores': _transform_cpu_cores, # type: ignore[dict-item] + 'cpu.model_name': _transform_cpu_model_name, # type: ignore[dict-item] 'disk.driver': _transform_disk_driver, # type: ignore[dict-item] 'disk.model_name': _transform_disk_model_name, # type: ignore[dict-item] 'disk.size': _transform_disk_size, # type: ignore[dict-item]