Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip recursive suboption validation if sub_parameters is not a dict #75635

Merged

Conversation

s-hertel
Copy link
Contributor

@s-hertel s-hertel commented Sep 2, 2021

SUMMARY

Fixes #75612

I tested the same argspec + invalid option with modules and the traceback doesn't occur - this is specific to the role argspec validator.

  • Skips recursive suboption validation if the sub_parameter is not a dictionary

  • Ensure sub parameter elements is a list to prevent iterating over string and causing duplicate error messages (due to iterating over each char)

  • Add a test

ISSUE TYPE
  • Bugfix Pull Request

…nary

Ensure sub parameter elements is a list to prevent iterating over string characters and causing duplicate error messages for the same param

Add a test
@ansibot ansibot added affects_2.12 bug This issue/PR relates to a bug. core_review In order to be merged, this PR must follow the core review workflow. needs_triage Needs a first human triage before being processed. small_patch support:community This issue/PR relates to code supported by the Ansible community. support:core This issue/PR relates to code supported by the Ansible Engineering Team. labels Sep 2, 2021
@ansibot ansibot added needs_ci This PR requires CI testing to be performed. Please close and re-open this PR to trigger CI. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed core_review In order to be merged, this PR must follow the core review workflow. labels Sep 2, 2021
@s-hertel s-hertel force-pushed the skip_sub_param_validation_if_not_dict branch from afeb8fb to a0fa980 Compare September 2, 2021 21:06
@ansibot ansibot added core_review In order to be merged, this PR must follow the core review workflow. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed needs_ci This PR requires CI testing to be performed. Please close and re-open this PR to trigger CI. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. core_review In order to be merged, this PR must follow the core review workflow. labels Sep 2, 2021
@s-hertel s-hertel added the ci_verified Changes made in this PR are causing tests to fail. label Sep 3, 2021
@ansibot ansibot added core_review In order to be merged, this PR must follow the core review workflow. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed ci_verified Changes made in this PR are causing tests to fail. needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. core_review In order to be merged, this PR must follow the core review workflow. labels Sep 9, 2021
@nitzmahone nitzmahone removed the needs_triage Needs a first human triage before being processed. label Sep 9, 2021
@ansibot ansibot removed the needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. label Sep 14, 2021
@ansibot ansibot added the core_review In order to be merged, this PR must follow the core review workflow. label Sep 14, 2021
@ansibot ansibot added the stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. label Sep 22, 2021
Copy link
Contributor

@mkrizek mkrizek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Member

@bcoca bcoca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just minor caveat that was already a problem in the existing code

lib/ansible/module_utils/common/parameters.py Outdated Show resolved Hide resolved
@ansibot ansibot added needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. and removed core_review In order to be merged, this PR must follow the core review workflow. labels Nov 1, 2021
@ansibot ansibot added core_review In order to be merged, this PR must follow the core review workflow. and removed needs_revision This PR fails CI tests or a maintainer has requested a review/revision of the PR. stale_ci This PR has been tested by CI more than one week ago. Close and re-open this PR to get it retested. labels Nov 1, 2021
@s-hertel s-hertel merged commit b5ed41e into ansible:devel Nov 1, 2021
@s-hertel
Copy link
Contributor Author

s-hertel commented Nov 1, 2021

Thanks for the reviews!

s-hertel added a commit to s-hertel/ansible that referenced this pull request Nov 1, 2021
…nsible#75635)

* Skip recursive suboption validation if sub_parameters is not a dictionary

* Ensure sub parameter elements is a sequence to prevent iterating over string characters and causing duplicate error messages for the same param

(cherry picked from commit b5ed41e)
s-hertel added a commit to s-hertel/ansible that referenced this pull request Nov 1, 2021
…nsible#75635)

* Skip recursive suboption validation if sub_parameters is not a dictionary

* Ensure sub parameter elements is a sequence to prevent iterating over string characters and causing duplicate error messages for the same param

(cherry picked from commit b5ed41e)
@ansible ansible locked and limited conversation to collaborators Nov 22, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
affects_2.12 bug This issue/PR relates to a bug. core_review In order to be merged, this PR must follow the core review workflow. support:community This issue/PR relates to code supported by the Ansible community. support:core This issue/PR relates to code supported by the Ansible Engineering Team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unexpected exception when validating a role argspec when a dict with suboptions is expected but a str is given
5 participants