def getKdumpInfo():
	INFO = {'Installed': False, 'Active': False}
	if( SUSE.packageInstalled('kdump') and SUSE.packageInstalled('kexec-tools') ):
		INFO['Installed'] = True
		SERVICE_NAME = 'kdump.service'
		SERVICE = SUSE.getServiceDInfo(SERVICE_NAME)
		if( len(SERVICE) > 0 and SERVICE['ActiveState'].lower() == 'active' ):
			INFO['Active'] = True
	return INFO
def kdumpEnabled():
	FILE_OPEN = "crash.txt"
	CONTENT = {}
	Enabled = 0
	if SUSE.packageInstalled('kdump'):
		Enabled += 1
	if SUSE.packageInstalled('kexec-tools'):
		Enabled += 1
	if Core.listSections(FILE_OPEN, CONTENT):
		for LINE in CONTENT:
			if "/etc/sysconfig/kdump" in CONTENT[LINE]:
				Enabled += 1
				break
	if( Enabled >= 3 ):
		return True
	else:
		return False
##############################################################################

META_CLASS = "SLE"
META_CATEGORY = "Technology"
META_COMPONENT = "Preview"
PATTERN_ID = os.path.basename(__file__)
PRIMARY_LINK = "META_LINK_Note"
OVERALL = Core.TEMP
OVERALL_INFO = "NOT SET"
OTHER_LINKS = "META_LINK_Note=https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/#Intro.Support.Techpreviews|META_LINK_Support=https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/#fate-315333|META_LINK_Fate=https://fate.suse.com/315333|META_LINK_Docs=http://gcc.gnu.org/onlinedocs/gcc/"

Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS)

##############################################################################
# Main Program Execution
##############################################################################

SERVER = SUSE.getHostInfo()
PACKAGE = 'gcc'
if "s390x" in SERVER['Architecture'].lower():
	if( SUSE.packageInstalled(PACKAGE) ):
		Core.updateStatus(Core.WARN, "Hot Patching support in gcc on s390x is unsupported technology preview software")
	else:
		Core.updateStatus(Core.ERROR, "Package not installed: " + str(PACKAGE))
else:
	Core.updateStatus(Core.ERROR, "Invalid architecture: " + str(SERVER['Architecture']))

Core.printPatternResults()


def anyPackageFound(PACKAGES):
	for PACKAGE_NAME in PACKAGES:
		if ( SUSE.packageInstalled(PACKAGE_NAME) ):
			return True
	return False
	SECTION = "/var/log/messages"
	CONTENT = []
	Failure = re.compile("multipath.*failed path|multipath.*failing path|multipath.*mark as failed", re.IGNORECASE)
	if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT):
		for LINE in CONTENT:
			if Failure.search(LINE):
				return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

RPM_NAME = 'multipath-tools'
RPM_VERSION = '0.4.9-112.1'
if( SUSE.packageInstalled(RPM_NAME) ):
	INSTALLED_VERSION = SUSE.compareRPM(RPM_NAME, RPM_VERSION)
	if( INSTALLED_VERSION == 0 ):
		if( pathFailure() ):
			Core.updateStatus(Core.CRIT, "MPIO path failure detected, all paths will fail - update multipath-tools")
		else:
			Core.updateStatus(Core.WARN, "Susceptible to multiple MPIO path failures - update multipath-tools")
	else:
		Core.updateStatus(Core.IGNORE, "Bug fix applied for " + RPM_NAME)
else:
	Core.updateStatus(Core.ERROR, "ERROR: RPM package not installed: " + RPM_NAME)

Core.printPatternResults()


		for LINE in CONTENT:
			if ERROR_MSG.search(LINE):
				return True
	SECTION = "/var/log/messages"
	CONTENT = []
	if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT):
		for LINE in CONTENT:
			if ERROR_MSG.search(LINE):
				return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

if( SUSE.packageInstalled('orarun') ):
	if( SUSE.packageInstalled('libXi6') ):
		if( SUSE.packageInstalled('libcap1') ):
			Core.updateStatus(Core.IGNORE, "Orarun required packages installed, not applicable")
		else:
			if( errorMessagesFound() ):
				Core.updateStatus(Core.CRIT, "Failed oraran installation, missing required package: libcap1")
			else:
				Core.updateStatus(Core.WARN, "Oraran installation will fail, missing required package: libcap1")
	else:
		if( SUSE.packageInstalled('libcap1') ):
			if( errorMessagesFound() ):
				Core.updateStatus(Core.CRIT, "Failed oraran installation, missing required package: libXi6")
			else:
				Core.updateStatus(Core.WARN, "Oraran installation will fail, missing required package: libXi6")
		else:
##############################################################################
# Overriden (eventually or in part) from SDP::Core Module
##############################################################################

META_CLASS = "SUMA"
META_CATEGORY = "Master TID"
META_COMPONENT = "All"
PATTERN_ID = os.path.basename(__file__)
PRIMARY_LINK = "META_LINK_TID"
OVERALL = Core.TEMP
OVERALL_INFO = "NOT SET"
OTHER_LINKS = "META_LINK_TID=https://www.suse.com/support/kb/doc.php?id=7012610|META_LINK_Docs=https://www.suse.com/documentation/suse_manager/"

Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS)

##############################################################################
# Main Program Execution
##############################################################################

if( SUSE.packageInstalled('susemanager') ):
	Core.updateStatus(Core.REC, "Consider TID7012610 - SUSE Manager Master TID")
elif( SUSE.packageInstalled('susemanager-proxy') ):
	Core.updateStatus(Core.REC, "Consider TID7012610 - SUSE Manager Master TID")
else:
	Core.updateStatus(Core.IGNORE, "SUMA not found, not applicable")

Core.printPatternResults()


Exemple #8
0
Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS)

##############################################################################
# Local Function Definitions
##############################################################################

def checkDNSStartFail():
	fileOpen = "dns.txt"
	section = "named.run"
	content = {}
	if Core.getSection(fileOpen, section, content):
		for line in content:
			if "zone 'RootServerInfo.': Designated Server is not available" in content[line]:
				return True
	return False


##############################################################################
# Main Program Execution
##############################################################################

if (SUSE.packageInstalled('novell-bind')):
	if( checkDNSStartFail() ):
		Core.updateStatus(Core.CRIT, "RootServerInfo DNS zone designated primary observed")
	else:
		Core.updateStatus(Core.IGNORE, "RootServerInfo DNS zone correctly missing designated primary")
else:
	Core.updateStatus(Core.ERROR, "ERROR: novell-bind not installed, skipping test")

Core.printPatternResults()
	fileOpen = "samba.txt"
	section = "wbinfo -u"
	content = {}
	if Core.getSection(fileOpen, section, content):
		for line in content:
			#if something in section
			if "Error looking up domain users" in content[line]:
				return True
	return False


##############################################################################
# Main Program Execution
##############################################################################
if( SUSE.compareKernel(SUSE.SLE11SP2) >= 0 and SUSE.compareKernel(SUSE.SLE11SP3) < 0 ):
	if( SUSE.packageInstalled("samba") and SUSE.packageInstalled("samba-winbind") ):
		if( SUSE.compareRPM("samba", "3.6.3-0.30.1") == 0 ):
			if( winBindRunning() ):
				Core.updateStatus(Core.WARN, "Winbind AD lookups may fail, update system for newer Samba packages")
				if( winBindFailures() ):
					Core.updateStatus(Core.CRIT, "Winbind AD lookup failure, update system for newer Samba packages")
			else:
				Core.updateStatus(Core.ERROR, "Winbind service is not running, skipping test")
		else:
			Core.updateStatus(Core.ERROR, "Samba version has been verified, skipping test")
	else:
		Core.updateStatus(Core.ERROR, "Samba/Winbind not installed, skipping test")
else:
	Core.updateStatus(Core.ERROR, "Outside the kernel scope")

Core.printPatternResults()
Exemple #10
0
def errorsFound():
	fileOpen = "messages.txt"
	section = "/var/log/messages"
	errmsg = re.compile("xadsd.*segfault.*in libdcerpc\.so", re.IGNORECASE)
	content = {}
	if Core.getSection(fileOpen, section, content):
		for line in content:
			if errmsg.search(content[line]):
				return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

PACKAGE = "novell-xad-framework"
if( oes.dsfwCapable() and SUSE.packageInstalled(PACKAGE) ):
	if( maintPatchInstalled() ):
		Core.updateStatus(Core.IGNORE, "December 2014 Maintenance Patch installed, AVOIDED")
	else:
		if( errorsFound() ):
			Core.updateStatus(Core.CRIT, "DSfW has crashed due to a known issue, update system with latest patches to resolve")
		else:
			Core.updateStatus(Core.WARN, "DSfW may be susceptible to crashing, update to lastest patches to avoid")
else:
	Core.updateStatus(Core.ERROR, "ERROR: Not a DSfW server")

Core.printPatternResults()

Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS)

##############################################################################
# Local Function Definitions
##############################################################################

def vpmuEnabled():
	fileOpen = "proc.txt"
	section = "/proc/cmdline"
	content = {}
	if Core.getSection(fileOpen, section, content):
		for line in content:
			if "vpmu=1" in content[line]:
				return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

PACKAGE = 'perf'
if( SUSE.packageInstalled(PACKAGE) and vpmuEnabled() ):
	Core.updateStatus(Core.WARN, "Performance Monitoring Tool for VMs is Unsupported")
else:
	Core.updateStatus(Core.ERROR, "Xen performance tools unused")

Core.printPatternResults()


import sys, os, Core, SUSE

##############################################################################
# Overriden (eventually or in part) from SDP::Core Module
##############################################################################

META_CLASS = "Basic Health"
META_CATEGORY = "SLE"
META_COMPONENT = "SSHD"
PATTERN_ID = os.path.basename(__file__)
PRIMARY_LINK = "META_LINK_TID"
OVERALL = Core.TEMP
OVERALL_INFO = "NOT SET"
OTHER_LINKS = "META_LINK_TID=http://www.suse.com/support/kb/doc.php?id=7014607"

Core.init(META_CLASS, META_CATEGORY, META_COMPONENT, PATTERN_ID, PRIMARY_LINK, OVERALL, OVERALL_INFO, OTHER_LINKS)

PACKAGE = "openssh"
SERVICE = "sshd.service"

##############################################################################
# Main Program Execution
##############################################################################

if SUSE.packageInstalled(PACKAGE):
    SUSE.serviceDHealth(SERVICE)
else:
    Core.updateStatus(Core.ERROR, "Basic Service Health; Package Not Installed: " + str(PACKAGE))

Core.printPatternResults()
	SECTION = "ps axwwo"
	CONTENT = []
	CRONS = 0
	if Core.getRegExSection(FILE_OPEN, SECTION, CONTENT):
		for LINE in CONTENT:
			if "cron" in LINE:
				CRONS += 1
				if( CRONS > 1 ):
					return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

if( SUSE.packageInstalled('cronie') ):
	if( SUSE.packageInstalled('cron') ):
		CRONIE_VERSION = SUSE.compareRPM('cronie', '1.4.11-59')
		CRON_VERSION = SUSE.compareRPM('cron', '4.2-59')
		if( CRONIE_VERSION < 0 ):
			if( CRON_VERSION < 0 ):
				if( multipleCrons() ):
					Core.updateStatus(Core.CRIT, "Multiple instances of cron running, update system to resolve")
				else:
					Core.updateStatus(Core.WARN, "Multiple instances of cron will incorrectly be allowed to run, update system to avoid")
			else:
				Core.updateStatus(Core.WARN, "Both cronie and cron packages should be updated together")
		else:
			if( CRON_VERSION < 0 ):
				Core.updateStatus(Core.WARN, "Both cronie and cron packages should be updated together")
			else:
def missingShim():
	PACKAGE_NAME = 'shim'
	if ( SUSE.packageInstalled(PACKAGE_NAME) ):
		return False
	else:
		return True
def intelCard():
	fileOpen = "x.txt"
	section = "sysp -c"
	content = {}
	if Core.getSection(fileOpen, section, content):
		for line in content:
			if "Intel" in content[line]:
				return True
	return False

##############################################################################
# Main Program Execution
##############################################################################

if( SUSE.compareKernel(SUSE.SLE11SP3) >= 0 and SUSE.compareKernel(SUSE.SLE11SP4) < 0 ):
	if( SUSE.packageInstalled('Mesa') ):
		if( SUSE.compareRPM('Mesa', '9.0.3-0.19.1') <= 0 ):
			if( intelCard() ):
				Core.updateStatus(Core.WARN, "GLX applications may fail to start")
			else:
				Core.updateStatus(Core.ERROR, "Error: Invalid graphics card, skipping")
		else:
			Core.updateStatus(Core.ERROR, "Valid version of Mesa installed, AVOIDED")
	else:
		Core.updateStatus(Core.ERROR, "Error: Mesa package not installed, skipping")
else:
	Core.updateStatus(Core.ERROR, "Error: Outside kernel scope, skipping")
Core.printPatternResults()

                        NOT_FOUND = 0
                    elif int(FAMILY) == 15:
                        Core.updateStatus(
                            Core.WARN,
                            "Potential compatibility issue with AMD processor family and mcelog, update system to apply: "
                            + RPM_NAME
                            + "-"
                            + RPM_VERSION,
                        )
                        NOT_FOUND = 0
    if NOT_FOUND:
        Core.updateStatus(Core.IGNORE, "Valid processor family found, not applicable")


##############################################################################
# Main Program Execution
##############################################################################

RPM_NAME = "mcelog"
RPM_VERSION = "1.0.2013.01.18-0.15.1"
if SUSE.packageInstalled(RPM_NAME):
    INSTALLED_VERSION = SUSE.compareRPM(RPM_NAME, RPM_VERSION)
    if INSTALLED_VERSION < 0:
        checkProcessorFamily()
    else:
        Core.updateStatus(Core.IGNORE, "Bug fixes applied for " + RPM_NAME + "-" + RPM_VERSION)
else:
    Core.updateStatus(Core.ERROR, "ERROR: " + RPM_NAME + " not installed")

Core.printPatternResults()