FAQ
Hi all

Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
Puppet...

I'm trying to start simply by just gathering some facts from our filers.

The code soo far is available here:
https://github.com/fatmcgav/shrug-netapp/ Credit to the original author
shrug for setting out the framework...

Anyhow, onto my first challenge.

I've downloaded and added the relevant NetApp SDK files into *
modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown below:

$ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
total 88
-rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
-rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
-rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
-rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
-rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
-rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
The NaServer class is then included within the device.rb file above.
However Puppet is currently failing with:
Info: starting applying configuration to actint-star-nactl01 at
actint-star-nactl01
Error: Could not run: no such file to load -- NaElement
This NaElement file is require'd by the NaServer class.
However it seems to be failing due to the include path not including the
NaElement.rb file...
Therefore I'm guessing that Puppet/Ruby is looking for the NaElement file
in some default location, rather than the same location as the NaServer
class...

I've generated the same error on some tests scripts by moving the NetApp
SDK files into a sdk sub folder, and then just *"require sdk/NaServer"* in
my script, which generates a very similar error:
ruby hello_ontapi.rb 192.168.35.118 root xxx
./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
(LoadError)
from ./sdk/NaServer.rb:21
from hello_ontapi.rb:24:in `require'
from hello_ontapi.rb:24
Any ideas how I could work around this?

Cheers
Gavin


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

Search Discussions

  • Gavin Williams at Nov 5, 2012 at 11:24 am
    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method `+' for
    nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original author
    shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown
    below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including the
    NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement file
    in some default location, rather than the same location as the NaServer
    class...

    I've generated the same error on some tests scripts by moving the NetApp
    SDK files into a sdk sub folder, and then just *"require sdk/NaServer"*in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/PFZpeJZd03sJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 5, 2012 at 11:35 am
    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being present...
    What's confused me is the path it's come up with for *':confdir'*.
    According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method `+'
    for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original author
    shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown
    below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including the
    NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement file
    in some default location, rather than the same location as the NaServer
    class...

    I've generated the same error on some tests scripts by moving the NetApp
    SDK files into a sdk sub folder, and then just *"require sdk/NaServer"*in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/UCHkWT5GWG0J.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 5, 2012 at 3:26 pm
    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being, and
    with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being present...
    What's confused me is the path it's come up with for *':confdir'*.
    According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method `+'
    for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original author
    shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown
    below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including the
    NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the NetApp
    SDK files into a sdk sub folder, and then just *"require sdk/NaServer"*in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/tYRDCDwxjlsJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 5, 2012 at 4:44 pm
    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test it
    against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being,
    and with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being present...
    What's confused me is the path it's come up with for *':confdir'*.
    According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method `+'
    for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown
    below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including
    the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/N_v9Sj98kfwJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 5, 2012 at 5:46 pm
    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode: mode
    changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    --- /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance of
    Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test it
    against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being,
    and with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being present...
    What's confused me is the path it's come up with for *':confdir'*.
    According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method `+'
    for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as shown
    below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including
    the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/rFre1Mb_m0wJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 6, 2012 at 4:26 pm
    Ok, quick update...

    I've not managed to get past the 'Undefined method' error despite my best
    efforts today...

    Any ideas on where I could be going wrong?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode: mode
    changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    --- /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance of
    Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test
    it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being,
    and with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method
    `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including
    the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/uiy2Fht8VsYJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 6, 2012 at 5:40 pm
    Scratch my last, had a bit of a eureka moment...

    Added ':transport: to the attr_accessor against device.rb, and it started
    working again...

    However now failing elsewhere...
    Have got the following against a relevant node:

    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    initsize => "1g",
    aggr => "aggr01",
    spaceresv => "none",
    }
    The run is failing with:
    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Invalid parameter aggr at /etc/puppet/manifests/site.pp:30 on node
    actint-star-nactl01
    Error: Could not set 'present' on ensure: undefined method `result_reason'
    for #<NaElement:0x7ffb9cb5d160> at 27:/etc/puppet/manifests/site.pp
    Error: Could not set 'present' on ensure: undefined method `result_reason'
    for #<NaElement:0x7ffb9cb5d160> at 27:/etc/puppet/manifests/site.pp
    Wrapped exception:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160>
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]/ensure:
    change from absent to present failed: Could not set 'present' on ensure:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Got some debug logging, which is giving:
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: checking existance of
    Netapp Volume v_puppet_test
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Vol Info: <results
    status="failed" reason="No volume named 'v_puppet_test' exists"
    errno="13040"></results>

    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Volume doesn't
    currently exist.
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: creating Netapp
    Volume v_puppet_test of initial size 1g
    So I can see that the provider exists? is working correctly, and it's
    trying to fire the create def...

    The type is defined correctly afaik:
    Puppet::Type.newtype(:netapp_volume) do
    @doc = "Manage Netapp Volume creation, modification and deletion."

    apply_to_device

    ensurable do
    desc "Netapp Volume resource state. Valid values are: present, absent."

    defaultto(:present)

    newvalue(:present) do
    provider.create
    end

    newvalue(:absent) do
    provider.destroy
    end
    end

    newparam(:name) do
    desc "The volume name."
    isnamevar
    #newvalues(/^[[:alpha:][:digit:]\.]+$/)
    end

    newparam(:initsize) do
    desc "The initial volume size."
    defaultto "1g"

    end

    newparam(:aggr) do
    desc "The aggregate this volume should be created in."

    end

    newparam(:spaceresv) do
    desc "The space reservation mode."

    end
    end
    Latest code in Git...

    Any ideas?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode: mode
    changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    --- /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance of
    Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test
    it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being,
    and with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and started
    working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method
    `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including
    the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load -- NaElement
    (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/QAdLEzRdug0J.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 7, 2012 at 12:06 pm
    Quick update... It looks like all that was needed to resolve the below was
    a puppetmaster restart.

    Have successfully managed to create a new volume on the NetApp filer using
    puppet :) :D

    Now to plough on with adding support for the rest of the bits we need :)

    Cheers
    Gavin
    On Tuesday, 6 November 2012 17:40:34 UTC, Gavin Williams wrote:

    Scratch my last, had a bit of a eureka moment...

    Added ':transport: to the attr_accessor against device.rb, and it started
    working again...

    However now failing elsewhere...
    Have got the following against a relevant node:

    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    initsize => "1g",
    aggr => "aggr01",
    spaceresv => "none",
    }
    The run is failing with:
    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Invalid parameter aggr at /etc/puppet/manifests/site.pp:30 on node
    actint-star-nactl01
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Wrapped exception:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160>
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]/ensure:
    change from absent to present failed: Could not set 'present' on ensure:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Got some debug logging, which is giving:
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume v_puppet_test
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Vol Info: <results
    status="failed" reason="No volume named 'v_puppet_test' exists"
    errno="13040"></results>

    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Volume doesn't
    currently exist.
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: creating Netapp
    Volume v_puppet_test of initial size 1g
    So I can see that the provider exists? is working correctly, and it's
    trying to fire the create def...

    The type is defined correctly afaik:
    Puppet::Type.newtype(:netapp_volume) do
    @doc = "Manage Netapp Volume creation, modification and deletion."

    apply_to_device

    ensurable do
    desc "Netapp Volume resource state. Valid values are: present, absent."

    defaultto(:present)

    newvalue(:present) do
    provider.create
    end

    newvalue(:absent) do
    provider.destroy
    end
    end

    newparam(:name) do
    desc "The volume name."
    isnamevar
    #newvalues(/^[[:alpha:][:digit:]\.]+$/)
    end

    newparam(:initsize) do
    desc "The initial volume size."
    defaultto "1g"

    end

    newparam(:aggr) do
    desc "The aggregate this volume should be created in."

    end

    newparam(:spaceresv) do
    desc "The space reservation mode."

    end
    end
    Latest code in Git...

    Any ideas?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode: mode
    changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    --- /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test
    it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the time-being,
    and with a bit more jiggery pokery, I've managed to successfully register a
    NetApp device, and extract some facts from it... And here's the
    photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load
    error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and
    started working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method
    `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use *
    'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not including
    the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the NaElement
    file in some default location, rather than the same location as the
    NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load --
    NaElement (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/cXlkZM2beHgJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 7, 2012 at 4:28 pm
    :( Seems to be one step forward and two steps back atm...

    Following the successful creation and deletion of NetApp filer volumes
    using puppet earlier in the day, I added the required provider and type to
    support qtree creation and deletion...

    However since then, I haven't been able to create either a new volume or a
    new qtree reliably...
    It seems that it will intermittently work, but the majority of the time the
    puppet device run will fail with

    Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
    Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Util::NetworkDevice on node actint-star-nactl01

    This error alternates between provider/netapp_volume/netapp_volume and
    provider/netapp_qtree/netapp_qtree...
    It doesn't appear to be due to config, as I've stripped the node config
    right back to base and still seeing errors...

    The node config I was trying to work towards is:
    netapp_qtree { 'q_puppet_test1':
    ensure => present,
    volume => 'v_puppet_test',
    require => Netapp_volume['v_puppet_test1']
    }

    netapp_volume { 'v_puppet_test1':
    ensure => present,
    initsize => "1t",
    aggregate => "aggr01",
    spaceres => "none",
    }
    I've tried multiple agent runs, multiple master restarts, all to no
    avail...

    Any ideas on what could be the issue?

    As always, latest code is available in Git...

    Cheers
    Gavin

    On Wednesday, 7 November 2012 12:06:17 UTC, Gavin Williams wrote:

    Quick update... It looks like all that was needed to resolve the below was
    a puppetmaster restart.

    Have successfully managed to create a new volume on the NetApp filer using
    puppet :) :D

    Now to plough on with adding support for the rest of the bits we need :)

    Cheers
    Gavin
    On Tuesday, 6 November 2012 17:40:34 UTC, Gavin Williams wrote:

    Scratch my last, had a bit of a eureka moment...

    Added ':transport: to the attr_accessor against device.rb, and it started
    working again...

    However now failing elsewhere...
    Have got the following against a relevant node:

    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    initsize => "1g",
    aggr => "aggr01",
    spaceresv => "none",
    }
    The run is failing with:
    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Invalid parameter aggr at /etc/puppet/manifests/site.pp:30 on node
    actint-star-nactl01
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Wrapped exception:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160>
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]/ensure:
    change from absent to present failed: Could not set 'present' on ensure:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Got some debug logging, which is giving:
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume v_puppet_test
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Vol Info: <results
    status="failed" reason="No volume named 'v_puppet_test' exists"
    errno="13040"></results>

    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Volume doesn't
    currently exist.
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: creating Netapp
    Volume v_puppet_test of initial size 1g
    So I can see that the provider exists? is working correctly, and it's
    trying to fire the create def...

    The type is defined correctly afaik:
    Puppet::Type.newtype(:netapp_volume) do
    @doc = "Manage Netapp Volume creation, modification and deletion."

    apply_to_device

    ensurable do
    desc "Netapp Volume resource state. Valid values are: present, absent."

    defaultto(:present)

    newvalue(:present) do
    provider.create
    end

    newvalue(:absent) do
    provider.destroy
    end
    end

    newparam(:name) do
    desc "The volume name."
    isnamevar
    #newvalues(/^[[:alpha:][:digit:]\.]+$/)
    end

    newparam(:initsize) do
    desc "The initial volume size."
    defaultto "1g"

    end

    newparam(:aggr) do
    desc "The aggregate this volume should be created in."

    end

    newparam(:spaceresv) do
    desc "The space reservation mode."

    end
    end
    Latest code in Git...

    Any ideas?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    --- /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server specified
    node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to test
    it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload puppet/provider/netapp_volume/netapp_volume:
    uninitialized constant Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not
    autoload puppet/provider/netapp_volume/netapp_volume: uninitialized
    constant Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not intern
    from pson: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the
    time-being, and with a bit more jiggery pokery, I've managed to
    successfully register a NetApp device, and extract some facts from it...
    And here's the photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load
    error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and
    started working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method
    `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to use
    *'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file
    above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not
    including the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the
    NaElement file in some default location, rather than the same location as
    the NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load --
    NaElement (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/jy-ImdGq890J.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 9, 2012 at 9:54 am
    Quick update on the below error...

    I dropped into the #puppet-dev IRC channel, and was able to resolve the
    issue with some assistance from Dominic, so many thanks for that...

    Latest code has been committed to Git, but basically I was missing a couple
    of requires for Puppet libs...

    Now happily creating volumes and qtrees in the same run.
    Onwards to the next functionality requirement now... Exports :D

    Cheers
    Gav
    On Wednesday, 7 November 2012 16:28:46 UTC, Gavin Williams wrote:

    :( Seems to be one step forward and two steps back atm...

    Following the successful creation and deletion of NetApp filer volumes
    using puppet earlier in the day, I added the required provider and type to
    support qtree creation and deletion...

    However since then, I haven't been able to create either a new volume or a
    new qtree reliably...
    It seems that it will intermittently work, but the majority of the time
    the puppet device run will fail with

    Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
    Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Util::NetworkDevice on node actint-star-nactl01

    This error alternates between provider/netapp_volume/netapp_volume and
    provider/netapp_qtree/netapp_qtree...
    It doesn't appear to be due to config, as I've stripped the node config
    right back to base and still seeing errors...

    The node config I was trying to work towards is:
    netapp_qtree { 'q_puppet_test1':
    ensure => present,
    volume => 'v_puppet_test',
    require => Netapp_volume['v_puppet_test1']
    }

    netapp_volume { 'v_puppet_test1':
    ensure => present,
    initsize => "1t",
    aggregate => "aggr01",
    spaceres => "none",
    }
    I've tried multiple agent runs, multiple master restarts, all to no
    avail...

    Any ideas on what could be the issue?

    As always, latest code is available in Git...

    Cheers
    Gavin

    On Wednesday, 7 November 2012 12:06:17 UTC, Gavin Williams wrote:

    Quick update... It looks like all that was needed to resolve the below
    was a puppetmaster restart.

    Have successfully managed to create a new volume on the NetApp filer
    using puppet :) :D

    Now to plough on with adding support for the rest of the bits we need :)

    Cheers
    Gavin
    On Tuesday, 6 November 2012 17:40:34 UTC, Gavin Williams wrote:

    Scratch my last, had a bit of a eureka moment...

    Added ':transport: to the attr_accessor against device.rb, and it
    started working again...

    However now failing elsewhere...
    Have got the following against a relevant node:

    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    initsize => "1g",
    aggr => "aggr01",
    spaceresv => "none",
    }
    The run is failing with:
    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Invalid parameter aggr at /etc/puppet/manifests/site.pp:30 on node
    actint-star-nactl01
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Wrapped exception:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160>
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]/ensure:
    change from absent to present failed: Could not set 'present' on ensure:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Got some debug logging, which is giving:
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume v_puppet_test
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Vol Info: <results
    status="failed" reason="No volume named 'v_puppet_test' exists"
    errno="13040"></results>

    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Volume doesn't
    currently exist.
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: creating Netapp
    Volume v_puppet_test of initial size 1g
    So I can see that the provider exists? is working correctly, and it's
    trying to fire the create def...

    The type is defined correctly afaik:
    Puppet::Type.newtype(:netapp_volume) do
    @doc = "Manage Netapp Volume creation, modification and deletion."

    apply_to_device

    ensurable do
    desc "Netapp Volume resource state. Valid values are: present, absent."

    defaultto(:present)

    newvalue(:present) do
    provider.create
    end

    newvalue(:absent) do
    provider.destroy
    end
    end

    newparam(:name) do
    desc "The volume name."
    isnamevar
    #newvalues(/^[[:alpha:][:digit:]\.]+$/)
    end

    newparam(:initsize) do
    desc "The initial volume size."
    defaultto "1g"

    end

    newparam(:aggr) do
    desc "The aggregate this volume should be created in."

    end

    newparam(:spaceresv) do
    desc "The space reservation mode."

    end
    end
    Latest code in Git...

    Any ideas?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    ---
    /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking existance
    of Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to
    test it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not
    autoload puppet/provider/netapp_volume/netapp_volume: uninitialized
    constant Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not
    intern from pson: Could not autoload puppet/type/netapp_volume: Could not
    autoload puppet/provider/netapp_volume/netapp_volume: uninitialized
    constant Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure what
    'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the
    time-being, and with a bit more jiggery pokery, I've managed to
    successfully register a NetApp device, and extract some facts from it...
    And here's the photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than agent
    specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load
    error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and
    started working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined method
    `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to
    use *'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file
    above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not
    including the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the
    NaElement file in some default location, rather than the same location as
    the NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load --
    NaElement (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/sow60HSKww0J.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Gavin Williams at Nov 12, 2012 at 11:59 am
    Monday update from me...

    Implemented support for Export creation on Friday, after making some
    further good progress...

    Now I'm looking at fine-tuning stuff, such as volume settings, export
    options, etc...

    Cheers
    Gavin
    On Friday, 9 November 2012 09:54:22 UTC, Gavin Williams wrote:

    Quick update on the below error...

    I dropped into the #puppet-dev IRC channel, and was able to resolve the
    issue with some assistance from Dominic, so many thanks for that...

    Latest code has been committed to Git, but basically I was missing a
    couple of requires for Puppet libs...

    Now happily creating volumes and qtrees in the same run.
    Onwards to the next functionality requirement now... Exports :D

    Cheers
    Gav
    On Wednesday, 7 November 2012 16:28:46 UTC, Gavin Williams wrote:

    :( Seems to be one step forward and two steps back atm...

    Following the successful creation and deletion of NetApp filer volumes
    using puppet earlier in the day, I added the required provider and type to
    support qtree creation and deletion...

    However since then, I haven't been able to create either a new volume or
    a new qtree reliably...
    It seems that it will intermittently work, but the majority of the time
    the puppet device run will fail with

    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Could not autoload puppet/type/netapp_volume: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Util::NetworkDevice on node actint-star-nactl01

    This error alternates between provider/netapp_volume/netapp_volume and
    provider/netapp_qtree/netapp_qtree...
    It doesn't appear to be due to config, as I've stripped the node config
    right back to base and still seeing errors...

    The node config I was trying to work towards is:
    netapp_qtree { 'q_puppet_test1':
    ensure => present,
    volume => 'v_puppet_test',
    require => Netapp_volume['v_puppet_test1']
    }

    netapp_volume { 'v_puppet_test1':
    ensure => present,
    initsize => "1t",
    aggregate => "aggr01",
    spaceres => "none",
    }
    I've tried multiple agent runs, multiple master restarts, all to no
    avail...

    Any ideas on what could be the issue?

    As always, latest code is available in Git...

    Cheers
    Gavin

    On Wednesday, 7 November 2012 12:06:17 UTC, Gavin Williams wrote:

    Quick update... It looks like all that was needed to resolve the below
    was a puppetmaster restart.

    Have successfully managed to create a new volume on the NetApp filer
    using puppet :) :D

    Now to plough on with adding support for the rest of the bits we need :)

    Cheers
    Gavin
    On Tuesday, 6 November 2012 17:40:34 UTC, Gavin Williams wrote:

    Scratch my last, had a bit of a eureka moment...

    Added ':transport: to the attr_accessor against device.rb, and it
    started working again...

    However now failing elsewhere...
    Have got the following against a relevant node:

    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    initsize => "1g",
    aggr => "aggr01",
    spaceresv => "none",
    }
    The run is failing with:
    Error: Could not retrieve catalog from remote server: Error 400 on
    SERVER: Invalid parameter aggr at /etc/puppet/manifests/site.pp:30 on node
    actint-star-nactl01
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Error: Could not set 'present' on ensure: undefined method
    `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Wrapped exception:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160>
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]/ensure:
    change from absent to present failed: Could not set 'present' on ensure:
    undefined method `result_reason' for #<NaElement:0x7ffb9cb5d160> at
    27:/etc/puppet/manifests/site.pp
    Got some debug logging, which is giving:
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: checking
    existance of Netapp Volume v_puppet_test
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Vol Info:
    <results status="failed" reason="No volume named 'v_puppet_test' exists"
    errno="13040"></results>

    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: Volume doesn't
    currently exist.
    ^[[0;36mDebug^[[0m: Puppet::Provider::Netapp_volume: creating Netapp
    Volume v_puppet_test of initial size 1g
    So I can see that the provider exists? is working correctly, and it's
    trying to fire the create def...

    The type is defined correctly afaik:
    Puppet::Type.newtype(:netapp_volume) do
    @doc = "Manage Netapp Volume creation, modification and deletion."

    apply_to_device

    ensurable do
    desc "Netapp Volume resource state. Valid values are: present, absent."

    defaultto(:present)

    newvalue(:present) do
    provider.create
    end

    newvalue(:absent) do
    provider.destroy
    end
    end

    newparam(:name) do
    desc "The volume name."
    isnamevar
    #newvalues(/^[[:alpha:][:digit:]\.]+$/)
    end

    newparam(:initsize) do
    desc "The initial volume size."
    defaultto "1g"

    end

    newparam(:aggr) do
    desc "The aggregate this volume should be created in."

    end

    newparam(:spaceresv) do
    desc "The space reservation mode."

    end
    end
    Latest code in Git...

    Any ideas?

    Cheers
    Gavin
    On Monday, 5 November 2012 17:46:07 UTC, Gavin Williams wrote:

    Looks like the below error was caused by some locally cached code that
    hadn't been updated by my Git pull :s

    Resolved that, and now am getting the following:

    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp.rb]/content:
    content changed '{md5}399796914d8aeb68387455de5b24f735' to
    '{md5}3be2121ab99116c4bc89db21d5d4b54b'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}46b2a0004e0245c577974e7a645e08f7' to
    '{md5}1b06628868826a8ea64744a7ae8ec8da'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type]/mode:
    mode changed '0775' to '0755'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}ebe14c73783c97063d9b6ae0bc791896' to
    '{md5}2fb244482c7d760e6cc132f104be619d'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/facts.rb]/content:
    content changed '{md5}c7e59e79e19486cba9ae7e5314b2a061' to
    '{md5}b0c912dc663d5251219bbad895455834'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/device.rb]/content:
    content changed '{md5}7354a748bd41582fcf76bf2643098fcd' to
    '{md5}9d2e26f97c7ea6ea16177acb8df85714'
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/util/network_device/netapp/NaServer.rb]/content:
    content changed '{md5}cd815964f9a2dfe757f5365a848b80d5' to
    '{md5}63f12abed9d1145b6d326c9fc06eb0c0'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `transport' for
    #<Puppet::Util::NetworkDevice::Netapp::Device:0x7ff3142c80f8>
    Finished catalog run in 0.11 seconds
    If I change *provider/netapp_volume/netapp_volume.rb *as follows*:*
    /File[/var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    ---
    /var/lib/puppet/lib/puppet/provider/netapp_volume/netapp_volume.rb
    2012-11-05 17:26:56.257616498 +0000
    +++ /tmp/puppet-file20121105-8521-10tepn6-0 2012-11-05
    17:40:16.440612301 +0000
    @@ -19,7 +19,7 @@

    def exists?
    Puppet.debug("Puppet::Provider::Netapp_volume: checking
    existance of Netapp Volume #{resource[:name]}")
    - transport.invoke("volume-list-info").include?(resource[:name])
    + @transport.invoke("volume-list-info").include?(resource[:name])
    end I get:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/provider/netapp_volume/netapp_volume.rb]/content:
    content changed '{md5}1b06628868826a8ea64744a7ae8ec8da' to
    '{md5}feb535835cefd0921c8be5d0af6e11f2'
    Info: Caching catalog for actint-star-nactl01
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: undefined method `invoke' for nil:NilClass
    Finished catalog run in 0.20 seconds
    So not sure why it's not working either way...

    Any ideas???

    Cheers
    Gavin

    On Monday, 5 November 2012 16:44:15 UTC, Gavin Williams wrote:

    Ok, moving on then...

    I've created a 'netapp_volume' type and provider, and am trying to
    test it against one of the existing NetApp device nodes:
    *manifests/site.pp* contains:

    node 'actint-star-nactl01' {
    # Test NetApp volume provider
    netapp_volume { 'v_puppet_test':
    ensure => present,
    }

    }

    When running *'puppet device -v'*, I get:
    $ sudo puppet device -v
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Warning: Local environment: "production" doesn't match server
    specified node environment "development", switching agent to "development".
    Info: Retrieving plugin
    /File[/var/lib/puppet/devices/actint-star-nactl01/lib/puppet/type/netapp_volume.rb]/content:
    content changed '{md5}2f3e20a3878f9ed94a5fffc4a9811ef7' to
    '{md5}ebe14c73783c97063d9b6ae0bc791896'
    Error: Could not autoload
    puppet/provider/netapp_volume/netapp_volume: uninitialized constant
    Puppet::Provider::Netapp
    Error: Could not autoload puppet/type/netapp_volume: Could not
    autoload puppet/provider/netapp_volume/netapp_volume: uninitialized
    constant Puppet::Provider::Netapp
    Error: Could not retrieve catalog from remote server: Could not
    intern from pson: Could not autoload puppet/type/netapp_volume: Could not
    autoload puppet/provider/netapp_volume/netapp_volume: uninitialized
    constant Puppet::Provider::Netapp
    Using cached catalog
    Info: Applying configuration version '1352132516'
    Error:
    /Stage[main]//Node[actint-star-nactl01]/Netapp_volume[v_puppet_test]: Could
    not evaluate: No ability to determine if netapp_volume exists
    Finished catalog run in 0.21 seconds
    So it's failing to autoload my new provider, however I'm not sure
    what 'uninitialised constant' means :s
    The class *Puppet::Provider::Netapp* is defined in *
    lib/puppet/provider/netapp.rb*.

    I've pushed the latest edits into Github<https://github.com/fatmcgav/fatmcgav-netapp>.


    Ideas welcome.

    Cheers
    Gavin
    On Monday, 5 November 2012 15:26:08 UTC, Gavin Williams wrote:

    Me again...

    I pressed on using the /var/lib/puppet... configdir for the
    time-being, and with a bit more jiggery pokery, I've managed to
    successfully register a NetApp device, and extract some facts from it...
    And here's the photographic proof :) :D http://ow.ly/i/15SLN

    Now to start looking at how to handle the next steps, such as volume
    creation, quota creation, export creation... :D

    Latest code has been pushed to Github<https://github.com/fatmcgav/fatmcgav-netapp>
    ...

    Still need to work out how to use a central confdir rather than
    agent specific ones, but can come back to that :)

    Cheers
    Gavin
    On Monday, 5 November 2012 11:35:26 UTC, Gavin Williams wrote:

    Ok, have fixed that error aswell...

    Replaced *':configdir' *with *':confdir'*.
    However it's now failing due to the netapp.yml file not being
    present... What's confused me is the path it's come up with for *
    ':confdir'*. According to the debug output, it's trying to use

    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: connecting to Netapp
    device actint-star-nactl01.
    ESC[0;36mDebugESC[0m: Puppet::Device::Netapp: configdir is
    /var/lib/puppet/devices/actint-star-nactl01.
    However I would prefer it to use */etc/puppet* on the master...
    Any way I could do this, other than hard-coding?

    Cheers
    Gavin
    On Monday, 5 November 2012 11:24:16 UTC, Gavin Williams wrote:

    Ok, after a bit more googling, have solved the NaElement load
    error...

    Tweaked the NaServer.rb file as follows:

    #require 'NaElement'
    require File.dirname(__FILE__) + "/NaElement"
    I've now successfully loaded the require Netapp SDK files, and
    started working through the connection process...
    Though it looks like it's hit another error:

    Debug: Puppet::Device::Netapp: connecting to Netapp device
    actint-star-nactl01.
    Debug: Puppet::Device::Netapp: configdir is .
    Error: Can't load netapp for actint-star-nactl01: undefined
    method `+' for nil:NilClass
    Tracked the above back to *device.rb*, where it's attempting to
    use *'Puppet[:configdir]'* but is failing to find the value...

    So now to work out what's going on there :)

    Cheers
    Gav
    On Monday, 5 November 2012 10:47:56 UTC, Gavin Williams wrote:

    Hi all

    Following on from my previous post Puppet Network Devices..<https://groups.google.com/forum/?fromgroups=#!topic/puppet-users/fuXshtYmhhk>I've now started work on creating a NetApp network device provider for
    Puppet...

    I'm trying to start simply by just gathering some facts from our
    filers.

    The code soo far is available here:
    https://github.com/fatmcgav/shrug-netapp/ Credit to the original
    author shrug for setting out the framework...

    Anyhow, onto my first challenge.

    I've downloaded and added the relevant NetApp SDK files into *
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/* as
    shown below:

    $ ls -l
    modules/shrug-netapp/lib/puppet/util/network_device/netapp/
    total 88
    -rw-r--r--. 1 puppet puppet 924 Nov 2 17:13 device.rb
    -rw-r--r--. 1 puppet puppet 8229 Nov 2 17:16 DfmErrno.rb
    -rw-r--r--. 1 puppet puppet 228 Nov 2 17:00 facts.rb
    -rw-r--r--. 1 puppet puppet 9451 Nov 2 17:16 NaElement.rb
    -rw-r--r--. 1 puppet puppet 36089 Nov 2 17:15 NaErrno.rb
    -rw-r--r--. 1 puppet puppet 19036 Nov 2 17:15 NaServer.rb
    The NaServer class is then included within the device.rb file
    above.
    However Puppet is currently failing with:
    Info: starting applying configuration to actint-star-nactl01 at
    actint-star-nactl01
    Error: Could not run: no such file to load -- NaElement
    This NaElement file is require'd by the NaServer class.
    However it seems to be failing due to the include path not
    including the NaElement.rb file...
    Therefore I'm guessing that Puppet/Ruby is looking for the
    NaElement file in some default location, rather than the same location as
    the NaServer class...

    I've generated the same error on some tests scripts by moving the
    NetApp SDK files into a sdk sub folder, and then just *"require
    sdk/NaServer"* in my script, which generates a very similar
    error:
    ruby hello_ontapi.rb 192.168.35.118 root xxx
    ./sdk/NaServer.rb:21:in `require': no such file to load --
    NaElement (LoadError)
    from ./sdk/NaServer.rb:21
    from hello_ontapi.rb:24:in `require'
    from hello_ontapi.rb:24
    Any ideas how I could work around this?

    Cheers
    Gavin
    --
    You received this message because you are subscribed to the Google Groups "Puppet Users" group.
    To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/goMttCeCMHAJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Jakov Sosic at Dec 19, 2012 at 2:34 am

    On 11/12/2012 12:59 PM, Gavin Williams wrote:
    Monday update from me...

    Implemented support for Export creation on Friday, after making some
    further good progress...

    Now I'm looking at fine-tuning stuff, such as volume settings, export
    options, etc...
    Great work! When I get some spare time I will continue to work on my
    cobbler custom types, so I will take a peek into your code aswell. My
    providers are good for our internal use so I pushed on with other stuff
    although they still need some optimizations. Just keep on the good work :)

    --
    Jakov Sosic
    www.srce.unizg.hr

    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
  • Fatmcgav at Dec 20, 2012 at 8:13 pm
    Jakov

    Thank you for the positive feedback.

    The NetApp puppet stuff is on the back burner atm, hopefully should be able
    to get back to buy in the new year :-)

    Cheers
    Gav
    On Dec 19, 2012 2:34 AM, "Jakov Sosic" wrote:
    On 11/12/2012 12:59 PM, Gavin Williams wrote:

    Monday update from me...

    Implemented support for Export creation on Friday, after making some
    further good progress...

    Now I'm looking at fine-tuning stuff, such as volume settings, export
    options, etc...
    Great work! When I get some spare time I will continue to work on my
    cobbler custom types, so I will take a peek into your code aswell. My
    providers are good for our internal use so I pushed on with other stuff
    although they still need some optimizations. Just keep on the good work :)

    --
    Jakov Sosic
    www.srce.unizg.hr

    --
    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+unsubscribe@**
    googlegroups.com <puppet-users%2Bunsubscribe@googlegroups.com>.
    For more options, visit this group at http://groups.google.com/**
    group/puppet-users?hl=en<http://groups.google.com/group/puppet-users?hl=en>
    .
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedNov 5, '12 at 10:47a
activeDec 20, '12 at 8:13p
posts14
users2
websitepuppetlabs.com

2 users in discussion

Fatmcgav: 13 posts Jakov Sosic: 1 post

People

Translate

site design / logo © 2022 Grokbase