Issue #11082 has been updated by Ken Barber.

Status changed from In Topic Branch Pending Review to Code Insufficient

> I added some tests and just learned about a special behaviour of facter:

Cheers mate. Can you rebase it off master? I just closed your pull request and 
marked this as Code Insufficient (which isn't quite true - there just isn't a 
more appropriate status) - reopen and change the ticket status when you're 
ready.

> If we have more than one operatingsystemrelease fact that suits our system, 
> facter will iterate over all instances until one is not returning nil or "". 
> So if the newly added `operatingsystemrelease` fact does return nil (release 
> string cannot be parsed) or raises an exception (file is not present or 
> empty) the next operatingsystemrelase fact is picked. And that is currently 
> the one that just returns the kernelrelease fact.
> 
> This behaviour is now reflected in the tests but I cannot say I like it. I'd 
> prefer to deprecate the operatingsystemrelease fact that returns the 
> kernelrelease fact. Like printing a warning 'operatingsystemrelease fact is 
> not yet implemented for your system. Please use the kernelrelease fact 
> instead. The value of the operatingsystemrelease fact may change in the 
> future'
> 
> In the end the operatingsystemrelease fact would either return the correct 
> value or nothing but not try to find something in between.

I see your point and have some thoughts on it - lets cut another ticket as 
'Needs Decision' and we'll debate it there shall we?
----------------------------------------
Feature #11082: operatingsystemrelease for Solaris
https://projects.puppetlabs.com/issues/11082

Author: John Warburton
Status: Code Insufficient
Priority: Normal
Assignee: Stefan Schulte
Category: library
Target version: 1.7.x
Keywords: 
Branch: https://github.com/stschulte/facter/tree/feature/1.6.x/11082
Affected Facter version: 


We need to know what release of Solaris installed. We have code (below) which 
parses /etc/release, which maybe others would like to see in future versions of 
facter rather than returning kernelversion

Code is clunky, as my ruby is pretty basic, but should go into 
lib/facter/operatingsystemrelease.rb. Ideally the regexp should not need the 
extra "ustring" search, but I haven't worked out how to cater for when the "_u" 
is not present - which is why I'm not prepared to submit a patch

The values returned work correctly with the versioncmp function

        releasefile = "/etc/release"
        File::open(releasefile, "r") do |f|
            line = f.readline.chomp

            line =~ /s(\d+)[s|x]*.* [SPARC|X86]/
            relstring = $1

            # sometimes the _u is not there on the initial release
            line =~ /s\d+[s|x]*_u(\d+).* [SPARC|X86]/
            ustring = $1
            if (ustring.nil?)
                operatingsystemrelease = relstring
            else
                operatingsystemrelease = relstring + "_u#{ustring}"
            end

Note that this regexp has been tested against all /etc/release entries from 
Solaris 8 to Solaris 10 U10 (SPARC & x86) per Support Document [How to 
Determine the Release and Default Kernel Version in the Solaris Operating 
System [ID 
1002239.1]](https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=HOWTO&id=1002239.1)
 (you need an Oracle support account to view this file). I do not have a 
Solaris 11 server to validate Solaris 11

Here are my test results:
    Solaris 8 s28_38shwp2 SPARC ==> 28
    Solaris 8 6/00 s28s_u1wos_08 SPARC ==> 28_u1
    Solaris 8 10/00 s28s_u2wos_11b SPARC ==> 28_u2
    Solaris 8 1/01 s28s_u3wos_08 SPARC ==> 28_u3
    Solaris 8 4/01 s28s_u4wos_08 SPARC ==> 28_u4
    Solaris 8 7/01 s28s_u5wos_08 SPARC ==> 28_u5
    Solaris 8 10/01 s28s_u6wos_08a SPARC ==> 28_u6
    Solaris 8 2/02 s28s_u7wos_08a SPARC ==> 28_u7
    Solaris 8 HW 12/02 s28s_hw1wos_06a SPARC ==> 28
    Solaris 8 HW 5/03 s28s_hw2wos_06a SPARC ==> 28
    Solaris 8 HW 7/03 s28s_hw3wos_05a SPARC ==> 28
    Solaris 8 2/04 s28s_hw4wos_05a SPARC ==> 28
    Solaris 9 s9_58shwpl3 SPARC ==> 9
    Solaris 9 9/02 s9s_u1wos_08b SPARC ==> 9_u1
    Solaris 9 12/02 s9s_u2wos_10 SPARC ==> 9_u2
    Solaris 9 4/03 s9s_u3wos_08 SPARC ==> 9_u3
    Solaris 9 8/03 s9s_u4wos_08a SPARC ==> 9_u4
    Solaris 9 12/03 s9s_u5wos_08b SPARC ==> 9_u5
    Solaris 9 4/04 s9s_u6wos_08a SPARC ==> 9_u6
    Solaris 9 9/04 s9s_u7wos_09 SPARC ==> 9_u7
    Solaris 9 9/05 s9s_u8wos_05 SPARC ==> 9_u8
    Solaris 9 9/05 HW s9s_u9wos_06b SPARC ==> 9_u9
    Solaris 10 3/05 s10_74L2a SPARC ==> 10
    Solaris 10 3/05 HW1 s10s_wos_74L2a SPARC ==> 10
    Solaris 10 3/05 HW2 s10s_hw2wos_05 SPARC ==> 10
    Solaris 10 1/06 s10s_u1wos_19a SPARC ==> 10_u1
    Solaris 10 6/06 s10s_u2wos_09a SPARC ==> 10_u2
    Solaris 10 11/06 s10s_u3wos_10 SPARC ==> 10_u3
    Solaris 10 8/07 s10s_u4wos_12b SPARC ==> 10_u4
    Solaris 10 5/08 s10s_u5wos_10 SPARC ==> 10_u5
    Solaris 10 10/08 s10s_u6wos_07b SPARC ==> 10_u6
    Solaris 10 5/09 s10s_u7wos_08 SPARC ==> 10_u7
    Solaris 10 10/09 s10s_u8wos_08a SPARC ==> 10_u8
    Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC ==> 10_u9
    Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC ==> 10_u10
    Solaris 10 3/05 HW1 s10x_wos_74L2a X86  ==> 10
    Solaris 10 1/06 s10x_u1wos_19a X86 ==> 10_u1
    Solaris 10 6/06 s10x_u2wos_09a X86  ==> 10_u2
    Solaris 10 11/06 s10x_u3wos_10 X86  ==> 10_u3
    Solaris 10 8/07 s10x_u4wos_12b X86  ==> 10_u4
    Solaris 10 5/08 s10x_u5wos_10 X86  ==> 10_u5
    Solaris 10 10/08 s10x_u6wos_07b X86  ==> 10_u6
    Solaris 10 5/09 s10x_u7wos_08 X86 ==> 10_u7
    Solaris 10 10/09 s10x_u8wos_08a X86 ==> 10_u8
    Oracle Solaris 10 9/10 s10x_u9wos_14a X86 ==> 10_u9
    Oracle Solaris 10 8/11 s10x_u10wos_17b X86 ==> 10_u10



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to