Ignore:
Timestamp:
Jan 26, 2017, 1:52:33 PM (3 years ago)
Author:
jrpelegrina
Message:

WIP in new cli

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-up/trunk/fuentes/lliurex-up-cli/usr/sbin/lliurex-upgrade

    r3411 r3426  
    99import time
    1010
    11 class LliurexUpCli:
     11class LliurexUpCli(object):
    1212        def __init__(self):
    1313
    1414                self.lliurexcore = lliurex.lliurexup.LliurexUpCore()
     15                self.errorupgrade_token=os.path.join(self.lliurexcore.processPath,'errorupgrade_token')
     16                self.finalupgrade_token=os.path.join(self.lliurexcore.processPath,'finalupgrade_token')
     17
    1518                self.checkInitialFlavour()
    1619       
     
    3134                        if len(self.previousFlavours)==0:
    3235                                self.lliurexcore.getPreviuosFlavours()
    33                        
    34                         log_msg="Get initial flavours: " + str(self.previousFlavours)
    35                         self.log(log_msg)
    36                  
    3736                except Exception as e:
    3837                        print e
     
    157156                        return False
    158157
     158
     159        def checkPreviousUpgrade(self):
     160               
     161                error=False
     162                if self.version_update["candidate"]!=None:
     163                        if self.version_update["installed"]!=self.version_update["candidate"]:
     164                                error=True
     165                else:
     166                        if self.version_update["installed"]!=self.version_available["candidate"]:       
     167                                error=True
     168
     169                return error                   
     170
    159171        def preActionsScript(self):
    160172
     
    174186                        print e
    175187
     188        def checkFinalFlavour(self):
     189               
     190                flavourToInstall=None
     191               
     192                try:
     193                        self.targetMetapackage=self.lliurexcore.checkFlavour()
     194                        if self.targetMetapackage==None:
     195                                flavourToInstall=self.requiresInstallFlavour()
     196                        else:
     197                                flavourToInstall=self.targetMetapackage         
     198
     199                except Exception as e:
     200                        print e
     201                       
     202                return flavourToInstall                 
     203
     204
     205        def checkingFinalFlavourToInstall(self):
     206               
     207                self.flavourToInstall=self.checkFinalFlavour()
     208
     209                if self.flavourToInstall!=None:
     210                        print ("  [Lliurex-up]: Install of meta is required: " + str(self.flavourToInstall))
     211                        command=self.lliurexcore.installFinalFlavour(self.flavourToInstall)
     212                        try:
     213                                os.system(command)
     214                        except Exception as e:
     215                                print e
     216                else:
     217                        print (" [Lliurex-up]: Meta is correct. Nothing to do")
     218
     219                return                 
     220
     221
    176222        def postActionsScript(self):
    177223
     
    180226                        os.system(command)
    181227                except Exception as e:
    182                         print e                                 
    183 
    184         def main(self):
     228                        print e                         
     229
     230        def checkFinalUpgrade(self):
     231               
     232                error=False
     233
     234                cmd='dpkg -l | grep "^i[^i]" >' + self.errorupgrade_token
     235                os.system(cmd)
     236               
     237                if os.path.exists(self.errorupgrade_token):
     238                        aux = open(self.errorupgrade_token,'r')
     239                        lines = aux.readlines()
     240                        aux.close()
     241                       
     242                        if len(lines)>0:
     243                                error=True
     244
     245                        else:
     246                                j=0
     247                                cmd='apt-get dist-upgrade -sV >' + self.finalupgrade_token
     248                                os.system(cmd)
     249                                if os.path.exists(self.finalupgrade_token):
     250                                        aux = open(self.finalupgrade_token,'r')
     251                                        lines = aux.readlines()
     252                                        aux.close()
     253
     254                                        for x in lines:
     255                                                if 'Inst' in x:
     256                                                        j=j+1
     257
     258                                        if j>0:
     259                                                error=True     
     260                if error:
     261                        print("  [Lliurex-up]: The updated process is endend with errors")
     262               
     263                else:                                   
     264                        print("  [Lliurex-up]: The system is now update")                       
     265
     266        def main(self,mode):
     267
     268                if mode=="sai":
     269                        print "Pending"
     270                        exit(0)
    185271
    186272                print("  [Lliurex-up]: Checking system")
     
    191277                self.checkMirror()
    192278                print("  [Lliurex-up]: Checking LliurexVersion from local repository")
    193                 version_update=self.lliurexcore.getLliurexVersionLocal()
     279                self.version_update=self.lliurexcore.getLliurexVersionLocal()
    194280                print("  [Lliurex-up]: Checking LliurexVersion from lliurex.net")
    195                 version_available=self.lliurexcore.getLliurexVersionLliurexNet()
     281                self.version_available=self.lliurexcore.getLliurexVersionLliurexNet()
    196282
    197283                print("  [Lliurex-up]: Checking if installation of flavour is required")
     
    201287                self.packages=self.lliurexcore.getPackagesToUpdate()
    202288
    203                 if len(self.packages)>0:
    204                        
    205                         if not self.checkingIncorrectFlavours():
     289                if not self.checkingIncorrectFlavours():
     290                        if len(self.packages)>0:
    206291                                print("  [Lliurex-up]:List of packages to update")
    207292                                for item in self.packages:
    208293                                        print item + ": " + self.packages[item]["candidate"]
    209294
    210                                 response=raw_input(' [LLiurex-up]: Do you want to udpate the system(yes/no)): ').lower()
     295                                response=raw_input('  [LLiurex-up]: Do you want to udpate the system(yes/no)): ').lower()
    211296                                if response.startswith('y'):
    212                                         print("  [Lliurex-up]: Preparin system to update")
     297                                        print("  [Lliurex-up]: Preparing system to update")
    213298                                        self.preActionsScript()
    214299                                        print("  [Lliurex-up]: Downloading and installing packages")
     
    216301                                        print("  [Lliurex-up]: Ending the update")
    217302                                        self.postActionsScript()
    218                                         print("  [Lliurex-up]: The system is now update")
     303                                        print("  [Lliurex-up]: Checking Final Flavour")
     304                                        self.checkingFinalFlavourToInstall()   
     305                                        self.checkFinalUpgrade()
    219306                                        self.lliurexcore.cleanEnvironment()
    220307
     
    224311                                        return 0       
    225312                        else:
    226                                 print("[Lliurex-up]: Updated abort for incorrect flavours detected in new update")
    227                 else:
    228                         print("  [Lliurex-up]: Your systems is updated. Nothing to do")         
    229                         return 0                       
    230 
     313                                if not self.checkPreviousUpgrade():
     314                                        print("  [Lliurex-up]: Your systems is updated. Nothing to do")
     315                                        return 0
     316                                else:
     317                                        print("  [Lliurex-up]: Updated abort. An error occurred checking new updates")
     318                                        return 1
     319                else:
     320                        print("[Lliurex-up]: Updated abort for incorrect flavours detected in new update")
     321                        return 1                       
     322
     323def     usage():
     324        puts("Usage")
     325        with indent(4):
     326                puts("lliurex-upgrade [FLAGS...]")
     327                puts("Flags")
     328                with indent(4):
     329                        puts("-h --help: Show help")
     330                        puts("-s --sai: Update the system without checking sources list")       
     331
     332        sys.exit(1)             
    231333
    232334
     
    236338                print "You need be root!"
    237339                sys.exit(1)
    238 
    239         lliurexupcli = LliurexUpCli()
    240         lliurexupcli.main()
     340        mode=None       
     341        args=arguments.Args().copy
     342       
     343        if args.contains(["-h", "--help"]):
     344                usage()
     345       
     346        if args.contains(["-s", "--sai"]):
     347                mode="sai"
     348       
     349        lliurexupcli = LliurexUpCli()   
     350        sys.exit(lliurexupcli.main(mode))
Note: See TracChangeset for help on using the changeset viewer.