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