0b15456
#!/bin/sh
0b15456
#
0b15456
# Copyright 2009 Red Hat, Inc.
0b15456
# License: GPLv2
0b15456
# Author: Dan HorĂ¡k <dhorak@redhat.com>
0b15456
#
0b15456
# cpi Set Control Program Identification on IBM zSeries
0b15456
#
0b15456
# chkconfig:   12345 80 20
0b15456
# description: Set Control Program Identification on IBM zSeries \
0b15456
#              that's reported on a Linux LPAR
0b15456
0b15456
### BEGIN INIT INFO
0b15456
# Provides: cpi
0b15456
# Required-Start: 
0b15456
# Required-Stop: 
0b15456
# Should-Start: 
0b15456
# Should-Stop: 
0b15456
# Default-Start: 1 2 3 4 5 
0b15456
# Default-Stop: 0 6
0b15456
# Short-Description: Set control program identification on IBM zSeries
0b15456
# Description: Set Control Program Identification on IBM zSeries \
0b15456
#              that's reported on a Linux LPAR
0b15456
### END INIT INFO
0b15456
0b15456
# Source function library.
0b15456
. /etc/init.d/functions
0b15456
0b15456
prog="cpi"
0b15456
0b15456
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
0b15456
0b15456
cpipath=/sys/firmware/cpi
0b15456
0b15456
start() {
0b15456
    [ `id -u` -eq 0 ] || return 4
0b15456
    
0b15456
    echo -n $"Starting $prog: "
0b15456
0b15456
    if [ -d $cpipath ]; then
0b15456
        retval=0
0b15456
        echo LINUX > $cpipath/system_type 2> /dev/null || retval=1
0b15456
        [ $retval -eq 0 ] && echo "$SYSTEM_NAME" > $cpipath/system_name 2> /dev/null || retval=1
0b15456
        [ $retval -eq 0 ] && echo "$SYSPLEX_NAME" > $cpipath/sysplex_name 2> /dev/null || retval=1
0b15456
        level_maj=`uname -r | cut -d '-' -f 1 | cut -d '.' -f 1`
0b15456
        level_min=`uname -r | cut -d '-' -f 1 | cut -d '.' -f 2`
0b15456
        level_mic=`uname -r | cut -d '-' -f 1 | cut -d '.' -f 3`
0b15456
        level=`printf '%02x%02x%02x' $level_maj $level_min $level_mic`
0b15456
        [ $retval -eq 0 ] && echo $level > $cpipath/system_level 2> /dev/null || retval=1
0b15456
0b15456
        [ $retval -eq 0 ] && echo 1 > $cpipath/set 2> /dev/null || retval=1
0b15456
    else
0b15456
        retval=1
0b15456
    fi
0b15456
0b15456
    [ $retval -eq 0 ] && success || failure
0b15456
    echo
0b15456
    return $retval
0b15456
}
0b15456
0b15456
stop() {
0b15456
    echo -n $"Stopping $prog: "
0b15456
0b15456
    # nothing to do
0b15456
    success
0b15456
    echo
0b15456
    return 0
0b15456
}
0b15456
0b15456
restart() {
0b15456
    stop
0b15456
    start
0b15456
}
0b15456
0b15456
reload() {
0b15456
    restart
0b15456
}
0b15456
0b15456
force_reload() {
0b15456
    restart
0b15456
}
0b15456
0b15456
rh_status() {
0b15456
    if [ -d $cpipath ]; then
0b15456
        echo -n "System type: "; cat $cpipath/system_type
0b15456
        echo -n "System level: "; cat $cpipath/system_level
0b15456
        echo -n "System name: "; cat $cpipath/system_name
0b15456
        echo -n "Sysplex name: "; cat $cpipath/sysplex_name
0b15456
        retval=0
0b15456
    else
0b15456
        echo "Control Program Identification system interface doesn't exist."
0b15456
        retval=1
0b15456
    fi
0b15456
    return $retval
0b15456
}
0b15456
0b15456
rh_status_q() {
0b15456
    rh_status >/dev/null 2>&1
0b15456
}
0b15456
0b15456
0b15456
case "$1" in
0b15456
    start)
0b15456
        $1
0b15456
        ;;
0b15456
    stop)
0b15456
        $1
0b15456
        ;;
0b15456
    restart)
0b15456
        $1
0b15456
        ;;
0b15456
    reload)
0b15456
        rh_status_q || exit 7
0b15456
        $1
0b15456
        ;;
0b15456
    force-reload)
0b15456
        force_reload
0b15456
        ;;
0b15456
    status)
0b15456
        rh_status
0b15456
        ;;
0b15456
    condrestart|try-restart)
0b15456
        rh_status_q || exit 0
0b15456
        restart
0b15456
        ;;
0b15456
    *)
0b15456
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
0b15456
        exit 2
0b15456
esac
0b15456
exit $?