As a quick update, I've pushed my latest set of code tweaks up - 
https://github.com/fatmcgav/fatmcgav-netapp/commit/7a7d18bf39cdbb04a3b0b5192929ec6a857c0a5e

Need to tidy the code up a bit, but should be able to get the gist :) Have 
got a couple of defs which pull back the bulk of the information, and then 
a couple that need to be called on a volume by volume basis. 
All gets put together in instances, and provider'd up in prefetch. 

Comments welcome. 

Cheers
Gavin 

On Friday, 29 March 2013 13:15:12 UTC, Gavin Williams wrote:
>
> Luke
>
> Cheers for that info, should prive useful... 
>
> Guess I could implement a method for each property that pulls back all 
> that property values for all the volumes, and then match them up in 
> prefetch. 
>
> Cheers 
> Gav 
> On 29 Mar 2013 12:49, "Luke Kanies" <[email protected]> wrote:
>
>> Hi Gavin,
>>
>> Yeah, there isn't as much consistency in API as I would like.
>>
>> The way it should work, I believe, is something like:
>>
>> * The Type should support an 'instances' method that returns a complete 
>> list of all instances of that type that exist on the host itself.  This 
>> method should not require a catalog.
>>
>> * The provider should support a 'prefetch' method, which accepts a list 
>> of resources from the catalog and updates them with the correct provider 
>> instance, with appropriate data already filled in to reflect the system 
>> state.
>>
>> * Optionally, many providers implement (I think) their own 'instances' 
>> method, which returns all instances and doesn't require a catalog, to 
>> implement both of the above methods.
>>
>> I just looked at the Provider base class, though, and it's not at all 
>> clear from this.  Part of the problem is that the system is smart enough to 
>> skip providers that don't support prefetch, and the way we denote 'doesn't 
>> support prefetch' is that it doesn't have the method.  Given that, I left 
>> the method off of the base class.  Because 'instances' isn't used for this 
>> kind of test, the base class ships with a stub method that just throws an 
>> error.
>>
>> So yeah, all that's confusing, and could really use some additional work 
>> to make it easier to understand, and to bring some consistency.
>>
>> On Mar 29, 2013, at 12:37 PM, fatmcgav <[email protected]> wrote:
>>
>> Luke
>>
>> No worries. 
>>
>> For the 2 I've converted soo far, it's made quite a performance 
>> difference. Thankfully can pull back all the resources with one NetApp api 
>> call, so it's drop the resource time from 5+ seconds to sub 1 second. 
>> However was a bit confused initially, as different providers seem to use 
>> different models... Some with just prefetch, some with just instances, some 
>> with both... 
>>
>> However I'm just about to start the more complex netapp_volume provider, 
>> which has 4+ properties that have different api calls on top of the base 
>> resource list call. This is by far the slowest provider out of them with an 
>> average of 20+ seconds per run. 
>> So not sure of the best way to handle as yet.
>>
>> Cheers 
>> Gav 
>> On 29 Mar 2013 12:11, "Luke Kanies" <[email protected]> wrote:
>>
>>> Hi Gavin,
>>>
>>> I'm glad to see you've sorted it out, sorry I didn't jump in before it 
>>> was all resolved.
>>>
>>> How has prefetching worked out for you, in terms of performance?
>>>
>>> On Mar 28, 2013, at 3:28 PM, Gavin Williams <[email protected]> wrote:
>>>
>>> Afternoon
>>>
>>> Managed to find my issue.. Variable name re-use :( 
>>>
>>> Defined 'qtrees' as an empty array on line 3, and then populated it with 
>>> a whole load of device output on line 18 :( 
>>>
>>> So have defined a 'qtree_instances' array on the outside to contain my 
>>> output, with qtrees being used on the inside to hold the NetApp filer 
>>> response... Latest code in 
>>> Github<https://github.com/fatmcgav/fatmcgav-netapp/commit/1d51b1267466176db1a3d4e6ae32d9340a06fb56>
>>> .
>>>
>>> Cheers
>>> Gavin 
>>>
>>> On Thursday, 28 March 2013 11:44:39 UTC, Gavin Williams wrote:
>>>>
>>>> Morning all
>>>>
>>>> Quick update... Looks like I managed to hack around the issue by adding 
>>>> the following:
>>>>
>>>> ...
>>>>
>>>>         ap qtree_info
>>>>  
>>>>         # Check if it is a NaElement
>>>>
>>>>         next unless qtree_info.respond_to?(:child_**get_string)
>>>>  
>>>>         # Pull out the qtree name.
>>>>
>>>>         name = qtree_info.child_get_string("**qtree")
>>>> ...
>>>>
>>>>
>>>> However this shows that I'm getting a total of 78 items processed, 
>>>> whereas the original array only contains 53 items... 
>>>> The additional items being processed are all like: '*
>>>> #<Puppet::Type::Netapp_qtree::ProviderNetapp_qtree:*'.
>>>> Have updated the gist with latest code and log file. 
>>>>
>>>> Would like to understand where these are coming from, and if it's 
>>>> something I'm doing incorrectly? 
>>>>
>>>> In the mean-time, following fixing that bug, the provider now seems to 
>>>> work as expected :) 
>>>>
>>>> Cheers
>>>> Gavin 
>>>>
>>>>
>>>> On Wednesday, 27 March 2013 17:32:23 UTC, Gavin Williams wrote:
>>>>>
>>>>> Afternoon all
>>>>>
>>>>> I've started working on converting a couple more of my NetApp network 
>>>>> device providers to use a prefetch/flush model, as can see performance 
>>>>> gains available, etc... 
>>>>>
>>>>> Anyways, I'm having issues with my netapp_qtree provider. It would 
>>>>> appear that somehow, an additional *Puppet::Type...* row is getting 
>>>>> into an array and breaking things... 
>>>>>
>>>>> Have created a gist here <https://gist.github.com/fatmcgav/5256240>with 
>>>>> the details, as the log file is quite long. 
>>>>> Also includes the *instances *and *prefetch* def's for my 
>>>>> netapp_qtree provider...
>>>>>
>>>>> As you can see on Line 337 of the log, the array contains 40 items, 
>>>>> however on line 734 *self.instances* is trying to process item 41?!?!
>>>>> What's also strange is that the item contents look like a Puppet Type (
>>>>> *#<Puppet::Type::Netapp_qtree*)**, whereas all the others in the 
>>>>> array are NetApp specific items (*#<NaElement:*).
>>>>>
>>>>> So, any ideas???
>>>>>
>>>>> Cheers
>>>>> Gavin 
>>>>>
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Puppet Developers" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>>
>>>  
>>> -- 
>>> Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | 
>>> +1-615-594-8199
>>> Join us at PuppetConf 2013, August 22-23 in San Francisco - 
>>> http://bit.ly/pupconf13
>>>  
>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "Puppet Developers" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/puppet-dev/74JW491YSAk/unsubscribe?hl=en
>>> .
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Puppet Developers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>>
>>  
>> -- 
>> Luke Kanies | http://about.me/lak | http://puppetlabs.com/ | 
>> +1-615-594-8199
>> Join us at PuppetConf 2013, August 22-23 in San Francisco - 
>> http://bit.ly/pupconf13
>>  
>>  -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "Puppet Developers" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/puppet-dev/74JW491YSAk/unsubscribe?hl=en
>> .
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>

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


Reply via email to