Ignore:
Timestamp:
Jun 14, 2018, 9:45:29 AM (18 months ago)
Author:
jrpelegrina
Message:

Wip in integration with dpkg-unlocker

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-up/trunk/fuentes/python-lliurex-up/lliurex/lliurexup/__init__.py

    r7387 r7449  
    77import urllib2
    88import time
     9import psutil
     10import struct, fcntl
    911
    1012
     
    3436                self.postActionsPath = '/usr/share/lliurex-up/postActions'
    3537
     38        #def __init__   
     39
     40        def startLliurexUp(self):
     41
    3642                self.createLockToken()
    3743                self.retryN4d=True
     
    5561                self.prepareEnvironment()
    5662
     63        #def startLliurexUp     
     64
     65        def isLliurexUpLocked(self):
     66
     67                '''
     68                 0: Lliurex-Up is not running
     69                 1: Lliurex-Up is running
     70                 2: Lliurex-Up is locked for previous failed process
     71                 '''
     72
     73                if os.path.exists(self.lockTokenPath):
     74                        f=open(self.lockTokenPath,'r')
     75                        up_pid=f.readline().split('\n')[0]
     76                        if up_pid !="":
     77                                up_pid=int(up_pid)
     78                                check_pid=psutil.pid_exists(up_pid)
     79                                if check_pid:
     80                                        code=1
     81                                else:
     82                                        code=2
     83                        else:
     84                                code=1
     85                               
     86                else:
     87                        code=0
     88
     89                return code     
     90
     91        #def isLliurexUpLocked         
     92
     93        def isAptLocked(self):
     94
     95                '''
     96                 0: Apt is not running
     97                 1: Apt is running
     98                 2: Apt is locked for previous failed process
     99                 '''
     100
     101                f= open("/var/lib/apt/lists/lock", 'w')
     102                try:
     103                        fcntl.lockf(f, fcntl.LOCK_EX|fcntl.LOCK_NB)
     104                        code=0
     105                except IOError:
     106                        apt_run=self.find_process("apt-get")
     107                        if apt_run!=None:
     108                                code =1
     109                        else:
     110                                code=2
     111
     112                return code     
     113
     114
     115        #def isAptLocked
     116               
     117        def isDpkgLocked(self):
     118
     119                '''
     120                 0: Dpkgis not running
     121                 1: Dpkg is running
     122                 2: Dpkg is locked for previous failed process
     123                 3: Apt is running
     124
     125                 '''
     126
     127                f= open("/var/lib/dpkg/lock", 'w')
     128                try:
     129                        fcntl.lockf(f, fcntl.LOCK_EX|fcntl.LOCK_NB)
     130                        code=0
     131                except IOError:
     132                        dpkg_run=self.find_process("dpkg")
     133                        if dpkg_run!=None:
     134                                code =1
     135                        else:
     136                                apt_run=self.find_process("apt-get")
     137                                if apt_run!=None:
     138                                        code=3
     139                                else:
     140                                        code=2 
     141
     142                return code             
     143                       
     144
     145        #def isAptLocked                       
     146
     147        def unlockerCommand(self):
     148
     149
     150                return "/usr/sbin/dpkg-unlocker-cli unlock -u"
     151
     152        #def unlockeCommand                             
     153
    57154
    58155        def createLockToken(self):
     
    63160                        f.write(str(up_pid))
    64161                        f.close()
     162
     163        #def createLockToken           
    65164
    66165        def getPreviousFlavours(self):
     
    72171                                self.previousFlavours.append(x.strip())
    73172                        aux.close()
     173
     174        #def getPreviousFlavours               
    74175
    75176        def checkN4dStatus(self):
     
    101202                else:           
    102203                        self.n4dStatus=True
     204
     205        #def checkN4dStatus             
    103206                       
    104207                               
     
    112215                        aux.close()             
    113216
     217        #def getTargetMetapackage
     218                       
    114219        def saveTargetMetapackage(self,targetMetapackage):
    115220
     
    121226                aux.close()
    122227
     228        #def saveTargetMetapackage     
    123229
    124230        def checkInitialFlavour(self,args=None):
     
    141247
    142248                return self.targetMetapackage
    143                
    144 
     249
     250        #def checkInitialFlavour       
     251               
    145252        def updateFlavoursList(self):
    146253               
     
    157264                        aux.close()
    158265
     266        #def updateFlavoursList         
     267
    159268        def writeDefaultSourceslist(self):
    160269
     
    165274                f.close()
    166275
     276        #def writeDefaultSourceslist   
     277
    167278        def writeDefaultSourceslistMirror(self):
    168279               
     
    172283                f.write('deb http://mirror/{version_mirror} {version}-security main restricted universe multiverse\n'.format(version_mirror=self.defaultMirror,version=self.defaultVersion))
    173284                f.close()       
     285
     286        #def writeDefaultSourceslistMirror     
    174287
    175288
     
    183296                f.write('deb http://lliurex.net/{version} {version}-updates main restricted universe multiverse\n'.format(version=self.defaultVersion))
    184297                f.write('deb http://lliurex.net/{version} {version}-security main restricted universe multiverse\n'.format(version=self.defaultVersion))
    185                 f.close()               
     298                f.close()       
     299
     300        #def writeDefaultSourceslistAll         
    186301
    187302        def prepareEnvironment(self):
     
    200315                #self.writeDefaultSourceslist()
    201316                #self.writeDefaultSourceslistMirror()
     317
     318        #def prepareEnvironment
    202319
    203320        def addSourcesListLliurex(self,args=None):
     
    253370                        else:
    254371                                os.rename(self.origsourcesfileback,self.origsourcesfile)                                       
    255                        
     372       
     373        #def addSourcesListLliurex             
    256374
    257375        def restoreOrigSourcesList(self):
     
    259377                if os.path.exists(self.origsourcesfileback):
    260378                        os.rename(self.origsourcesfileback,self.origsourcesfile)
     379
     380        #def restoreOrigSourcesList             
    261381
    262382        def readSourcesList(self):
     
    270390                                        if not "#" in line:
    271391                                                count=count+1
    272                 return count           
     392                return count   
     393
     394        #def readSourcesList           
    273395
    274396        def cleanEnvironment(self):
     
    279401                self.restoreOrigSourcesList()   
    280402
     403        #def cleanEnvironment   
     404
    281405        def cleanLliurexUpLock(self):
    282406
     
    284408                        os.remove(self.lockTokenPath)
    285409
     410        #def cleanLliurexUpLock         
     411
    286412        def updateCacheApt(self,options=""):
    287413               
    288414                command = "LANG=C LANGUAGE=en apt-get update {options}".format(options=options)
    289415                subprocess.Popen(command,shell=True).communicate()
     416
     417        #def updateCacheApt     
    290418
    291419
     
    313441                return {"installed":installed,"candidate":candidate}
    314442
     443        #def getPackageVersionAvailable
     444
    315445        def isLliurexUpIsUpdated(self,args=None):
    316446                '''
     
    337467                return True
    338468
     469        #def isLliurexUpIsUpdated       
     470
    339471        def installLliurexUp(self,options=""):
    340472                '''
     
    355487                return {'returncode':p.returncode,'stdout':poutput,'stderrs':perror}
    356488
     489        #def installLliurexUp   
     490
    357491        def lliurexMirrorIsUpdated(self):
    358492                '''
     
    367501                return None
    368502
     503        #def lliurexMirrorIsUpdated     
     504
    369505        def lliurexMirrorIsRunning(self):
    370506                '''
     
    376512                return False
    377513
     514        #def lliurexMirrorIsRunning     
     515
    378516        def clientCheckingMirrorIsRunning(self):
    379517
     
    389527
    390528                return {'ismirrorrunning':False,'exception':False}     
     529
     530        #def clientCheckingMirrorIsRunning     
    391531
    392532        def getPercentageLliurexMirror(self):
     
    399539                                return result['msg']
    400540                return None
     541
     542        #def getPercentageLliurexMirror
    401543       
    402544        def checkFlavour(self):
     
    428570                return targetMetapackage
    429571
     572        #def checkFlavour       
     573
    430574        def canConnectToLliurexNet(self):
    431575                '''
     
    447591                except:
    448592                        return False
     593
     594        #def canConnectToLliurexNet             
    449595                               
    450596        def getLliurexVersionLliurexNet(self):
     
    460606                return self.getPackageVersionAvailable('lliurex-version-timestamp',options)
    461607
     608        #def getLliurexVersionLliurexNet       
     609       
    462610        def getLliurexVersionLocal(self):
    463611               
     
    465613                return self.getPackageVersionAvailable('lliurex-version-timestamp','')         
    466614
     615        #def getLliurexVersionLocal
     616
    467617        def initActionsScript(self,arg):
    468618               
     
    470620                return 'run-parts --arg=' +str(arg) + ' ' + self.initActionsPath
    471621
     622        #def initActionsScript
    472623
    473624        def preActionsScript(self):
     
    475626                return 'run-parts --arg="preActions" ' + self.preActionsPath
    476627
     628        #def preActionsScript
     629
    477630        def postActionsScript(self):
    478631               
     
    480633
    481634        '''     
     635        #def postActionsScript
     636
    482637        def requiresInstallFlavour(self):
    483638               
     
    535690
    536691                return {'returncode':p.returncode,'stdout':poutput,'stderrs':perror}   
     692
     693        #def installInitialFlavour
    537694
    538695        def getPackagesToUpdate(self):
     
    572729                return self.packageInfo
    573730
    574 
     731        #def getPackagesToUpdate
     732               
    575733        def checkIncorrectFlavours(self):
    576734               
     
    604762                        return False   
    605763
     764        #def checkIncorrectFlavours
    606765
    607766        def distUpgradeProcess(self):
     
    609768                return 'apt-get dist-upgrade --yes --allow-downgrades --allow-remove-essential --allow-change-held-packages'
    610769
    611 
     770        #def distUpgradeProcess
    612771
    613772        def checkErrorDistUpgrade(self):
     
    670829                return error   
    671830
     831        #def checkErrorDistUpgrade     
     832
    672833        '''     
    673834        def checkFinalFlavour(self):
     
    689850                return 'apt-get install ' + flavourToInstall + ' --yes  --allow-downgrades --allow-remove-essential --allow-change-held-packages'               
    690851       
    691 
     852        #def installFinalFlavour
     853
     854        def get_process_list(self):
     855               
     856                self.process_list=[]
     857               
     858                p=subprocess.Popen(["ps","aux"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     859                output=p.communicate()[0]
     860                lst=output.split("\n")
     861                lst.pop(0)
     862               
     863                for item in lst:
     864                        processed_line=item.split(" ")
     865                        tmp_list=[]
     866                       
     867                        if len(processed_line) >= 10:
     868                                for object in processed_line:
     869                                        if object!="":
     870                                                tmp_list.append(object)
     871                                processed_line=tmp_list
     872                               
     873                                process={}
     874                                process["user"]=processed_line[0]
     875                                process["pid"]=processed_line[1]
     876                                process["cpu"]=processed_line[2]
     877                                process["mem"]=processed_line[3]
     878                                process["vsz"]=processed_line[4]
     879                                process["rss"]=processed_line[5]
     880                                process["tty"]=processed_line[6]
     881                                process["stat"]=processed_line[7]
     882                                process["start"]=processed_line[8]
     883                                process["time"]=processed_line[9]
     884                                cmd=""
     885                                for line in processed_line[10:]:
     886                                        if cmd!="":
     887                                                cmd+=" "
     888                                        cmd+=line
     889                                       
     890                                process["command"]=cmd.split(" ")[0]
     891                                self.process_list.append(process)
     892
     893        #def get_process_list                   
     894
     895        def find_process(self,filter):
     896               
     897                self.get_process_list()
     898                ret_list=[]
     899                for process in self.process_list:
     900                        if filter in process["command"]:
     901                                ret_list.append(process)
     902                               
     903                               
     904                if len(ret_list)>0:
     905                        return ret_list
     906                else:
     907                        return None
     908
     909        #def find_process               
     910                               
     911
     912#def LliurexUpCore
    692913if __name__ == '__main__':
    693914        x = LliurexUpCore()
Note: See TracChangeset for help on using the changeset viewer.