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

Reply via email to