Skip to content

Commit

Permalink
Fix normalization of playbook/playbooks keys of ansible plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
happz committed Jun 27, 2024
1 parent 9717fc4 commit b265772
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
9 changes: 4 additions & 5 deletions tmt/steps/prepare/ansible.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import tmt.steps.prepare
import tmt.utils
from tmt.steps.provision import Guest
from tmt.utils import Path, PrepareError, field, retry_session
from tmt.utils import Path, PrepareError, field, normalize_string_list, retry_session


class _RawAnsibleStepData(tmt.steps._RawStepData, total=False):
Expand Down Expand Up @@ -52,11 +52,10 @@ def pre_normalization( # type: ignore[override]
super().pre_normalization(raw_data, logger)

# Perform `playbook` normalization here, so we could merge `playbooks` to it.
playbook = raw_data.pop('playbook', [])
raw_data['playbook'] = [playbook] if isinstance(playbook, str) else playbook
playbook = normalize_string_list('playbook', raw_data.pop('playbook', []), logger)
playbooks = normalize_string_list('playbook', raw_data.pop('playbooks', []), logger)

assert isinstance(raw_data['playbook'], list)
raw_data['playbook'] += raw_data.pop('playbooks', [])
raw_data['playbook'] = [*playbook, *playbooks]


@tmt.steps.provides_method('ansible')
Expand Down
17 changes: 16 additions & 1 deletion tmt/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6123,7 +6123,22 @@ def normalize_string_list(
if value is None:
return []

return [value] if isinstance(value, str) else value
if isinstance(value, str):
return [value]

if isinstance(value, (list, tuple)):
normalized_value: list[str] = []

for i, raw_item in enumerate(value):
if isinstance(raw_item, str):
normalized_value.append(raw_item)
continue

raise NormalizationError(f'{key_address}[{i}]', raw_item, 'a string')

return normalized_value

raise NormalizationError(key_address, value, 'a string or a list of strings')


def normalize_pattern_list(
Expand Down

0 comments on commit b265772

Please sign in to comment.