Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:markkp:branches:Base:System
s390-tools
lgr_check
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File lgr_check of Package s390-tools
#!/bin/sh function check_sysoper(){ local SYSOPER=$(vmcp q sysoper | cut -f4 -d" ") local USERID=$(vmcp q userid | cut -f1 -d" ")"." if [ "${SYSOPER}" == "${USERID}" ]; then return 0 else return 1 fi } function check_disc(){ local USERID=$(vmcp q userid | cut -f1 -d" ") local DISCONNECTED=$(vmcp q ${USERID} | cut -f2 -d-) if [ "${DISCONNECTED}" == " DSC" ]; then return 1 else return 0 fi } function check_3270(){ local CONMODE=$(vmcp q term | sed -n -e '/CONMODE/ {s/CONMODE \([0-9]*\), .*$/\1/;p}') if [ "${CONMODE}" == "3270" ]; then return 0 else return 1 fi } function check_graf(){ local GRAF GRAF=$(vmcp -b 1048576 q v graf 2>/dev/null | grep -v "^CONS" | grep "ON LDEV" ) if [ ${?} -eq 0 ] && [ -n "${GRAF}" ]; then return 0 else return 1 fi } function check_ascii_console(){ local SYSASCII=$(vmcp q v sysascii 2>/dev/null | grep "not attached to you") if [ -z "${SYSASCII}" ]; then return 0 else return 1 fi } function check_tdisk(){ local TDISK=$(vmcp -b 1048576 q v dasd 2>/dev/null | grep TEMP) if [ -n "${TDISK}" ]; then return 0 else return 1 fi } function check_ctc(){ local CTC CTC=$(vmcp -b 1048576 q v ctc 2>/dev/null) if [ ${?} -eq 0 ]; then return 0 else return 1 fi } function check_dynamic_switch(){ local SWCH SWCH=$(vmcp -b 1048576 q v switches 2>/dev/null) if [ ${?} -eq 0 ]; then return 0 else return 1 fi } function check_maint_mdisks(){ local MDISKS MDISKS=$(vmcp -b 1048576 q v dasd | grep -E "0190|0191|0193|019D|019E") if [ -n "${MDISKS}" ]; then return 0 else return 1 fi } function check_wrkalleg(){ local WRKALLEG WRKALLEG=$(vmcp -b 1048576 q wrkalleg | grep "is not simulated") if [ -z "${WRKALLEG}" ]; then return 0 else return 1 fi } function check_isolated_vswitch(){ local ISOLATED=0 local VSWITCH # Find out if we have any NICs coupled to any VSWITCH or not. If not, we're OK. VSWITCH=$(vmcp -b 1048576 q nic | sed -e '1~2 {N;s/\n//;}' | grep VSWITCH) if [ -z "${VSWITCH}" ]; then return 1 fi ISOLATED=$(vmcp -b 1048576 q nic | sed -e '1~2 {N;s/\n//;}' | \ grep VSWITCH | \ sed -e 's/^.* VSWITCH: //' | \ while read owner name do VSWITCH=$(vmcp -b 1048576 q vswitch $name | grep RDEV) if [ -z "${VSWITCH}" ]; then echo 1 fi done) if [ "${ISOLATED}" == "1" ]; then return 0 else return 1 fi } function check_chpidvirt(){ local CHPIDV CHPIDV=$(vmcp q chpidv 2>/dev/null | grep "CHPID Virtualization is on") if [ -z "${CHPIDV}" ]; then return 0 else return 1 fi } function check_pci_functions(){ local PCIF local RETCODE PCIF=$(vmcp -b 1048576 q v pcif 2>/dev/null | grep "A PCI function was not found.") RETCODE=${?} if [ ${RETCODE} -eq 0 ] && [ -z "${PCIF}" ]; then return 0 else return 1 fi } function check_tape_assign(){ local TAPES local RETCODE=1 TAPES=$(vmcp -b 1048576 q v tapes 2>/dev/null | grep "Device TAPE does not exist") if [ -n "${TAPES}" ]; then return 1 fi TAPES=$(vmcp -b 1048576 q v tapes 2>/dev/null | grep "NOASSIGN") if [ -n "${TAPES}" ]; then return 0 else return 1 fi } function check_open_spool(){ local QSPOOL local OPENSPOOL=0 QSPOOL=$(vmcp -b 1048576 q pun \* all 2>/dev/null | grep "OPEN") if [ -n "${QSPOOL}" ]; then let OPENSPOOL=1 fi QSPOOL=$(vmcp -b 1048576 q prt \* all 2>/dev/null | grep "OPEN" | grep -v " CON ") if [ -n "${QSPOOL}" ]; then let OPENSPOOL=1 fi if [ ${OPENSPOOL} -eq 1 ]; then return 0 else return 1 fi } function check_xstore(){ local XSTOR XSTOR=$(vmcp -b 1048576 q v xstor 2>/dev/null | grep "XSTORE = none") if [ -z "${XSTOR}" ]; then return 0 else return 1 fi } function check_iucv(){ local QIUCV QIUCV=$(vmcp -b 1048576 q iucv 2>/dev/null | grep -vE "^No IUCV paths exist|^Source| *MSG| *MSGALL") if [ -n "${QIUCV}" ]; then return 0 else return 1 fi } function usage(){ echo "Usage: ${0} [ -f ] [ -h ] devno|busid" echo " -q Don't generate any output, just set a return code." echo " -m Suppress the check for local minidisks." echo " Only use this if you know for certain all minidisks for this" echo " guest are NOT local to this instance of z/VM." echo " -h Display this help message." } ARCH="$(/bin/uname -m)" if [ "${ARCH}" != "s390x" ] && [ "${ARCH}" != "s390" ]; then echo "This script is only useful on IBM mainframes." exit 1 fi HYPERVISOR=$(systemd-detect-virt) if [ "${HYPERVISOR}" != "zvm" ]; then echo "This script is only useful for guests of the z/VM hypervisor." exit 1 fi MDISK_SUPPRESS=0 msg="echo" ############################################################ # Parse the parameters from the command line # ARGS=$(getopt -a --options qhm -n "lgr_check" -- "$@") if [ $? -ne 0 ]; then usage exit 3 fi eval set -- "${ARGS}" for ARG; do case "${ARG}" in -h) usage; exit 0 ;; -m) let MDISK_SUPPRESS=1; shift 1 ;; -q) msg="/bin/true" shift 1 ;; --) shift 1 ;; *) ${msg} "Extraneous input detected: ${1}" shift 1 ;; esac done let FAIL=0 ##let COLS=$(stty -a | sed -n -e '/columns/{s/^.*columns \([0-9]*\);.*$/\1/;p}') if [ ! -c /dev/vmcp ]; then ${msg} "Cannot find /dev/vmcp to issue z/VM CP commands." exit 1 fi ${msg} "Checking for conditions that might prevent Live Guest Relocation" if check_chpidvirt; then ${msg} "This guest does not have CHPID Virtualization set for it in the CP directory." ${msg} "Live Guest Relocation is absolutely not possible for this guest." # exit 99 let FAIL=1 fi if check_sysoper ; then ${msg} "This guest is currently the z/VM system operator." let FAIL=1 fi let GUEST_CONN=0 if check_disc; then ${msg} "The guest is not running disconnected." let GUEST_CONN=1 let FAIL=1 fi if check_3270; then ${msg} -n "The guest has a 3270 console, " if [ ${GUEST_CONN} -eq 0 ]; then ${msg} "but it is not currently in use." else ${msg} "and it is currently in use." let FAIL=1 fi fi if check_graf; then ${msg} "The guest has a DIALED 3270 device in current use." let FAIL=1 fi if check_ascii_console; then ${msg} "The guest has the ASCII console attached to it." let FAIL=1 fi if check_tdisk; then ${msg} "The guest has a temporary disk (T-disk) attached to it." let FAIL=1 fi if check_ctc; then ${msg} "The guest has a Channel-to-Channel device (CTC) attached to it." let FAIL=1 fi if check_dynamic_switch; then ${msg} "The guest has a dynamic switching device attached to it." let FAIL=1 fi if check_wrkalleg; then ${msg} "The guest is currently using virtual working allegiance." let FAIL=1 fi if [ ${MDISK_SUPPRESS} -eq 0 ] && check_maint_mdisks; then ${msg} "The guest currently has one or more Minidisks that might be local to this instance of z/VM." let FAIL=1 fi if check_isolated_vswitch; then ${msg} "The guest is currently coupled to an isolated VSWITCH." let FAIL=1 fi if check_pci_functions; then ${msg} "The guest has PCI functions available to it." let FAIL=1 fi if check_tape_assign; then ${msg} "The guest has potential problems with a tape." let FAIL=1 fi if check_open_spool; then ${msg} "The guest has an open SPOOL file that is not from the virtual console." let FAIL=1 fi if check_xstore; then ${msg} "The guest has Expanded Storage attached to it." let FAIL=1 fi if check_iucv; then ${msg} "The guest has an IUCV connection to a z/VM system service or another z/VM user." let FAIL=1 fi if [ ${FAIL} == 1 ]; then ${msg} "The guest is currently not eligible for Live Guest Relocation." exit 1 else ${msg} "As far as can be determined from within the guest, it is currently eligible for Live Guest Relocation." ${msg} "This is not a guarantee. Other factors that cannot be checked from within the guest may prevent it from being eligible for LGR." fi
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor