mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-04 05:12:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
 | 
						|
import sys
 | 
						|
import os
 | 
						|
import platform
 | 
						|
 | 
						|
class xCatError(Exception):
 | 
						|
    def __init__(self, value):
 | 
						|
        self.value = value
 | 
						|
    def __str__(self):
 | 
						|
        return repr(self.value)
 | 
						|
 | 
						|
def isMounted(mountPoint):
 | 
						|
    if os.path.ismount(mountPoint):
 | 
						|
        return True
 | 
						|
    else:
 | 
						|
        return False
 | 
						|
 | 
						|
def run_command(cmd):
 | 
						|
    """
 | 
						|
    Function: run_command
 | 
						|
    Arguments: cmd - string to be run as a command
 | 
						|
    Description: runs the command then returns out and err
 | 
						|
    """
 | 
						|
    import subprocess
 | 
						|
 | 
						|
    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
 | 
						|
    (out,err) = p.communicate()
 | 
						|
    return (out,err)
 | 
						|
 | 
						|
 | 
						|
def isRhel():
 | 
						|
    myDistro = platform.linux_distribution()
 | 
						|
    if "Red Hat Enterprise Linux Server" or "CentOS" in myDistro:
 | 
						|
       return True
 | 
						|
    else:
 | 
						|
       return False
 | 
						|
 | 
						|
def isSles():
 | 
						|
    myDistro = platform.linux_distribution()
 | 
						|
    if "SUSE Linux Enterprise Server" in myDistro:
 | 
						|
       return True
 | 
						|
    else:
 | 
						|
       return False
 | 
						|
 | 
						|
def isUbuntu():
 | 
						|
    myDistro = platform.linux_distribution()
 | 
						|
    if "Ubuntu" in myDistro:
 | 
						|
       return True
 | 
						|
    else:
 | 
						|
       return False
 | 
						|
 | 
						|
def getUserInput(question):
 | 
						|
    response = raw_input("%s: " %(question))
 | 
						|
    return response
 | 
						|
 | 
						|
def filterInstalledPackages(pkglist=[]):
 | 
						|
    fulllist = ""
 | 
						|
 | 
						|
    if isRhel():
 | 
						|
        # using YUM
 | 
						|
        import yum
 | 
						|
        yb = yum.YumBase()
 | 
						|
 | 
						|
        for x in pkglist:
 | 
						|
            if not yb.rpmdb.searchNevra(name='%s' %(x)):
 | 
						|
                fulllist += "%s " %(x)
 | 
						|
 | 
						|
    return fulllist
 | 
						|
 | 
						|
def installPackages(pkglist=[]):
 | 
						|
    fulllist = filterInstalledPackages(pkglist)
 | 
						|
 | 
						|
    if isRhel():
 | 
						|
        if fulllist.strip() != "":
 | 
						|
            cmd = "yum -y install %s" %(fulllist)
 | 
						|
            out,err = xcatutils.run_command(cmd)
 | 
						|
 | 
						|
    elif isSles():
 | 
						|
        print "Using zyppr..."
 | 
						|
    elif isUbuntu():
 | 
						|
        print "Using apt-get..."
 | 
						|
    else:
 | 
						|
        print "Error!"
 | 
						|
 |