1*13013Sglenn.lagasse@oracle.com# CDDL HEADER START 2*13013Sglenn.lagasse@oracle.com# 3*13013Sglenn.lagasse@oracle.com# The contents of this file are subject to the terms of the 4*13013Sglenn.lagasse@oracle.com# Common Development and Distribution License (the "License"). 5*13013Sglenn.lagasse@oracle.com# You may not use this file except in compliance with the License. 6*13013Sglenn.lagasse@oracle.com# 7*13013Sglenn.lagasse@oracle.com# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 8*13013Sglenn.lagasse@oracle.com# or http://www.opensolaris.org/os/licensing. 9*13013Sglenn.lagasse@oracle.com# See the License for the specific language governing permissions 10*13013Sglenn.lagasse@oracle.com# and limitations under the License. 11*13013Sglenn.lagasse@oracle.com# 12*13013Sglenn.lagasse@oracle.com# When distributing Covered Code, include this CDDL HEADER in each 13*13013Sglenn.lagasse@oracle.com# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 14*13013Sglenn.lagasse@oracle.com# If applicable, add the following below this CDDL HEADER, with the 15*13013Sglenn.lagasse@oracle.com# fields enclosed by brackets "[]" replaced with your own identifying 16*13013Sglenn.lagasse@oracle.com# information: Portions Copyright [yyyy] [name of copyright owner] 17*13013Sglenn.lagasse@oracle.com# 18*13013Sglenn.lagasse@oracle.com# CDDL HEADER END 19*13013Sglenn.lagasse@oracle.com# 20*13013Sglenn.lagasse@oracle.com 21*13013Sglenn.lagasse@oracle.com# 22*13013Sglenn.lagasse@oracle.com# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 23*13013Sglenn.lagasse@oracle.com# 24*13013Sglenn.lagasse@oracle.com 25*13013Sglenn.lagasse@oracle.com""" 26*13013Sglenn.lagasse@oracle.combeadm - The Boot Environment Administration tool. 27*13013Sglenn.lagasse@oracle.com 28*13013Sglenn.lagasse@oracle.comA module containing all of the messages output by beadm. 29*13013Sglenn.lagasse@oracle.com""" 30*13013Sglenn.lagasse@oracle.com 31*13013Sglenn.lagasse@oracle.comimport sys 32*13013Sglenn.lagasse@oracle.comfrom beadm import _ 33*13013Sglenn.lagasse@oracle.com 34*13013Sglenn.lagasse@oracle.comclass Msgs: 35*13013Sglenn.lagasse@oracle.com """Indices corresponding to message numbers for beadm.""" 36*13013Sglenn.lagasse@oracle.com 37*13013Sglenn.lagasse@oracle.com (BEADM_ERR_ACTIVATE, 38*13013Sglenn.lagasse@oracle.com BEADM_ERR_BE_EXISTS, 39*13013Sglenn.lagasse@oracle.com BEADM_ERR_SNAP_EXISTS, 40*13013Sglenn.lagasse@oracle.com BEADM_ERR_CREATE, 41*13013Sglenn.lagasse@oracle.com BEADM_ERR_DESTROY, 42*13013Sglenn.lagasse@oracle.com BEADM_ERR_DESTROY_ACTIVE, 43*13013Sglenn.lagasse@oracle.com BEADM_ERR_BE_DOES_NOT_EXIST, 44*13013Sglenn.lagasse@oracle.com BEADM_ERR_NO_BES_EXIST, 45*13013Sglenn.lagasse@oracle.com BEADM_ERR_MSG_SUB, 46*13013Sglenn.lagasse@oracle.com BEADM_ERR_ILL_SUBCOMMAND, 47*13013Sglenn.lagasse@oracle.com BEADM_ERR_INVALID_RESPONSE, 48*13013Sglenn.lagasse@oracle.com BEADM_ERR_LIST, 49*13013Sglenn.lagasse@oracle.com BEADM_ERR_LIST_DATA, 50*13013Sglenn.lagasse@oracle.com BEADM_ERR_LOG_CREATE, 51*13013Sglenn.lagasse@oracle.com BEADM_ERR_LOG_RM, 52*13013Sglenn.lagasse@oracle.com BEADM_ERR_MOUNT, 53*13013Sglenn.lagasse@oracle.com BEADM_ERR_MOUNT_EXISTS, 54*13013Sglenn.lagasse@oracle.com BEADM_ERR_MOUNTED, 55*13013Sglenn.lagasse@oracle.com BEADM_ERR_MOUNTPOINT, 56*13013Sglenn.lagasse@oracle.com BEADM_ERR_MUTUALLY_EXCL, 57*13013Sglenn.lagasse@oracle.com BEADM_ERR_NO_MSG, 58*13013Sglenn.lagasse@oracle.com BEADM_ERR_NO_ZPOOL, 59*13013Sglenn.lagasse@oracle.com BEADM_ERR_NOT_SUPPORTED_NGZ, 60*13013Sglenn.lagasse@oracle.com BEADM_ERR_OPT_ARGS, 61*13013Sglenn.lagasse@oracle.com BEADM_ERR_OS, 62*13013Sglenn.lagasse@oracle.com BEADM_ERR_PERMISSIONS, 63*13013Sglenn.lagasse@oracle.com BEADM_ERR_RENAME, 64*13013Sglenn.lagasse@oracle.com BEADM_ERR_SHARED_FS, 65*13013Sglenn.lagasse@oracle.com BEADM_ERR_SNAP_DOES_NOT_EXISTS, 66*13013Sglenn.lagasse@oracle.com BEADM_ERR_UNMOUNT, 67*13013Sglenn.lagasse@oracle.com BEADM_ERR_UNMOUNT_ACTIVE, 68*13013Sglenn.lagasse@oracle.com BEADM_ERR_BENAME, 69*13013Sglenn.lagasse@oracle.com BEADM_MSG_ACTIVE_ON_BOOT, 70*13013Sglenn.lagasse@oracle.com BEADM_MSG_DESTROY, 71*13013Sglenn.lagasse@oracle.com BEADM_MSG_DESTROY_NO, 72*13013Sglenn.lagasse@oracle.com BEADM_MSG_BE_CREATE_START, 73*13013Sglenn.lagasse@oracle.com BEADM_MSG_BE_CREATE_SUCCESS, 74*13013Sglenn.lagasse@oracle.com BEADM_MSG_FREE_FORMAT, 75*13013Sglenn.lagasse@oracle.com ) = range(38) 76*13013Sglenn.lagasse@oracle.com 77*13013Sglenn.lagasse@oracle.com # Indices corresponding to message numbers for libbe that we are 78*13013Sglenn.lagasse@oracle.com # interested in expanding messages. 79*13013Sglenn.lagasse@oracle.com (BE_ERR_ACCESS, 80*13013Sglenn.lagasse@oracle.com BE_ERR_ACTIVATE_CURR, 81*13013Sglenn.lagasse@oracle.com BE_ERR_AUTONAME, 82*13013Sglenn.lagasse@oracle.com BE_ERR_BE_NOENT, 83*13013Sglenn.lagasse@oracle.com BE_ERR_BUSY, 84*13013Sglenn.lagasse@oracle.com BE_ERR_CANCELED, 85*13013Sglenn.lagasse@oracle.com BE_ERR_CLONE, 86*13013Sglenn.lagasse@oracle.com BE_ERR_COPY, 87*13013Sglenn.lagasse@oracle.com BE_ERR_CREATDS, 88*13013Sglenn.lagasse@oracle.com BE_ERR_CURR_BE_NOT_FOUND, 89*13013Sglenn.lagasse@oracle.com BE_ERR_DESTROY, 90*13013Sglenn.lagasse@oracle.com BE_ERR_DEMOTE, 91*13013Sglenn.lagasse@oracle.com BE_ERR_DSTYPE, 92*13013Sglenn.lagasse@oracle.com BE_ERR_BE_EXISTS, 93*13013Sglenn.lagasse@oracle.com BE_ERR_INIT, 94*13013Sglenn.lagasse@oracle.com BE_ERR_INTR, 95*13013Sglenn.lagasse@oracle.com BE_ERR_INVAL, 96*13013Sglenn.lagasse@oracle.com BE_ERR_INVALPROP, 97*13013Sglenn.lagasse@oracle.com BE_ERR_INVALMOUNTPOINT, 98*13013Sglenn.lagasse@oracle.com BE_ERR_MOUNT, 99*13013Sglenn.lagasse@oracle.com BE_ERR_MOUNTED, 100*13013Sglenn.lagasse@oracle.com BE_ERR_NAMETOOLONG, 101*13013Sglenn.lagasse@oracle.com BE_ERR_NOENT, 102*13013Sglenn.lagasse@oracle.com BE_ERR_POOL_NOENT, 103*13013Sglenn.lagasse@oracle.com BE_ERR_NODEV, 104*13013Sglenn.lagasse@oracle.com BE_ERR_NOTMOUNTED, 105*13013Sglenn.lagasse@oracle.com BE_ERR_NOMEM, 106*13013Sglenn.lagasse@oracle.com BE_ERR_NONINHERIT, 107*13013Sglenn.lagasse@oracle.com BE_ERR_NXIO, 108*13013Sglenn.lagasse@oracle.com BE_ERR_NOSPC, 109*13013Sglenn.lagasse@oracle.com BE_ERR_NOTSUP, 110*13013Sglenn.lagasse@oracle.com BE_ERR_OPEN, 111*13013Sglenn.lagasse@oracle.com BE_ERR_PERM, 112*13013Sglenn.lagasse@oracle.com BE_ERR_UNAVAIL, 113*13013Sglenn.lagasse@oracle.com BE_ERR_PROMOTE, 114*13013Sglenn.lagasse@oracle.com BE_ERR_ROFS, 115*13013Sglenn.lagasse@oracle.com BE_ERR_READONLYDS, 116*13013Sglenn.lagasse@oracle.com BE_ERR_READONLYPROP, 117*13013Sglenn.lagasse@oracle.com BE_ERR_SS_EXISTS, 118*13013Sglenn.lagasse@oracle.com BE_ERR_SS_NOENT, 119*13013Sglenn.lagasse@oracle.com BE_ERR_UMOUNT, 120*13013Sglenn.lagasse@oracle.com BE_ERR_UMOUNT_CURR_BE, 121*13013Sglenn.lagasse@oracle.com BE_ERR_UMOUNT_SHARED, 122*13013Sglenn.lagasse@oracle.com BE_ERR_UNKNOWN, 123*13013Sglenn.lagasse@oracle.com BE_ERR_ZFS, 124*13013Sglenn.lagasse@oracle.com BE_ERR_DESTROY_CURR_BE, 125*13013Sglenn.lagasse@oracle.com BE_ERR_GEN_UUID, 126*13013Sglenn.lagasse@oracle.com BE_ERR_PARSE_UUID, 127*13013Sglenn.lagasse@oracle.com BE_ERR_NO_UUID, 128*13013Sglenn.lagasse@oracle.com BE_ERR_ZONE_NO_PARENTBE, 129*13013Sglenn.lagasse@oracle.com BE_ERR_ZONE_MULTIPLE_ACTIVE, 130*13013Sglenn.lagasse@oracle.com BE_ERR_ZONE_NO_ACTIVE_ROOT, 131*13013Sglenn.lagasse@oracle.com BE_ERR_ZONE_ROOT_NOT_LEGACY, 132*13013Sglenn.lagasse@oracle.com BE_ERR_NO_MOUNTED_ZONE, 133*13013Sglenn.lagasse@oracle.com BE_ERR_MOUNT_ZONEROOT, 134*13013Sglenn.lagasse@oracle.com BE_ERR_UMOUNT_ZONEROOT, 135*13013Sglenn.lagasse@oracle.com BE_ERR_ZONES_UNMOUNT, 136*13013Sglenn.lagasse@oracle.com BE_ERR_FAULT, 137*13013Sglenn.lagasse@oracle.com BE_ERR_RENAME_ACTIVE, 138*13013Sglenn.lagasse@oracle.com BE_ERR_NO_MENU, 139*13013Sglenn.lagasse@oracle.com BE_ERR_DEV_BUSY, 140*13013Sglenn.lagasse@oracle.com BE_ERR_BAD_MENU_PATH, 141*13013Sglenn.lagasse@oracle.com BE_ERR_ZONE_SS_EXISTS 142*13013Sglenn.lagasse@oracle.com ) = range(4000, 4063) 143*13013Sglenn.lagasse@oracle.com 144*13013Sglenn.lagasse@oracle.com # Error message dictionaries. 145*13013Sglenn.lagasse@oracle.com mBeadmErr = {} 146*13013Sglenn.lagasse@oracle.com mBeadmOut = {} 147*13013Sglenn.lagasse@oracle.com mBeadmLog = {} 148*13013Sglenn.lagasse@oracle.com 149*13013Sglenn.lagasse@oracle.com # Errors from beadm (to stderr). 150*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_ACTIVATE] = _("Unable to activate %(0)s.\n%(1)s") 151*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_BE_EXISTS] = _("BE %s already exists. Please choose a different BE name.") 152*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_BE_DOES_NOT_EXIST] = _("%s does not exist or appear to be a valid BE.\nPlease check that the name of the BE provided is correct.") 153*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_NO_BES_EXIST] = _("No boot environments found on this system.") 154*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_CREATE] = _("Unable to create %(0)s.\n%(1)s") 155*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_DESTROY] = _("Unable to destroy %(0)s.\n%(1)s") 156*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_DESTROY_ACTIVE] = _("%(0)s is the currently active BE and cannot be destroyed.\nYou must boot from another BE in order to destroy %(1)s.") 157*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MSG_SUB] = _("Fatal error. No message associated with index %d") 158*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_ILL_SUBCOMMAND] = _("Illegal subcommand %s") 159*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_INVALID_RESPONSE] = _("Invalid response. Please enter 'y' or 'n'.") 160*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_LIST] = _("Unable to display Boot Environment: %s") 161*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_LIST_DATA] = _("Unable to process list data.") 162*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_LOG_CREATE] = _("Unable to create log file.") 163*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_LOG_RM] = _("Unable to remove %s") 164*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MOUNT] = _("Unable to mount %(0)s.\n%(1)s") 165*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MOUNT_EXISTS] = _("%s is already mounted.\nPlease unmount the BE before mounting it again.") 166*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MOUNTED] = _("Unable to destroy %(0)s.\nIt is currently mounted and must be unmounted before it can be destroyed.\nUse 'beadm unmount %(1)s' to unmount the BE before destroying\nit or 'beadm destroy -fF %(2)s'.") 167*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MOUNTPOINT] = _("Invalid mount point %s. Mount point must start with a /.") 168*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_MUTUALLY_EXCL] = _("Invalid options: %s are mutually exclusive.") 169*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_NO_MSG] = _("Unable to find message for error code: %d") 170*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_NO_ZPOOL] = _("BE: %s was not found in any pool.\n The pool may not exist or the name of the BE is not correct.") 171*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_NOT_SUPPORTED_NGZ] = _("beadm is not supported in a non-global zone.") 172*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_OPT_ARGS] = _("Invalid options and arguments:") 173*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_OS] = _("System error: %s") 174*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_RENAME] = _("Rename of BE %(0)s failed.\n%(1)s") 175*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_SHARED_FS] = _("%s is a shared file system and it cannot be unmounted.") 176*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_SNAP_DOES_NOT_EXISTS] = _("%s does not exist or appear to be a valid snapshot.\nPlease check that the name of the snapshot provided is correct.") 177*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_SNAP_EXISTS] = _("Snapshot %s already exists.\n Please choose a different snapshot name.") 178*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_UNMOUNT] = _("Unable to unmount %(0)s.\n%(1)s") 179*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_UNMOUNT_ACTIVE] = _("%s is the currently active BE.\nIt cannot be unmounted unless another BE is the currently active BE.") 180*13013Sglenn.lagasse@oracle.com mBeadmErr[BE_ERR_ZONES_UNMOUNT] = _("Unable to destroy one of %(0)s's zone BE's.\nUse 'beadm destroy -fF %(1)s' or 'zfs -f destroy <dataset>'.") 181*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_PERMISSIONS] = _("You have insufficient privileges to execute this command.\nEither use 'pfexec' to execute the command or become superuser.") 182*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_ERR_BENAME] = _("The BE name provided is invalid.\n Please check it and try again.") 183*13013Sglenn.lagasse@oracle.com 184*13013Sglenn.lagasse@oracle.com # Catchall 185*13013Sglenn.lagasse@oracle.com mBeadmErr[BEADM_MSG_FREE_FORMAT] = "%s" 186*13013Sglenn.lagasse@oracle.com 187*13013Sglenn.lagasse@oracle.com # Messages from beadm (to stdout). 188*13013Sglenn.lagasse@oracle.com mBeadmOut[BEADM_MSG_ACTIVE_ON_BOOT] = _("The BE that was just destroyed was the 'active on boot' BE.\n%s is now the 'active on boot' BE. Use 'beadm activate' to change it.\n") 189*13013Sglenn.lagasse@oracle.com mBeadmOut[BEADM_MSG_DESTROY] = _("Are you sure you want to destroy %s? This action cannot be undone(y/[n]):") 190*13013Sglenn.lagasse@oracle.com mBeadmOut[BEADM_MSG_DESTROY_NO] = _("%s has not been destroyed.\n") 191*13013Sglenn.lagasse@oracle.com 192*13013Sglenn.lagasse@oracle.com # Messages from beadm (to log only). 193*13013Sglenn.lagasse@oracle.com mBeadmLog[BEADM_MSG_BE_CREATE_START] = "Attempting to create %s" 194*13013Sglenn.lagasse@oracle.com mBeadmLog[BEADM_MSG_BE_CREATE_SUCCESS] = "%s was created successfully" 195*13013Sglenn.lagasse@oracle.com 196*13013Sglenn.lagasse@oracle.commsgLog, msgOut, msgErr = range(3) 197*13013Sglenn.lagasse@oracle.com 198*13013Sglenn.lagasse@oracle.comdef printLog(string, log_fd): 199*13013Sglenn.lagasse@oracle.com """Print log.""" 200*13013Sglenn.lagasse@oracle.com 201*13013Sglenn.lagasse@oracle.com sendMsg(string, msgLog, log_fd) 202*13013Sglenn.lagasse@oracle.com 203*13013Sglenn.lagasse@oracle.comdef printStdout(string, log_fd): 204*13013Sglenn.lagasse@oracle.com """Print standard output.""" 205*13013Sglenn.lagasse@oracle.com 206*13013Sglenn.lagasse@oracle.com sendMsg(string, msgOut, log_fd) 207*13013Sglenn.lagasse@oracle.com 208*13013Sglenn.lagasse@oracle.comdef printStderr(string, log_fd): 209*13013Sglenn.lagasse@oracle.com """Print standard error.""" 210*13013Sglenn.lagasse@oracle.com 211*13013Sglenn.lagasse@oracle.com sendMsg(string, msgErr, log_fd) 212*13013Sglenn.lagasse@oracle.com 213*13013Sglenn.lagasse@oracle.comdef composeMsg(string, txt=None): 214*13013Sglenn.lagasse@oracle.com """ 215*13013Sglenn.lagasse@oracle.com Compose the message to be dispayed. 216*13013Sglenn.lagasse@oracle.com txt can be either a list or string object. 217*13013Sglenn.lagasse@oracle.com Return the newly composed string. 218*13013Sglenn.lagasse@oracle.com """ 219*13013Sglenn.lagasse@oracle.com 220*13013Sglenn.lagasse@oracle.com try: 221*13013Sglenn.lagasse@oracle.com msg = string % txt 222*13013Sglenn.lagasse@oracle.com except TypeError: 223*13013Sglenn.lagasse@oracle.com msg = string 224*13013Sglenn.lagasse@oracle.com 225*13013Sglenn.lagasse@oracle.com return (msg) 226*13013Sglenn.lagasse@oracle.com 227*13013Sglenn.lagasse@oracle.comdef sendMsg(string, mode, log_fd=-1): 228*13013Sglenn.lagasse@oracle.com """Send message.""" 229*13013Sglenn.lagasse@oracle.com 230*13013Sglenn.lagasse@oracle.com if mode == msgOut: 231*13013Sglenn.lagasse@oracle.com print >> sys.stdout, string, 232*13013Sglenn.lagasse@oracle.com if mode == msgErr: 233*13013Sglenn.lagasse@oracle.com print >> sys.stderr, string 234*13013Sglenn.lagasse@oracle.com if log_fd != -1 or mode == msgLog: 235*13013Sglenn.lagasse@oracle.com log_fd.write(string + "\n") 236*13013Sglenn.lagasse@oracle.com 237*13013Sglenn.lagasse@oracle.comdef printMsg(msg_idx=-1, txt="", log_fd=-1): 238*13013Sglenn.lagasse@oracle.com """Print the message based on the message index.""" 239*13013Sglenn.lagasse@oracle.com 240*13013Sglenn.lagasse@oracle.com if msg_idx in Msgs.mBeadmErr: 241*13013Sglenn.lagasse@oracle.com printStderr(composeMsg(Msgs.mBeadmErr[msg_idx], txt), 242*13013Sglenn.lagasse@oracle.com log_fd) 243*13013Sglenn.lagasse@oracle.com elif msg_idx in Msgs.mBeadmOut: 244*13013Sglenn.lagasse@oracle.com printStdout(composeMsg(Msgs.mBeadmOut[msg_idx], txt), 245*13013Sglenn.lagasse@oracle.com log_fd) 246*13013Sglenn.lagasse@oracle.com elif msg_idx in Msgs.mBeadmLog: 247*13013Sglenn.lagasse@oracle.com printLog(composeMsg(Msgs.mBeadmLog[msg_idx], txt), log_fd) 248*13013Sglenn.lagasse@oracle.com else: 249*13013Sglenn.lagasse@oracle.com printStderr(composeMsg(Msgs.mLibbe[BEADM_ERR_MSG_SUB], 250*13013Sglenn.lagasse@oracle.com msg_idx), -1) 251*13013Sglenn.lagasse@oracle.com sys.exit(1) 252*13013Sglenn.lagasse@oracle.com 253*13013Sglenn.lagasse@oracle.comdef getMsg(msg_idx=-1, txt=""): 254*13013Sglenn.lagasse@oracle.com """Print the message based on the message index.""" 255*13013Sglenn.lagasse@oracle.com 256*13013Sglenn.lagasse@oracle.com if msg_idx in Msgs.mBeadmErr: 257*13013Sglenn.lagasse@oracle.com return(composeMsg(Msgs.mBeadmErr[msg_idx], txt)) 258*13013Sglenn.lagasse@oracle.com elif msg_idx in Msgs.mBeadmOut: 259*13013Sglenn.lagasse@oracle.com return(composeMsg(Msgs.mBeadmOut[msg_idx], txt)) 260*13013Sglenn.lagasse@oracle.com elif msg_idx in Msgs.mBeadmLog: 261*13013Sglenn.lagasse@oracle.com return(composeMsg(Msgs.mBeadmLog[msg_idx], txt)) 262*13013Sglenn.lagasse@oracle.com else: 263*13013Sglenn.lagasse@oracle.com return(composeMsg(Msgs.mLibbe[BEADM_ERR_MSG_SUB])) 264*13013Sglenn.lagasse@oracle.com sys.exit(1) 265