Re-sending to the MTT list, because I think our listserver will automatically block Brian (I'll add him to the whitelist for future posts!).

On Oct 31, 2008, at 12:56 PM, Brian Elliott Finley wrote:

I've taken a look at Ethan's patch.  I like the patch, and I like the
concept.  I made a small modification to it, breaking it out into a
subroutine, which I think makes the logic a bit easier to follow.

Take a look and try this out.  If it works for you, I'll commit it.

Cheers, -Brian




Jeff Squyres wrote:
Let's commit Ethan's patch, then, and see what Brian wants to do upstream.

On Oct 31, 2008, at 11:57 AM, Tim Mattox wrote:

Sorry about that, I missed that Ethan had supplied a workaround
patch.  Oops.
Ethan's patch works for me on sles9.

On Fri, Oct 31, 2008 at 11:42 AM, Jeff Squyres <jsquy...@cisco.com>
wrote:
Ok. Does Ethan's patch work for you, or should we just revert to our
prior
version until upstream is fixed?

On Oct 31, 2008, at 11:39 AM, Tim Mattox wrote:

The new version of whatami is what broke sles9.  That new version
assumes
that if an /etc/lsb-release file exists that it has info about what
distribution it is.
SLES seems to only put in what LSB it conforms to (the LSB_VERSION
environment variable).
Whatami should check if it got all the info it needs from the
lsb-release
file,
and if not, fall back to something else that worked before.

I just reverted the whatami I am using on BigRed to MTT's r1236 and it
works
again. No rush to fix this for me, but it is bad that whatami seems to
now
be broken for two major SLES releases (9 & 10).

On Fri, Oct 31, 2008 at 11:29 AM, Jeff Squyres <jsquy...@cisco.com>
wrote:

Which patch broke BigRed -- Ethan's patch, or Brian's original new
version
of whatami?


On Oct 31, 2008, at 11:20 AM, Tim Mattox wrote:

This change also broke whatami for sles9 (which happens to be what
our
BigRed
PPC cluster is running).

2008/10/30 Ethan Mallove <ethan.mall...@sun.com>:

Hi Brian,

I'm using your "whatami" in the MPI Testing Tool (MTT), but
I think a recent change to it broke for our sles10 system.
We have an lsb-release file that is different from what
"whatami" expects:

$ cat /etc/lsb-release


LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0- x86_64:core-3.0-x86_64"

$ uname -a
Linux burl-ct-v20z-6 2.6.16.46-0.12-smp #1 SMP Thu May 17
14:00:09 UTC
2007 x86_64 x86_64 x86_64 GNU/Linux

I attached a patch.

Regards,
Ethan

_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users





--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users


--
Jeff Squyres
Cisco Systems

_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users




--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users


--
Jeff Squyres
Cisco Systems

_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users




--
Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/
tmat...@gmail.com || timat...@open-mpi.org
  I'm a bright... http://www.the-brights.net/
_______________________________________________
mtt-users mailing list
mtt-us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users



--
Brian Elliott Finley
CIS / Argonne National Laboratory
Office: 630.252.4742
Mobile: 630.631.6621
#!/bin/sh
#
# whatami
# Prints a string describing the system type.
#
#   $Id:
#
# "whatami" is part of Msys, the MCS Systems Administration Toolkit.
# For more information, see http://www.mcs.anl.gov/systems/software/ .
#
# Copyright (c) University of Chicago 1999.
# See the COPYRIGHT file in the distribution for details on the copyright.
#
# = = = = = ======================================================================
#
# Description:
#
# Try to figure out what type of machine we're running on.
#
# The string returned is one that is useful to distinguish between
# system architectures, where we think of machines with the same architectures
# as machines that should be using the same set of compiled software.
#
# One would think that you could already get such a string from an existing # UNIX utility. But, no, this appears not to be the case. "uname" and # "arch" come close, but are inconsistent. Thus this script is basically
# a wrapper around those.
#
# Several other programs in the Msys distribution (and innumerable scripts
# around MCS) call this program.
#
# = = = = = ======================================================================
# TODO:
#
# Authors:
#
#   Remy Evard <ev...@mcs.anl.gov>
#       - Version 1.0 and 2.0:
#   2003.03.12 Brian Elliott Finley <fin...@anl.gov>
#       - added get_linux_type function to provide a three part type:
#         Ie: linux-debian_unstable-ia32, or linux-sles8-ia64
#       - added -o (option_test)
#   2003.10.16 Larry A. Diegel <diege...@sdsc.edu>
#       - patch for aix-5
#   2004.01.17 Brian Elliott Finley <fin...@anl.gov>
#       - modified --help output
#       - accept --long-options as well as -s (short options)
#   2004.02.04 Brian Elliott Finley <fin...@anl.gov>
#       - identify macosx on ppc and ppc64
#       - identify linux on Opteron (x86_64)
#   2004.02.26 Brian Elliott Finley <fin...@anl.gov>
#       - add redhat AS
#       - add mandrake 9.1
#       - add redhat 9
#       - add redhat 8
#   2005.01.19 Susan Coghlan <s...@mcs.anl.gov>
#       - add sles8 PPC64
#   2005.02.01 Susan Coghlan <s...@mcs.anl.gov>
#       - add sles9
#   2005.03.07 Brian Elliott Finley
# - add rhel, and deal w/different versions, sub-distros (AS| EL|WS)
#   2005.04.21 Peter Couvares <p...@cs.wisc.edu>
#       - add tao linux 1.0, cygwin
#   2005.04.22 Ti Leggett <legg...@mcs.anl.gov>
#       - add Gentoo
#   2006.03.14 JP Navarro <nava...@mcs.anl.gov>
#       - more precise AIX type, aix-{version}.{release}
#       - add Cray Rocks 1.3
#       - add CentOS 4.0
#       - add SGI ProPack 3 -> rhel3
#       - add SGI ProPack 4 -> sles9
#       - add SuSE 9.1
#   2006.03.21 JP Navarro <nava...@mcs.anl.gov>
#       - add Fedora Core <n>
#       - drop RHEL sub-distros
#       - ClassAd output support
#       - XML output support
#   2006.03.30 Ti Leggett <legg...@mcs.anl.gov>
#       - Fixed CentOS to recognize 4.x instead of only 4.0
#   2006.10.17 JP Navarro <nava...@mcs.anl.gov>
#       - Add SuSE 10.1
#   2007.01.02 JP Navarro <nava...@mcs.anl.gov>
#       - Add SuSE 10.2
#   2007.02.06 Ti Leggett <legg...@mcs.anl.gov>
#       - Add MacOS on Intel support
#   2008.10.14 Brian Finley <fin...@anl.gov>
#       - Add generic lsb_release support
#         - includes CentOS 5.x
#   2008.10.30 Ethan Mallove <ethan.mall...@sun.com>
#       - Support two different SuSE 10 lsb-release file formats
#   2008.10.30 Brian Finley <fin...@anl.gov>
#       - Turn Ethan's code and concept into a subroutine.
#
#   Authors -- Be sure to increment the version number appropriately!
#
# = = = = = ======================================================================
#
# Exit codes:
#
#   0 on success
#   1 on failure to grok arguments or figure out architecture details
#
# = = = = = ======================================================================
#
# Machine type strings:
#
#   sun4
#   irix-5
#   irix-6
#   solaris
#   freebsd
#   aix-{version}.{release}
#   aux
#   hpux
#   mips
#   osf
#   digital
#   next
#   linux-{distro_and_version}-{architecture}
#   solaris86
#   solarishp
#   nt
#   ntalpha
#
# = = = = = ======================================================================

program=`echo $0 | sed 's:.*/::'`
version="2008.10.31"

################################################################################
#
# Subroutines
#

get_lsb_info_if_available()
{
       if [ -f /etc/lsb-release ]; then
           #
# 1) Example contents of /etc/lsb-release from Ubuntu Hardy:
           #   DISTRIB_ID=Ubuntu
           #   DISTRIB_RELEASE=8.04
           #   DISTRIB_CODENAME=hardy
           #   DISTRIB_DESCRIPTION="Ubuntu hardy (development branch)"
           # 2) Example contents of /etc/lsb-release from SLES 9:
# LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0- x86_64:core-3.0-x86_64"
           . /etc/lsb-release

       elif [ -x /usr/bin/lsb_release ]; then
DISTRIB_ID=$(/usr/bin/lsb_release -i | sed -e 's/ ^Distributor ID:[[:space:]]//') DISTRIB_RELEASE=$(/usr/bin/lsb_release -r | sed -e 's/ ^Release:[[:space:]]//')
       fi
}

get_linux_type()
{
############################################################################
       #
# Step 1) Determine $hardware string (in Linux terms, based on architecture # names used by the Linux kernel. See /usr/src/ linux/hardware/ for
       #          details).
       #
       case $uhardware in
               alpha)
                       hardware=alpha
                       ;;
               i386|i486|i586|i686)
                       hardware=ia32
                       ;;
               ppc64)
                       hardware=ppc64
                       ;;
               ia64)
                       hardware=ia64
                       ;;
               x86_64)
                       hardware=x86_64
                       ;;
               *)
hardware=unknown_hardware_please_send_us_a_patch
                       ;;
       esac
       #
############################################################################

############################################################################
       #
       # Step 2)  Determine $distro (distribution) string
       #
       #          NOTES: Put newer tests higher up, as they'll most
       #                 likely get hit first. -BEF-
# NOTES: But, make sure that newer programatic tests don't override
       #                 older tests with different results. -BEF-
       #

       #
       # If lsb-release contains the DISTRIB* variables we need - use
       # them, otherwise, defer to tests later down the line.
       #
       get_lsb_info_if_available
if [ "${DISTRIB_ID}" != "" -a "${DISTRIB_RELEASE}" != "" ]; then
           distro=${DISTRIB_ID}_${DISTRIB_RELEASE}

       elif [ -f /etc/issue ]; then

               if [ -e /etc/debian_version ]; then
                       distro_brand=debian
distro_version=`cat /etc/debian_version | sed 's#testing/##'`
                       distro=${distro_brand}_${distro_version}

               elif [ -e /etc/gentoo-release ]; then
                       distro_brand=gentoo
                       # If you think there should be a version,
                       # uncomment out the following
                       #gentoo_profile=`readlink /etc/make.profile`
                       #distro_version=`basename ${gentoo_profile}`
                       #distro=${distro_brand}_${distro_version}
                       distro=${distro_brand}

elif [ -n "`egrep 'Scientific Linux SL release [0-9\.] +' /etc/issue`" ]; then distro_ver="`grep 'Scientific Linux' /etc/ issue | sed -e 's/.*release \([0-9]*\.[0-9]*\).*/\1/'`"
                       distro=scientificlinux_$distro_ver

elif [ -n "`egrep 'Red Hat Enterprise Linux ([a-zA-Z] +) release [0-9]*' /etc/issue`" ]; then
                       distro_brand=rhel
#sub_distro=` grep 'Red Hat' /etc/issue | sed -e 's/Red Hat Enterprise Linux \([A-Z][A-Z]\) release \([0-9]* \).*/\1/' ` distro_version=`grep 'Red Hat' /etc/issue | sed -e 's/Red Hat Enterprise Linux \([a-zA-Z]*\) release \([0-9]* \).*/\2/' ` #distro=${distro_brand}${distro_version}_$ {sub_distro}
                       distro=${distro_brand}${distro_version}

elif [ -n "`egrep 'Cray Rocks Linux release 1.3' /etc/ issue`" ]; then
                       distro=rh73

               elif [ -n "`egrep 'SGI ProPack 3' /etc/issue`" ]; then
                       distro=rhel3

elif [ -n "`egrep 'CentOS release 4.[0-9]' /etc/ issue`" ]; then
                       distro=rhel4

               elif [ -n "`egrep 'SuSE SLES 8' /etc/issue`" ]; then
                       distro=sles8

elif [ -n "`egrep 'Red Hat Linux Advanced Server release 2.1AS ' /etc/issue`" ]; then
                       distro=redhat_2.1AS

elif [ -n "`egrep 'Red Hat Linux release 9 ' /etc/ issue`" ]; then
                       distro=redhat_9

elif [ -n "`egrep 'Red Hat Linux release 8.0 ' /etc/ issue`" ]; then
                       distro=redhat_8.0

elif [ -n "`egrep 'Mandrake Linux release 9.1 ' /etc/ issue`" ]; then
                       distro=mandrake_9.1

               elif [ -n "`egrep 'SGI ProPack 4' /etc/issue`" ]; then
                       distro=sles9

elif [ -n "`egrep 'SUSE LINUX Enterprise Server 9' / etc/issue`" ]; then
                       distro=sles9
elif [ -n "`egrep 'SUSE Linux Enterprise Server 10' / etc/issue`" ]; then
                       distro=sles10

               elif [ -n "`egrep 'SuSE SLES 8' /etc/issue`" ]; then
                       distro=sles8

elif [ -n "`egrep 'UnitedLinux 1.0' /etc/issue`" ]; then
                       distro=sles8

               # Welcome to SuSE Linux 9.0 (x86-64) - Kernel \r (\l)
elif [ -n "`egrep 'SuSE Linux 9\.0' /etc/issue`" ]; then
                       distro=suse_9.0

elif [ -n "`egrep 'SuSE Linux 9\.1' /etc/issue`" ]; then
                       distro=suse_9.1

elif [ -n "`egrep 'SuSE Linux 9\.2' /etc/issue`" ]; then
                       distro=suse_9.2

elif [ -n "`egrep 'SuSE Linux 9\.3' /etc/issue`" ]; then
                       distro=suse_9.3

               # Welcome to SUSE LINUX 10.1 (i586) - Kernel \r (\l).
elif [ -n "`egrep 'SUSE LINUX 10\.1' /etc/issue`" ]; then
                       distro=suse_10.1

               # Welcome to openSUSE 10.2 (i586) - Kernel \r (\l).
               elif [ -n "`egrep 'SUSE 10\.2' /etc/issue`" ]; then
                       distro=suse_10.2

               elif [ -n "`egrep 'SUSE 10\.3' /etc/issue`" ]; then
                       distro=suse_10.3

elif [ -n "`egrep 'Tao Linux release 1 ' /etc/ issue`" ]; then
                       distro=tao_1.0

               elif [ -n "`egrep 'Fedora Core ' /etc/issue`" ]; then
                       distro_brand=fc
distro_version=`grep 'Fedora Core ' /etc/ issue | sed -e 's/Fedora Core release \([0-9]*\).*/\1/' `
                       distro=${distro_brand}${distro_version}

elif [ -n "`egrep 'White Box Enterprise Linux release 3.0' /etc/issue`" ]; then
                       distro=white_box_enterprise_linux_3.0

               else
distro=unknown_linux_type_please_send_us_a_patch
               fi
       fi
       #
############################################################################

############################################################################
       #
       # Step 3)  Put it all together as $type
       #
       type=linux-${distro}-${hardware}
       #
############################################################################

       os=$uos
       release=$urelease
}

get_darwin_info()
{
############################################################################
       #
       # step 1)  determine $hardware (architecture) string
# (Should be one of ppc, ppc64. Why these strings? Well, we are # taking them from the arches directory names in the linux kernel
       #           source.) -BEF-
       #
if [ -n "`system_profiler SPHardwareDataType|egrep '(CPU Type| Processor Name): PowerPC G4 '`" ]; then
               hardware=ppc
elif [ -n "`system_profiler SPHardwareDataType|egrep '(CPU Type|Processor Name): PowerPC (970|G5) '`" ]; then
               hardware=ppc64
elif [ -n "`system_profiler SPHardwareDataType|egrep 'Processor Name: Intel Core Duo'`" ]; then
               hardware=ia32
elif [ -n "`system_profiler SPHardwareDataType|egrep 'Processor Name: (Dual-Core Intel Xeon|Intel Core 2 Duo)'`" ]; then
               hardware=x86_64
       else
               hardware=unknown_darwin_hardware_please_send_us_a_patch
       fi
       #
############################################################################

############################################################################
       #
       # step 2)  determine $distro (distribution) string
       #
# Thanks to JP Navarro for the get distro version string command
       #          below. -BEF-
       #

       distro_brand=macosx
distro_version=`sw_vers -productVersion|sed -e 's/\ ([0-9]\{1,2\}\.[0-9]\{1,2\}\).*/\1/'`
       distro=${distro_brand}_${distro_version}
       if [ -z "$distro" ]; then
               distro=unknown_darwin_version_please_send_us_a_patch
       fi
       #
############################################################################

############################################################################
       #
       # Step 3)  Put it all together as $type
       #
       type=darwin-${distro}-${hardware}
       #
############################################################################

       os=$uos
       release=$urelease
}
#
################################################################################

#
# Check the number of arguments and set the mode.
#
mode=type
format=default
if [ $# = 1 ]; then
 case "$1" in
   --c*|-c* )
     format=classad
     ;;
   --x*|-x* )
     format=xml
     ;;
   --t*|-t* )
     mode=type
     ;;
   --n*|-n* )
     mode=os
     ;;
   --r*|-r* )
     mode=release
     ;;
   --m*|-m* )
     mode=hardware
     ;;
   --a*|-a* )
     mode=all
     ;;
   --list-all* )
     mode=list_all
     ;;
   --l*|-l* )
     mode=list
     ;;
   --v*|-v* )
     mode=version
     ;;
   --h*|-h* )
     mode=usage
     ;;
   --o*|-o* )
     mode=option_test
# Cycles through and tries each of the other options, for testing purposes.
     ;;
 esac
fi

if [ "$mode" = "unknown" -o "$mode" = "usage" ]; then
       echo "$program $version"
       echo
       echo "Usage: $program [OPTION]"
       echo
       cat <<EOF
whatami determines the "platform" of the system on which it is run. This can be used, for example, to determine which of a series of nfs mounted
software directories is appropriate for use by the system in question.

No unix utility quite fulfills these requirements, so the "whatami" program's purpose is to return a single unique string for each platform. This string can then used in directory names, program switches, and in other clever ways.

Options:
--help, -h
   This help message.

--version, -v
   The version of $program.

--type, -t
   Prints the platform type (the default).

--name, -n
   Prints out the name of the operating system.

--release, -r
   Prints out the name and release of the os, separated by a space.

--machine, -m
   Prints out the architecture type for the machine.

--all, -a
Prints platform type, hardware, os, and version, seperated by a space.

--list, -l
   Lists summary of known description strings.

Please send patches to MCS Systems <syst...@mcs.anl.gov>.

EOF


       if [ "$mode" = "usage" ]; then
               exit 0
       else
               exit 1
       fi
fi

# = = = = = ====================================================================== # Okay, now we know what we should do... if the mode is list or the version
# that's easy to get out of the way.
#
# Be sure to add to this list whenever a new architecture is figured out. # = = = = = ======================================================================

if [ "$mode" = "list" ]; then
       cat <<EOF
type:      cpu    os       version
==================================
linux: (potential linux platform strings are numerous,
       and may not be known in advance)
aix-3.x:   *      AIX      3.x
aix-4.x:   *      AIX      4.x
aix-5.x:   *      AIX      5.x
aux:       *      A/UX     *
freebsd:   *      FreeBSD  *
hpux:      *      HP-UX    *
irix-5:    *      IRIX     5.x
irix-6:    *      IRIX     6.x
osf:       *      OSF1     *
solaris:   sparc  SunOS    5.x
sun4:      sparc  SunOS    4.x
ultrix:    *      Ultrix   *
EOF
 exit 0
fi

if [ "$mode" = "version" ]; then
 echo "$program $version"
 exit 0
fi

if [ "$mode" = "option_test" ]; then
 #
 # Test all options for whatami (except this one, of course)
 #
 for opt in -t -n -r -m -a -v --version -h --help -l
 do
     cmd="$0 $opt"
     echo -n "$cmd: "
     $cmd
     if [ ! $? = 0 ]; then
       echo "Failed on option $opt"
       exit 1
     fi
 done
 exit 0
fi

# = = = = = ======================================================================
# Find uname, store its location in $UNAME
# = = = = = ======================================================================

UNAME=unknown
for dir in `echo $PATH | sed 's/:/ /g'` ; do
 if [ -f $dir/uname ]; then
   UNAME=$dir/uname
   break
 fi
done

if [ "$UNAME" = "unknown" ]; then
echo "Unable to locate uname in the path, which means we're out of luck."
 exit 1
fi


# = = = = = ======================================================================
# Now we try to figure out what we're running on.  First we try to get
# close to the machine type, then we look at the mode and figure out what
# we need to print out.
# = = = = = ======================================================================

uos=`($UNAME -s)       2>/dev/null` || uos=unknown
urelease=`($UNAME -r)  2>/dev/null` || urelease=unknown
uhardware=`($UNAME -m) 2>/dev/null` || uhardware=unknown

type=unknown
os=unknown
release=unknown
hardware=unknown

case "${uos}:${urelease}:${uhardware}" in
 AIX:*:*)
   release=`$UNAME -v 2>/dev/null` || release=unknown
#   case $release in
#     3)
#       type=aix-3
#       ;;
#     4)
#       type=aix-4
#       ;;
#     5)
#       type=aix-5
#       ;;
#   esac
   type=aix-$release.$urelease
   os=$uos
   hardware=$uhardware
   ;;

 A/UX:*:*)
   type=aux
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;

 CYGWIN_NT-5.1:*:*)
   type=cygwin-5.1
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;

 Darwin:*:*)
   get_darwin_info
   ;;

 FreeBSD:*:*)
   type=freebsd
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;

 HP-UX:*:*)
   type=hpux
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;

 IRIX:5*:*)
   type=irix-5
   os=$uos
   release=$urelease
   hardware=`$UNAME -p 2>/dev/null` || hardware=unknown
   ;;

 # On alaska, uname->IRIX64, but IRIX everywhere else.
 IRIX*:6*:*)
   type=irix-6
   os=$uos
   release=$urelease
   hardware=`$UNAME -p 2>/dev/null` || hardware=unknown
   ;;

 Linux:*:*)
   os=$uos
   release=$urelease
   hardware=$uhardware
   case $uhardware in
        alpha)
       # legacy definition
            type=linux-alpha
            ;;
        *)
       # legacy definitions
            if [ -f /etc/issue ]; then
                if [ -n "`cat /etc/issue | grep "Mandrake release 7.2"`" ]; then
                    type=linux-2
elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.1"`" ]; then
                    type=linux-rh71
elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.2"`" ]; then
                    type=linux-rh72
elif [ -n "`cat /etc/issue | grep "Red Hat Linux release 7.3"`" ]; then
                    type=linux-rh73
                else
                    get_linux_type
                fi
            else
                type=linux
            fi
            ;;
   esac
   ;;

 SunOS:4*:*)
   type=sun4
   os=$uos
   release=$urelease
   hardware=`/bin/arch -k` || hardware=unknown
   ;;

 SunOS:5*:*)
   solaris_version=`uname -r | sed 's/^5\.//'`
   type=solaris-${solaris_version}
   os=$uos
   release=$urelease
   hardware=`/bin/arch -k` || hardware=unknown
   ;;

 OSF1:*:*)
   type=osf
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;

 ULTRIX:*:*)
   type=ultrix
   os=$uos
   release=$urelease
   hardware=$uhardware
   ;;


esac

exit_code=0

grid=""
# = = = = = ======================================================================
# Got all the info, now just print the right stuff based on mode.
# = = = = = ======================================================================
case $format in
 classad)
   echo ${grid}whatami_type = \"$type\"
   echo ${grid}whatami_os = \"$os\"
   echo ${grid}whatami_release = \"$release\"
   echo ${grid}whatami_hardware = \"$hardware\"
   if [ $os = "Linux" ]; then
      echo ${grid}whatami_distro = \"$distro\"
   fi
   exit
   ;;
 xml)
   echo "<${grid}whatami>"
   echo "  <type>$type</type>"
   echo "  <os>$os</os>"
   echo "  <release>$release</release>"
   echo "  <hardware>$hardware</hardware>"
   if [ $os = "Linux" ]; then
      echo "  <distro>$distro</distro>"
   fi
   echo "</${grid}whatami>"
   exit
   ;;
esac

case $mode in
 type)
   if [ $type = "unknown" ]; then
     exit_code=1
   fi
   echo $type
   ;;

 os)
   if [ $os = "unknown" ]; then
     exit_code=1
   fi
   echo $os
   ;;

 release)
   if [ $os = "unknown" -o $release = "unknown" ]; then
     exit_code=1
   fi
   echo "$os $release"
   ;;

 hardware)
   if [ $hardware = "unknown" ]; then
     exit_code=1
   fi
   echo $hardware
   ;;

 all)
   if [    $hardware = "unknown" \
         -o $os = "unknown"   \
         -o $release = "unknown" ]; then
     exit_code=1
   fi
   echo "$type $hardware $os $release"
   ;;
esac

exit $exit_code



--
Jeff Squyres
Cisco Systems

Reply via email to