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

vdo: fix modify stage KeyError on unsupported parameter #55160

Open
wants to merge 1 commit into
base: devel
from

Conversation

Projects
None yet
2 participants
@bgurney-rh
Copy link
Contributor

bgurney-rh commented Apr 11, 2019

SUMMARY

In "status: present" playbook execution for a VDO volume that is
absent, all of the parameters that are given in the playbook are
issued to the "vdo create" command, therefore any parameters that
become "unrecognized" will result in the "vdo" command returning an
error with the message "unrecognized arguments", which can then be
relayed back to the user. This is a gracefully handled failure case.

Examples of "unrecognized" parameters are new features that are not
yet in the current version of VDO, or features that were removed
since the current version of VDO.

In "status: present" playbook execution for a VDO volume that is
already present, the same behavior as the "creation" stage of the
module should occur, but doesn't occur, since the key strings for
the "vdo status" output of the parameter do not exist. This results
in a KeyError on the parameter that no longer exists.

Therefore, use "if statfield in processedvdos[desiredvdo]:" to filter
the modifiable parameters with the ones that are supported in this
VDO version, then use "if statfield not in processedvdos[desiredvdo]:"
to evade the KeyError, and add the "unsupported" parameters.

Also, instead of using the "currentvdoparams" dictionary, which
filters only the parameters reported by the "vdo status" output, use
the "modtrans" dictionary, which contains all of the possible
parameters. Therefore, if the playbook specifies an "unsupported"
parameter, let it be passed on to the "vdo" command, to display an
actionable error message.

Fixes #54556

ISSUE TYPE
  • Bugfix Pull Request
COMPONENT NAME

vdo

ADDITIONAL INFORMATION

vdo: fix modify stage KeyError on unsupported parameter
In "status: present" playbook execution for a VDO volume that is
absent, all of the parameters that are given in the playbook are
issued to the "vdo create" command, therefore any parameters that
become "unrecognized" will result in the "vdo" command returning an
error with the message "unrecognized arguments", which can then be
relayed back to the user.  This is a gracefully handled failure case.

Examples of "unrecognized" parameters are new features that are not
yet in the current version of VDO, or features that were removed
since the current version of VDO.

In "status: present" playbook execution for a VDO volume that is
already present, the same behavior as the "creation" stage of the
module should occur, but doesn't occur, since the key strings for
the "vdo status" output of the parameter do not exist.  This results
in a KeyError on the parameter that no longer exists.

Therefore, use "if statfield in processedvdos[desiredvdo]:" to filter
the modifiable parameters with the ones that are supported in this
VDO version, then use "if statfield not in processedvdos[desiredvdo]:"
to evade the KeyError, and add the "unsupported" parameters.

Also, instead of using the "currentvdoparams" dictionary, which
filters only the parameters reported by the "vdo status" output, use
the "modtrans" dictionary, which contains all of the possible
parameters.  Therefore, if the playbook specifies an "unsupported"
parameter, let it be passed on to the "vdo" command, to display an
actionable error message.

This fixes #54556

Signed-off-by: Bryan Gurney <bgurney@redhat.com>
@bgurney-rh

This comment has been minimized.

Copy link
Contributor Author

bgurney-rh commented Apr 11, 2019

I'm confident that this affects all of the versions of the vdo module, going back to 2.5.

@ansibot ansibot added the stale_ci label Apr 19, 2019

@bgurney-rh

This comment has been minimized.

Copy link
Contributor Author

bgurney-rh commented Apr 23, 2019

+affects_2.7 +affects_2.6 +affects_2.5

@bgurney-rh

This comment has been minimized.

Copy link
Contributor Author

bgurney-rh commented Apr 23, 2019

ready_for_review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.