Issue #7184 has been updated by Daniel Pittman. Status changed from Accepted to Merged - Pending Release Target version changed from 2.7.x to 2.7.3
https://github.com/puppetlabs/puppet/commit/feec7b3df713569f76b93ae8cef882e9ddc1bf35 merges this into the 2.7.x branch for the 2.7.3 release. We now find actions even if they are bound to an older, or other, version of the face. Support is reasonably complete: we have limitations around changes to face level options across versions, where ambiguous changes might result in missed, or misidentified older actions, but there is only so far we really want to go in identifying the right mapping from CLI to action. For all the normal cases, this should just workâ˘, and updating the shipped default version of a face no longer makes external actions for older faces vanish. Core actions on older versions of faces are deliberately not scoped in to this work; this is about external faces. Explicit versioned invocation is the expected path to getting supported access to those vanished core actions. ---------------------------------------- Feature #7184: bind actions first, faces second, to support multiple versions with external extension https://projects.puppetlabs.com/issues/7184 Author: Daniel Pittman Status: Merged - Pending Release Priority: High Assignee: Daniel Pittman Category: Faces Target version: 2.7.3 Affected Puppet version: development Keywords: Branch: At the moment we bind to the face first, then find the action associated with that. For external actions we really want to be binding to the action *first*, then running it in the context of the face version it was defined against. This gives coherent behaviour for the external user, and makes face versioning much more useful for them. Specifically, the following properties: * actions can only be found in one of: * bound to the default face version, inside that file * in the load path as `lib/puppet/face/#{face}/#{action}.rb` * the *first* instance of `#{action}` is the one used * when loading an action, identify the face it wants, and load that This means that invoking an action that binds to version 1 of a face *can't* call an action that binds to version 2 of the face, or vice-versa, without them making special arrangements for that to happen. This is desirable; we are not including any "proxy" connection between the two in this version of the feature. The general expectation of use is that folks will build their actions depending on one of two things: * actions provided in the core face, for the version they bind to * other actions they write, binding to the same core face version Given that, these restrictions seem reasonable, without making actions vanish just because the default version of a face changes. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
