Sure thing, here you are:

## Usage:##   artifacts()## Returns:##   Puppet hash containing
artifact info.## @author N David Brownmodule Puppet::Parser::Functions
    newfunction(:artifacts, :type => :rvalue) do |args|
        # Info common to all artifacts.
        _common = {
            'pkg'   => 'tar.gz',
            'ver'   => '7.1.0.fuse-041',
            'repo'  =>
'http://maven/nexus/content/groups/fusesource-features-group'
        }

        # Bespoke info for artifacts.
        _artifacts = {
            'fabric' => {
                'id'    => 'fuse-fabric',
                'grp'   => 'org.fusesource.fabric'
            }.merge!(_common), # merge in common artifact info
            'fmc' => {
                'id'    => 'fmc-distro',
                'grp'   => 'org.fusesource.fmc'
            }.merge!(_common) # merge in common artifact info
        }

        return _artifacts
    endend

Earlier I was pointing out that moving _common and _artifacts above the
module... line means they can't be accessed by the new function definition.

I thought that might work to make them accessible from a require in a
standard Ruby file, having seen require be used at that scope in example
Puppet custom functions in the official documentation.

Cheers,

Dave
-- N David Brown | Software Developer | Development Support and Integration
Team | Ocado Ltd | T: 01707 382197 | M: 07908 623472



On 30 November 2012 16:15, Jeff McCune <j...@puppetlabs.com> wrote:

> On Fri, Nov 30, 2012 at 4:30 AM, KomodoDave <dave.br...@ocado.com> wrote:
> > I have a hash defined containing some static information. This exists
> within
> > a custom function for Puppet.
> >
> > I wish to share this code with a ruby test harness I'm writing; there
> will
> > be additional resources that both Puppet and the test harness can make
> use
> > of.
> >
> > My question is - what's the best way to achieve this?
> >
> > I've seen in custom function examples that require statements are
> specified
> > outside the puppet custom function template. However, if I try to move my
> > static hash definition to this scope then it's no longer visible to the
> > custom function.
> >
> > How may I access static info like this from standard ruby, and what
> scope in
> > the puppet custom function definition should it occupy?
> >
> > Thank you for your time.
>
> I'd factor out the static information into a class that both the
> function and the test harness are able to instantiate.  Do you have
> your code published somewhere we could comment on it?  This might make
> it easier to make a suggestion.
>
> -Jeff
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
>
>

This message has been checked for all known viruses by the Postini Virus 
Control Centre.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to