On Wednesday, July 17, 2013 1:29:20 PM UTC-5, Jakov Sosic wrote:
>
> Hi, 
>
> is it possible to choose the provider based on property? 
>
> For example, I'm trying to develop two different providers for same type 
> of resource. If i use path location on the local filesystem I want 
> provider "local" to be chosen, and if I use link property, then I want 
> provider "remote" to be chosen. 
>
> For example, this definition should chose provider 'local': 
>
> resource { 'a': 
>   path => '/some/local/disk.iso', 
> } 
>
>
> And this definition should chose provider 'remote': 
>
> resource { 'a': 
>   link => 'http://example.com/disk.iso', 
> } 
>
> Is this possible without manually specifying "provider => remote"? 
>
>

Not to my knowledge, no.

This is not the correct provider paradigm.  The provider for a given 
resource type used on a given node, if not specified explicitly, is 
supposed to be chosen based on the characteristics of the node, not of the 
resource.  You seem to be artificially separating your provider into two 
pieces.  My recommendation would be to create one provider whose behavior 
varies according to the resource's properties, instead of trying to make 
the choice between different providers depend on resource properties.

 

>
> Also, second question. It would be great if puppet could raise error in 
> case when both conflicting properties are set. For example this should 
> yeild an error: 
>
> resource { 'a': 
>   path => '/some/local/disk.iso', 
>   link => 'http://example.com/disk.iso', 
> } 
>
> Is this possible? 
>


I think you can use the property validation hook to accomplish this.  It is 
focused on validating individual properties, and there is no guarantee of 
which property will be validated first, but all you really need is to raise 
/ check a flag an the resource instance as part of the validation of each 
of those properties.  You raise an ArgumentError if the validation code for 
either property finds that the flag is already raised.  See 
http://docs.puppetlabs.com/guides/custom_types.html for general details on 
the property validation hook.


>
> If these questions are more suitable to puppet-dev list, I will post 
> them there. Thank you guys. 
>


No, puppet-dev is for discussion of the development of Puppet itself, not 
for questions about its use.  "Development" of Puppet manifests is a usage 
issue with respect to the Puppet program. 


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to