On Mon, Sep 10, 2012 at 7:06 PM, Alex Harvey <
alexh...@gmail.com> wrote:
> Hi all,
>
> I am new to Ruby, Puppet & this project so bear with me if I am on the wrong
> track.
>
Welcome and thanks for helping out.
> I am in the process of deploying Puppet to a large fleet of HP-UX versions
> 11.00, 11.11, 11.23 and 11.31 as well as Solaris versions 2.5, 2.6, 7, 8 & 9
> (as well as plenty of AIX & RHEL/CentOS that isn't relevant to this post).
>
> We have found that facter's processorcount & processorN code breaks on HP-UX
> (where HP-UX doesn't appear to be supported) and also on all versions of
> Solaris prior to Solaris 10. This relates to Bug #14674.
>
> I am proposing the following changes to 1.6.x to fix the code per
> suggestions from Josh Cooper as well as providing patches for the versions
> of HP-UX and legacy Solaris we can test on.
>
> * I would begin by refactoring util/processor.rb a little moving iterative
> code to the top, all Facter.add blocks after this, and standardise naming of
> 'ProcessorCount' using camel case. I would do this in a single commit?
>
I would do that in two commits. Partly because as much as
standardizing the naming would be good, it might have to get dropped
so as to not break uses of it. Smaller, targeted commits are usually
better than larger ones.
> * I understand Josh Cooper's suggestion "It should only call these methods
> on the appropriate platform, and it should only call them when needed (if
> processor_list is empty)" (from
http://projects.puppetlabs.com/issues/14674)
> thus have rewritten
>
> ## We have to enumerate these outside a Facter.add block to get the
> processorN descriptions iteratively
> ## (but we need them inside the Facter.add block above for tests on
> processorcount to work)
> processor_list = Facter::Util::Processor.enum_cpuinfo
> processor_list_aix = Facter::Util::Processor.enum_lsdev
> processor_list_sunos = Facter::Util::Processor.enum_kstat
>
> if processor_list.length != 0
> etc
>
> as
>
> ## We have to enumerate these outside a Facter.add block to get the
> processorN descriptions iteratively
> ## (but we need them inside the Facter.add block above for tests on
> processorcount to work)
> if Facter.value(:kernel) == "AIX"
> processor_list = Facter::Util::Processor.enum_lsdev
> elsif Facter.value(:kernel) == "SunOS"
> processor_list = Facter::Util::Processor.enum_kstat
> else
> processor_list = Facter::Util::Processor.enum_cpuinfo
> end
>
> if processor_list.length != 0
> processor_list.each_with_index do |desc, i|
> Facter.add("Processor#{i}") do
> confine :kernel => [ :linux, :"gnu/kfreebsd", :aix, :sunos ]
> setcode do
> desc
> end
> end
> end
> end
>
I don't think you need to preserve those `if processor_list.length`
checks. Just call the `each_with_index` and if the list is empty
nothing will happen.
> * Having done that I would then open bugs for the failures I get in HP-UX
> and legacy Solaris. I documented the HP-UX problem in an update to #14674
> and feel it might be reasonable to fix HP-UX under the same bug? Thus I
> would in a single commit add a case for HP-UX -
>
I would open another bug or find something that already exists to
track adding the HP-UX facts. #11612 seems like it might be closely
related.
> elsif Facter.value(:kernel) == "HP-UX"
> processor_list = Facter::Util::Processor.enum_machinfo
> ...
>
> and provide the method enum_machinfo in util/processor.rb to get CPU
> information on HP-UX.
>
> * Then I will open a bug for legacy Solaris. The problem with legacy
> Solaris is that 'kstat cpu_info' was not introduced until Solaris 8; on
> Solaris 7 and earlier this code fails. I'll work out a solution to this
> problem prior to raising the bug.
>
> I have read the documentation about how to contribute, and so forth, so will
> follow that. Otherwise, do I sound like I am on the right track?
>
I think it sounds like you have a good handle on things. As you submit
stuff the conversation will continue, of course. :)
> Kind regards,
> Alex Harvey
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To view this discussion on the web visit
>
https://groups.google.com/d/msg/puppet-dev/-/xQsajJ6FTccJ.
> To post to this group, send email to
puppe...@googlegroups.com.
> To unsubscribe from this group, send email to
>
puppet-dev+...@googlegroups.com.
> For more options, visit this group at
>
http://groups.google.com/group/puppet-dev?hl=en.