Jeff/Chris/All Completely missed this topic when doing my own investigations on this issue...
However the same problem discussed on Puppet-dev<https://groups.google.com/forum/#!topic/puppet-dev/bU0_X_MOiuo>has highlighted the same issue... I have therefore raised Issue 21975<http://projects.puppetlabs.com/issues/21975>to try and get it fixed... Would probably be beneficial if you could up-vote it... Cheers Gavin On Tuesday, 18 June 2013 13:56:33 UTC+1, [email protected] wrote: > > Hi Chris, > > I think I've narrowed the issue down. > > I'm able to use the 10.2.0.2 f5 gem in a simple script with F5 v11.3.0 to > create an f5_node so it looks like the F5 is keeping some > backwards-compatibility. > > The problem is only occurring when the F5 gem is used within puppet. The > f5 gem is using the ruby 1.8.7's built-in SOAP library that clashes with a > monkey-patch in Puppet to override the instance_variables method of the > basic Ruby Object class. > > The patch was introduced in this commit: > https://github.com/puppetlabs/puppet/commit/1f4e44c26a0d703d1192d26ef8ab555e4508e338 > *lib/puppet/util/monkey_patches.rb*: > > class Object > alias :puppet_original_instance_variables :instance_variables > > def instance_variables > puppet_original_instance_variables.map(&:to_sym) > end > end > > > This in turn clashes with the SOAP class in Ruby 1.8.7: > lib/soap/mapping/mapping.rb: > > def self.get_attribute(obj, attr_name) > if obj.is_a?(::Hash) > obj[attr_name] || obj[attr_name.intern] > else > name = XSD::CodeGen::GenSupport.safevarname(attr_name) > if obj.instance_variables.include?('@' + name) > obj.instance_variable_get('@' + name) > elsif ((obj.is_a?(::Struct) or obj.is_a?(Marshallable)) and > obj.respond_to?(name)) > obj.__send__(name) > end > end > end > > > Since Puppet has overridden the instance_variable method to return an > Array of Symbols, this breaks the obj.instance_variables.include?('@' + > name) line because it is trying to compare a Symbol with a String which > will always be false. This in turn causes the F5 gem to send SOAP requests > to the F5 with nil values so the nodes are never created on the F5. > > This is a pretty strange issue as I thought that there would have been > other users of the puppetlabs-f5 module with Ruby 1.8.7 and so would have > hit the same issue, or am I missing something? > > Anyway, it looks like to fix the problem we'll either need to patch the F5 > gem to override the above method within Ruby or somehow revert the > monkeypatch in Puppet for the F5 puppet module, unless you can think of a > cleaner and better solution? > > Jeff > > On Wednesday, June 12, 2013 3:34:02 PM UTC+10, Christopher Wood wrote: >> >> Unfortunately due to various non-puppet bigip upgrade issues I haven't >> been able to back to this yet. If I get anything useful working I will >> post. >> >> On Tue, Jun 11, 2013 at 03:32:56AM -0700, [email protected] wrote: >> > Hi Chris, >> > How did you go with trying to use the Puppet F5 module with v11.3.0? >> I >> > think I am having the same issue as you were. >> > The puppet output would say that the resource was created but the >> iControl >> > debug logs shows that it is being sent an empty SOAP create message. >> > I've tried running a simple ruby script using the 10.2.0.2 f5 gem >> and was >> > able to create the node successfully so it looks the Puppet is doing >> > something funny. >> > Any help would be greatly appreciated. >> > Thanks, >> > Jeff >> > >> > On Tuesday, February 12, 2013 8:31:04 AM UTC+11, Christopher Wood >> wrote: >> > >> > On Mon, Feb 11, 2013 at 12:40:12PM -0800, Nan Liu wrote: >> > > On Mon, Feb 11, 2013 at 8:27 AM, Christopher Wood >> > > <[1][1][email protected]> wrote: >> > > >> > > (Following up to my own post for posterity's sake, see >> > [2][2]xkcd.com/979.) >> > > >> > > Short form: for me this isn't yet as easy as a file >> resource but >> > the >> > > puppetized management payoff will be worth the work. My >> issues >> > are most >> > > likely a reflection of my own puppet/ruby/iControl/SOAP >> skill. >> > > >> > > I am going to explore a personalized set of F5 >> types/providers >> > that I >> > > can use without first loading up the wsdl file for every >> involved >> > > iControl interface, version, and hotfix. >> > > >> > > Points from my various BigIP/puppet experimentations: >> > > >> > > a) The f5-icontrol-10.2.0.2.gem doesn't necessarily work >> with LTM >> > > 11.1.0. (Or I haven't figured it out, also quite likely.) >> This >> > could be >> > > because the gem ships different wsdl files but I couldn't >> get it >> > to work >> > > with later iControl wsdl files anyway. >> > > >> > > b) In LTM 11, F5 deprecated some interfaces so puppet f5 >> module >> > > providers like f5_node are suddenly using deprecated >> interfaces. >> > > >> > > c) Some parts of the iControl api are being updated/fixed >> over >> > time, for >> > > instance the hotfix id 388590 reading "Certificates can now >> > successfully >> > > be updated using the iControl Management::KeyCertificate >> > interface", >> > > see: >> > > >> > > >> > [3][3] >> http://support.f5.com/kb/en-us/solutions/public/14000/100/sol14175.html >> > > >> > > d) Judging by my soap-newbie eye the soap4r package appears >> > abandonware, >> > > savon isn't up to complicated data structures and I have >> yet to >> > dive >> > > into handsoap (the starter page says to start with a wsdl, >> see my >> > > wsdl-tracking issues). Picking the right soap package to >> use is >> > likely >> > > going to be job 1. >> > > >> > > (If the list has any feedback to the above, I'm very much >> all >> > ears.) >> > > >> > > Have you tried the v11 >> > > gem?�[4][4]https://devcentral.f5.com/internal-forums/aff/2306. >> The >> > module >> > > certainly needs to updates against v11 API, but seems like it >> would >> > be a >> > > better starting point. >> > > Nan� >> > >> > I might give that a go. That LTM 11 gem is for 11.1.0 and I'm >> already on >> > 11.3.0 in the lab due to a key/cert management issue, but the gem >> should >> > be fine if I rebuild it with the wsdl files from my lab device. >> > >> > > -- >> > > You received this message because you are subscribed to the >> Google >> > Groups >> > > "Puppet Users" group. >> > > To unsubscribe from this group and stop receiving emails from >> it, >> > send an >> > > email to [5][email protected]. >> > > To post to this group, send email to [6] >> [email protected]. >> > > Visit this group at >> > [5][7]http://groups.google.com/group/puppet-users?hl=en. >> > > For more options, visit >> > [6][8]https://groups.google.com/groups/opt_out. >> > > >> > > >> > > >> > > References >> > > >> > > Visible links >> > > 1. mailto:[9][email protected] >> > > 2. [10]http://xkcd.com/979 >> > > 3. >> > [11] >> http://support.f5.com/kb/en-us/solutions/public/14000/100/sol14175.html >> > > 4. [12]https://devcentral.f5.com/internal-forums/aff/2306 >> > > 5. [13]http://groups.google.com/group/puppet-users?hl=en >> > > 6. [14]https://groups.google.com/groups/opt_out >> > >> > References >> > >> > Visible links >> > 1. javascript: >> > 2. http://xkcd.com/979 >> > 3. >> http://support.f5.com/kb/en-us/solutions/public/14000/100/sol14175.html >> > 4. https://devcentral.f5.com/internal-forums/aff/2306 >> > 5. javascript: >> > 6. javascript: >> > 7. http://groups.google.com/group/puppet-users?hl=en >> > 8. https://groups.google.com/groups/opt_out >> > 9. javascript: >> > 10. http://xkcd.com/979 >> > 11. >> http://support.f5.com/kb/en-us/solutions/public/14000/100/sol14175.html >> > 12. https://devcentral.f5.com/internal-forums/aff/2306 >> > 13. http://groups.google.com/group/puppet-users?hl=en >> > 14. https://groups.google.com/groups/opt_out >> >> -- You received this message because you are subscribed to the Google Groups "Puppet Users" 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-users. For more options, visit https://groups.google.com/groups/opt_out.
