Some interim patches are PSU/RU dependent. The patch ID is the same but content, dependencies, and UPI (unique patch ID) differ. These patches have to be rolled back in advance of applying the PSU/RU and must afterwards be installed with the correct version (=UPI). They should however not be rolled back if they are already there with the desired UPI. This helps to write more idempotent playbooks.
So there is a new parameter exclude_upi that is evaluated only if state=absent.
To keep changes in working code at a minimum the check for UPI could be acquired only by another "opatch lspatches" that costs some seconds.
Some interim patches are PSU/RU dependent. The patch ID is the same but content, dependencies, and UPI (unique patch ID) differ. These patches have to be rolled back in advance of applying the PSU/RU and must afterwards be installed with the correct version (=UPI). They should however not be rolled back if they are already there with the desired UPI. This helps to write more idempotent playbooks.
So there is a new parameter exclude_upi that is evaluated only if state=absent.
To keep changes in working code at a minimum the check for UPI could be acquired only by another "opatch lspatches" that costs some seconds.