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.

Reply via email to