source: lliurex-up/trunk/fuentes/lliurex-up-cli/usr/sbin/lliurex-upgrade @ 6038

Last change on this file since 6038 was 6038, checked in by jrpelegrina, 2 years ago

WIP in showerror output in lliurex-upgrade

  • Property svn:executable set to *
File size: 20.6 KB
Line 
1#!/usr/bin/env python
2
3from clint import arguments
4from clint.textui import puts, indent, colored
5import lliurex.lliurexup
6import os
7import subprocess
8import sys
9import shutil
10import commands
11import datetime
12import time
13import signal
14signal.signal(signal.SIGINT,signal.SIG_IGN)
15
16class LliurexUpCli(object):
17        def __init__(self):
18
19               
20                print("  [Lliurex-up]: Checking n4d service status")
21
22                self.lliurexcore = lliurex.lliurexup.LliurexUpCore()
23                log_msg="------------------------------------------\n"+"LLIUREX-UP-CLI STARTING AT: " + datetime.datetime.today().strftime("%d/%m/%y %H:%M:%S") +"\n------------------------------------------"
24                self.log(log_msg)
25                signal.signal(signal.SIGINT,self.handler_signal)
26
27                if mode=="sai":
28                        self.mode=mode
29                        self.initActionsArg="initActionsSai"
30                       
31                else:
32                        self.mode="normal"
33                        self.initActionsArg="initActions"       
34
35                self.checkInitialN4dStatus()
36                #self.checkInitialFlavour()
37       
38        #def __init__
39       
40        def checkInitialN4dStatus(self):
41
42                self.statusN4d=self.lliurexcore.n4dStatus
43               
44                if not self.statusN4d:
45                        print("  [Lliurex-up]: N4d is not working. Execute 'sudo systemctl restart n4d.service' and try again")
46                        log_msg="N4d is not working"
47                        self.log(log_msg)
48                        self.cleanEnvironment()
49                        '''
50                        self.lliurexcore.cleanEnvironment()
51                        self.lliurexcore.cleanLliurexUpLock()
52                        '''
53                        sys.exit(1)
54                               
55
56        def checkInitialFlavour(self,extra_args=None):
57
58                self.allRepos=False
59
60                if      extra_args["repositories"]:
61                        self.allRepos=True 
62
63                self.targetMetapackage=self.lliurexcore.checkInitialFlavour(self.allRepos)
64                log_msg="Initial check metapackage. Metapackage to install: " + str(self.targetMetapackage)
65                self.log(log_msg)
66                log_msg="Get initial flavours: " + str(self.lliurexcore.previousFlavours)
67                self.log(log_msg)
68               
69        #def checkInitialFlavour       
70               
71
72        def canConnectToLliurexNet(self):
73
74                print("  [Lliurex-up]: Checking connection to lliurex.net")
75
76                can_connect=self.lliurexcore.canConnectToLliurexNet()
77                if can_connect:
78                                log_msg="Can connect to lliurex.net: True"
79                                self.log(log_msg)
80                                return True
81                else:
82                        log_msg="Can connect to lliurex.net: False"
83                        self.log(log_msg)
84
85                        if "lliurex-meta-server" == self.targetMetapackage or "server" in self.lliurexcore.previousFlavours:
86                                if self.initActionsArg !="initActionsSai":
87                                        '''
88                                        self.cleanEnvironment()
89                                       
90                                        self.lliurexcore.cleanEnvironment()
91                                        self.lliurexcore.cleanLliurexUpLock()
92                                        '''
93                                        return False
94                               
95                        print("  [Lliurex-up]: Unable to connect to lliurex.net")
96                        return True
97                               
98        #def canConnectToLliurexNet                     
99                               
100        def clientCheckingMirrorIsRunning(self):
101               
102                is_mirror_running_inserver=self.lliurexcore.clientCheckingMirrorIsRunning()
103               
104                if is_mirror_running_inserver['ismirrorrunning'] ==None:
105                        log_msg="Checking if mirror in server is being updated. Error: " + str(is_mirror_running_inserver['exception'])
106                        self.log(log_msg)
107                else:
108                        if is_mirror_running_inserver['ismirrorrunning']:
109                                log_msg="Mirror is being updated in server. Unable to update the system"
110                                self.log(log_msg)
111               
112                return is_mirror_running_inserver['ismirrorrunning']
113               
114                       
115        #def clientCheckingMirrorIsRunning             
116       
117        def initActionsScript(self,extra_args=None):
118
119                print("  [Lliurex-up]: Checking system")
120
121                if extra_args["unattendend_upgrade"]:
122                        command="DEBIAN_FRONTEND=noninteractive " + self.lliurexcore.initActionsScript(self.initActionsArg)
123               
124                else:
125                        command=self.lliurexcore.initActionsScript(self.initActionsArg)
126               
127                try:
128                       
129                        p=subprocess.Popen(command,shell=True,stderr=subprocess.PIPE)
130                        output=p.communicate()
131                        error=self.readErrorOutput(output[1])
132                        if error:
133                                print("  [Lliurex-up]: Checking system. Error: " +'\n'+str(output[1]))
134                                log_msg="Exec Init-Actions. Error: %s"%output[1]
135                        else:
136                                log_msg="Exec Init-Actions. OK"
137                       
138                except Exception as e:
139                        log_msg="Exec Init-Actions.Error: " +str(e)
140                        print("  [Lliurex-up]: Checking system. Error: " +'\n'+str(e))
141
142                       
143                self.log(log_msg)       
144                       
145        #def initActionsScript
146       
147        def checkLliurexUp(self):
148
149                print("  [Lliurex-up]: Looking for new version of Lliurex Up")
150
151
152                is_lliurexup_updated=self.lliurexcore.isLliurexUpIsUpdated(self.allRepos)
153
154
155                if not is_lliurexup_updated:
156                        print ("  [Lliurex-up]: Updating Lliurex Up")
157                        is_lliurexup_installed=self.lliurexcore.installLliurexUp()
158                        log_msg="Installing lliurex-up. Returncode: " + str(is_lliurexup_installed['returncode']) + ". Error: " + str(is_lliurexup_installed['stderrs'])
159                        self.log(log_msg)
160                        print ("  [Lliurex-up]: Lliurex Up is now update and will be reboot now" )
161                        time.sleep(3)
162                        self.lliurexcore.cleanLliurexUpLock()
163                        os.execv("/usr/sbin/lliurex-upgrade",sys.argv) 
164
165                else:
166                        log_msg="Checking lliurex-up. Is lliurex-up updated: "+ str(is_lliurexup_updated)
167                        self.log(log_msg)
168                        print ("  [Lliurex-up]: Lliurex Up is updated.Nothing to do")   
169                       
170        #def checkLliurexUp             
171
172        def checkMirror(self,extra_args=None):
173
174                print("  [Lliurex-up]: Checking if mirror is updated")
175
176                try:
177                        is_mirror_updated=self.lliurexcore.lliurexMirrorIsUpdated()
178
179                        if is_mirror_updated !=None:
180                                try:
181                                        is_mirror_running=self.lliurexcore.lliurexMirrorIsRunning()
182                                        if is_mirror_running:
183                                                print("  [Lliurex-up]: Updating mirror. Wait a moment please")
184                                                command='lliurex-mirror update llx16'
185                                                #os.system(command)
186                                                subprocess.Popen(command,shell=True).communicate()
187
188                                        else:
189                                                if is_mirror_updated['action']=='update':
190                                                        log_msg="Checking mirror. Is mirror update: False"
191                                                        self.log(log_msg)
192                                                        if not is_mirror_running:
193                                                                if not extra_args["unattended_mirror"]:
194                                                                        response=raw_input('  [LLiurex-up]: Do you want update mirror (yes/no): ').lower()
195                                                                else:
196                                                                        response="yes"
197
198                                                                if response.startswith('y'):
199                                                                        log_msg="Update lliurex-mirror: Yes"
200                                                                        self.log(log_msg)
201                                                                        print("  [Lliurex-up]: Updating mirror. Wait a moment please")
202                                                                        command='lliurex-mirror update llx16'
203                                                                        #os.system(command)
204                                                                        subprocess.Popen(command,shell=True).communicate()
205
206                                                                else:
207                                                                        log_msg="Update lliurex-mirror: No"
208                                                                        self.log(log_msg)
209                                                                        print("  [Lliurex-up]: Mirror update.Nothing to do")   
210                               
211                                except Exception as e:
212                                        log_msg="Updating mirror. Error: " + str(e)
213                                        self.log(log_msg)       
214                                        print("  [Lliurex-up]: Updating mirror. Error: " +str(e))
215                                                                                       
216                        else:
217                                log_msg="Checking mirror. Is mirror update: None"
218                                self.log(log_msg)
219                                print("  [Lliurex-up]: Nothing to do with mirror")
220               
221                except Exception as e:
222                        log_msg="Checking mirror. Error: " + str(e)
223                        self.log(log_msg)       
224                        print("  [Lliurex-up]: Checking mirror. Error: " +str(e))       
225                       
226        #def checkMirror               
227
228        def getLliurexVersionLocal(self):
229
230                print("  [Lliurex-up]: Looking for LliurexVersion from local repository")
231               
232                self.version_update=self.lliurexcore.getLliurexVersionLocal()
233                log_msg="Get LliurexVersion installed: " + str(self.version_update["installed"])
234                self.log(log_msg)
235                log_msg="Get LliurexVersion candidate from Local repository: " + str(self.version_update["candidate"])
236                self.log(log_msg)
237
238        #def getLliurexVersionLocal     
239       
240
241        def getLliurexVersionLliurexNet(self):
242       
243                print("  [Lliurex-up]: Looking for LliurexVersion from lliurex.net")
244
245                self.version_available=self.lliurexcore.getLliurexVersionLliurexNet()
246                log_msg="Get LliurexVersion candidate from Lliurex Net: " + str(self.version_available["candidate"])
247                self.log(log_msg)
248       
249        #def getLliurexVersionLliurexNet               
250
251        def checkingInitialFlavourToInstall(self):
252
253                print("  [Lliurex-up]: Checking if installation of metapackage is required")
254
255                self.returncode_initflavour=0
256
257                if self.targetMetapackage == None:
258                       
259                        print "  [Lliurex-up]: Installation of metapackage is not required"
260                       
261                else:
262                        print "  [Lliurex-up]: Installation of metapackage is required: " + str(self.targetMetapackage)
263                        is_flavour_installed=self.lliurexcore.installInitialFlavour(self.targetMetapackage)     
264                        self.returncode_initflavour=is_flavour_installed['returncode']
265                        error=is_flavour_installed['stderrs']
266                        log_msg="Install initial metapackage:" + self.targetMetapackage + ": Returncode: " + str(self.returncode_initflavour) + " Error: " + str(error)
267                        self.log(log_msg)
268                        print "  [Lliurex-up]: Metapackage is now installed: Returncode: " + str(self.returncode_initflavour) + " Error: " + str(error)
269                       
270        #def checkingInitialFlavourToInstall           
271       
272        def getPackagesToUpdate(self):
273
274                print("  [Lliurex-up]: Looking for new updates")
275                packages=self.lliurexcore.getPackagesToUpdate()
276                log_msg="Get packages to update. Number of packages: "+ str(len(packages))
277                self.log(log_msg)
278
279                self.newpackages=0
280                self.listpackages=""
281                if (len(packages))>0:
282                        for item in packages:
283                                if packages[item]["install"]==None:
284                                                self.newpackages=int(self.newpackages) + 1
285                                self.listpackages=str(self.listpackages) + item +" "           
286
287                return packages
288
289        #def getPackagesToUpdate               
290                       
291        def checkingIncorrectFlavours(self):
292               
293                incorrectFlavours=self.lliurexcore.checkIncorrectFlavours()
294                log_msg="Checking incorrect metapackages. Others metapackages detected: " + str(incorrectFlavours)
295                self.log(log_msg)
296
297                return incorrectFlavours
298       
299        #def checkingIncorrectFlavours         
300               
301        def checkPreviousUpgrade(self):
302               
303                error=False
304                if self.returncode_initflavour!=0:
305                        error=True
306
307                else:
308                        if self.version_update["candidate"]!=None:
309                                if self.version_update["installed"]!=self.version_update["candidate"]:
310                                        error=True
311                        else:
312                                if self.version_update["installed"]!=self.version_available["candidate"]:       
313                                        error=True
314
315                return error
316
317        #def checkPreviousUpgrade               
318
319        def preActionsScript(self,extra_args):
320
321                print("  [Lliurex-up]: Preparing system to update")
322
323                if extra_args["unattendend_upgrade"]:
324                        command="DEBIAN_FRONTEND=noninteractive " + self.lliurexcore.preActionsScript()
325                else:
326                        command=self.lliurexcore.preActionsScript()             
327               
328                try:
329                        #os.system(command)
330                        p=subprocess.Popen(command,shell=True,stderr=subprocess.PIPE)
331                        output=p.communicate()
332                        error=self.readErrorOutput(output[1])
333                        if error:
334                                print("  [Lliurex-up]: Preparing system to update. Error: " +'\n'+str(output[1]))
335                                log_msg="Exec Pre-Actions. Error: %s"%output[1]
336                        else:
337                                log_msg="Exec Pre-Actions. OK"
338
339                except Exception as e:
340                        print("  [Lliurex-up]: Preparing system to update. Error: " +'\n'+str(e))
341                        log_msg="Exec Pre-Actions. Error " +str(e)
342                       
343
344                self.log(log_msg)       
345
346        #def preActionsScript                   
347
348        def distUpgrade(self,extra_args):
349
350                print("  [Lliurex-up]: Downloading and installing packages")
351
352                if extra_args["unattendend_upgrade"]:
353                        command="DEBIAN_FRONTEND=noninteractive " + self.lliurexcore.distUpgradeProcess()
354                else:
355                        command=self.lliurexcore.distUpgradeProcess()
356
357                try:
358                        #os.system(command)
359                        p=subprocess.Popen(command,shell=True,stderr=subprocess.PIPE)
360                        output=p.communicate()
361                        error=self.readErrorOutput(output[1])
362                        if error:
363                                print("  [Lliurex-up]: Downloading and installing packages. Error: "+ '\n' +str(output[1]))
364                                log_msg="Exec Dist-upgrade. Error: %s"%output[1]
365                        else:
366                                log_msg="Exec Dist-upgrade. OK"
367               
368                except Exception as e:
369                        print("  [Lliurex-up]: Downloading and installing packages. Error: " + '\n' +str(e))
370                        log_msg="Exec Dist-uggrade.Error : " +str(e)
371
372                self.log(log_msg)       
373                       
374        #def distUpgrade               
375
376        def postActionsScript(self,extra_args):
377
378                print("  [Lliurex-up]: Ending the update")
379
380                self.errorpostaction=False
381
382                if extra_args["unattendend_upgrade"]:
383                        command="DEBIAN_FRONTEND=noninteractive " + self.lliurexcore.postActionsScript() 
384                else:
385                        command=self.lliurexcore.postActionsScript()
386       
387                try:
388                        p=subprocess.Popen(command,shell=True,stderr=subprocess.PIPE)
389                        output=p.communicate()
390
391                        error=self.readErrorOutput(output[1])
392                        if error:
393                                print("  [Lliurex-up]: Ending the update. Error: " +'\n'+str(output[1]))
394                                self.errorpostaction=True
395                                log_msg="Exec Post-Actions. Error: %s"%output[1]
396                        else:
397                                log_msg="Exec Post-Actions.OK"
398
399                       
400                except Exception as e:
401                        self.errorpostaction=True
402                        print("  [Lliurex-up]: Ending the update. Error: " +'\n'+str(e))
403                        log_msg="Exec Post-Actions.Error:%s"%e
404
405                self.log(log_msg)       
406
407        #def postActionsScript                 
408
409        def readErrorOutput(self,output):
410
411                cont=0
412                lines=output.split("\n")
413                for line in lines:
414                        if "E: " in line:
415                                cont=cont+1
416
417                if cont>0:
418                        return True
419                else:
420                        return False                   
421
422        #def readErrorOutput
423
424        def checkFinalN4dStatus(self):
425
426                print("  [Lliurex-up]: Checking N4d status")
427
428                self.lliurexcore.checkN4dStatus()
429               
430                if not self.lliurexcore.n4dStatus:
431                        log_msg="N4d is not working"
432                        self.log(log_msg)
433
434        #def checkFinalN4dStatus               
435
436        def checkingFinalFlavourToInstall(self):
437               
438                print("  [Lliurex-up]: Checking final metapackage")
439                self.errorfinalmetapackage=False
440                #self.flavourToInstall=self.lliurexcore.checkFinalFlavour()
441                self.checkFinalN4dStatus()
442
443                try:
444                        self.flavourToInstall=self.lliurexcore.checkFlavour()
445
446                        log_msg="Final check metapackage. Metapackage to install:%s"%self.flavourToInstall
447                        self.log(log_msg)
448                                                       
449                        if self.flavourToInstall!=None:
450                                print ("  [Lliurex-up]: Install of metapackage is required:%s"%self.flavourToInstall)
451                       
452                                if extra_args["unattendend_upgrade"]:
453                                        command="DEBIAN_FRONTEND=noninteractive " + self.lliurexcore.installFinalFlavour(self.flavourToInstall)
454                                else:
455                                        command=self.lliurexcore.installFinalFlavour(self.flavourToInstall)
456
457                                try:
458
459                                        p=subprocess.Popen(command,shell=True,stderr=subprocess.PIPE)
460                                        output=p.communicate()
461
462                                        error=self.readErrorOutput(output[1])
463
464                                        if error:
465                                                self.errorfinalmetapackage=True
466                                                print ("  [Lliurex-up]: Install of metapackage. Error: " +'\n'+str(output[1]))
467                                                log_msg="Final install metapackage. Error %s"%output[1]
468                                        else:
469                                                log_msg="Final install metapackage.OK"
470
471
472                                except Exception as e:
473                                        self.errorfinalmetapackage=True
474                                        print ("  [Lliurex-up]: Install of metapackage. Error: " +'\n'+str(e))
475                                        log_msg="Install of metapackage. Error:%s"%e
476
477                                self.log(log_msg)       
478                                       
479                                                       
480                        else:
481                                print ("  [Lliurex-up]: Metapackage is correct. Nothing to do")
482
483                except Exception as e: 
484                        self.errorfinalmetapackage=True
485                        print ("  [Lliurex-up]: Checking Metapackage. Error:" +'\n'+str(e))
486                        log_msg="Final check metapackage. Error:%s"%e   
487                        self.log(log_msg)       
488                       
489        #def checkingFinalFlavourToInstall             
490                                       
491        def checkFinalUpgrade(self):
492
493
494                print("  [Lliurex-up]: Checking Dist-upgrade ")
495                error=self.lliurexcore.checkErrorDistUpgrade()
496
497                if error or self.errorfinalmetapackage or self.errorpostaction :
498                        print("  [Lliurex-up]: The updated process is endend with errors")
499                        log_msg="Dist-upgrade process ending with errors"
500                        self.distUpgrade_OK=False
501               
502                else:                                   
503                        print("  [Lliurex-up]: The system is now update")       
504                        log_msg="Dist-upgrade process ending OK"
505                        self.distUpgrade_OK=True
506
507               
508                self.log(log_msg)
509               
510        #def checkFinalUpgrade 
511
512        def cleanEnvironment(self):
513
514                self.lliurexcore.cleanEnvironment()
515                self.lliurexcore.cleanLliurexUpLock()
516
517                if self.initActionsArg =="initActionsSai":
518                        origPinningPath="/usr/share/lliurex-up/lliurex-pinning.cfg"
519                        destPinningPath="/etc/apt/preferences.d/lliurex-pinning"
520                        shutil.copy(origPinningPath,destPinningPath)
521
522                return
523
524        #def cleanEnvironment           
525
526        def handler_signal(self,signal,frame):
527               
528                print("\n  [Lliurex-up]: Cancel process with Ctrl+C signal")
529                log_msg="Cancel process with Ctrl+C signal"
530                self.log(log_msg)
531                self.cleanEnvironment()
532                '''
533                self.lliurexcore.cleanEnvironment()
534                self.lliurexcore.cleanLliurexUpLock()
535                '''
536                sys.exit(0)
537       
538        #def handler_signal
539
540        def log(self,msg):
541               
542                log_file="/var/log/lliurex-up.log"
543                f=open(log_file,"a+")
544                f.write(msg + '\n')
545                f.close()       
546       
547        #def log
548
549       
550        def main(self,mode,extra_args=None):
551
552                self.checkInitialFlavour(extra_args)
553
554                '''
555                if mode=="sai":
556                        self.initActionsArg="initActionsSai"
557                       
558                else:
559                        mode="normal"
560                        self.initActionsArg="initActions"       
561
562                '''
563                log_msg="Mode of execution: " + str(self.mode)
564                self.log(log_msg)
565                log_msg="Extra args: " + str(extra_args)
566                self.log(log_msg)
567                       
568                if not self.canConnectToLliurexNet():
569                        print("  [Lliurex-up]: Unable to connect to lliurex.net")
570                        self.cleanEnvironment()
571                        '''
572                        self.lliurexcore.cleanEnvironment()
573                        self.lliurexcore.cleanLliurexUpLock()
574                        '''
575                        return 1
576                       
577                clientCheckingMirror=self.clientCheckingMirrorIsRunning()
578               
579                if clientCheckingMirror!=False:
580                        if clientCheckingMirror:
581                                print("  [Lliurex-up]: Mirror is being updated in server. Unable to update the system")
582                        else:
583                                print("  [Lliurex-up]: Unable to connect with server")
584
585                        self.cleanEnvironment()
586                        '''
587                        self.lliurexcore.cleanEnvironment()
588                        self.lliurexcore.cleanLliurexUpLock()
589                        '''
590                        return 1
591                       
592                self.initActionsScript(extra_args)
593                self.checkLliurexUp()
594
595                if extra_args["mirror"]:
596                        self.checkMirror(extra_args)
597
598                self.getLliurexVersionLocal()
599                self.getLliurexVersionLliurexNet()
600                self.checkingInitialFlavourToInstall()
601                self.packages=self.getPackagesToUpdate()
602
603                if len(self.packages)>0:
604                        if not self.checkingIncorrectFlavours():
605                                print self.listpackages
606                                print("  [Lliurex-up]: Number of packages to update: " +  str(len(self.packages)) + " (" + str(self.newpackages) + " news)" )
607                                if not extra_args["unattendend_upgrade"]:
608                                        response=raw_input('  [LLiurex-up]: Do you want to update the system (yes/no)): ').lower()
609                                else:
610                                        response="yes"
611
612                                if response.startswith('y'):
613                                        self.preActionsScript(extra_args)
614                                        self.distUpgrade(extra_args)
615                                        self.postActionsScript(extra_args)
616                                        time.sleep(5)
617                                        self.checkingFinalFlavourToInstall()   
618                                        self.checkFinalUpgrade()
619                                        self.cleanEnvironment()
620                                        '''
621                                        self.lliurexcore.cleanEnvironment()
622                                        self.lliurexcore.cleanLliurexUpLock()
623                                        '''
624                                        if self.distUpgrade_OK:
625                                                return 0
626                                        else:
627                                                return 1
628
629
630                                else:
631                                        log_msg="Cancel the update"
632                                        self.log(log_msg)
633                                        print("  [Lliurex-up]: Cancel the update")
634                                        self.cleanEnvironment()
635                                        '''
636                                        self.lliurexcore.cleanEnvironment()
637                                        self.lliurexcore.cleanLliurexUpLock()
638                                        '''     
639                                        return 0
640                        else:
641                                print("[Lliurex-up]: Updated abort for incorrect flavours detected in new update")
642                                log_msg="Updated abort for incorrect flavours detected in new update"
643                                self.log(log_msg)
644                                self.cleanEnvironment()
645                                '''
646                                self.lliurexcore.cleanEnvironment()
647                                self.lliurexcore.cleanLliurexUpLock()
648                                '''
649                                return 1                       
650                else:
651                        if not self.checkPreviousUpgrade():
652                                print("  [Lliurex-up]: Your system is updated. Nothing to do")
653                                log_msg="System updated. Nothing to do"
654                                self.log(log_msg)
655                                self.cleanEnvironment()
656                                '''
657                                self.lliurexcore.cleanEnvironment()
658                                self.lliurexcore.cleanLliurexUpLock()
659                                '''
660                                return 0
661                        else:
662                                print("  [Lliurex-up]: Updated abort. An error occurred checking new updates")
663                                log_msg=" Updated abort. An error occurred checking new updates"
664                                self.log(log_msg)
665                                self.cleanEnvironment()
666                                '''
667                                self.lliurexcore.cleanEnvironment()
668                                self.lliurexcore.cleanLliurexUpLock()
669                                '''
670                                return 1
671        #def main                       
672                                       
673
674def     usage():
675        puts("Usage")
676        with indent(4):
677                puts("lliurex-upgrade [FLAGS...]")
678                puts("Flags")
679                with indent(4):
680                        puts("-h --help:                Show help")
681                        puts("-s --sai:         Update the system without pinning and enable try to update without conection to lliurex.net")   
682                        puts("-u --unattended:  Update the system in unattended mode. Does not require confirmation to update mirror and system")
683                        puts("-n --no-mirror:           Update the system without checking mirror")
684                        puts("-r --repositories:        Update the system adding mirror and lliurex.net repositories (only valid for clients)")
685
686
687        sys.exit(1)             
688
689#def usage
690
691
692def free_space_check():
693               
694        if ((os.statvfs("/").f_bfree * os.statvfs("/").f_bsize) / (1024*1024*1024)) < 2: #less than 2GB available?
695                print "  [Lliurex-up]: There's not enough space on disk to upgrade (2 GB needed)"
696                       
697                sys.exit(1)
698
699#def free_space_check           
700
701def islliurexup_running():
702
703        if os.path.exists('/var/run/lliurexUp.lock'):
704                print "  [Lliurex-up]: Lliurex Up is now running "
705                sys.exit(1)
706
707#def isllliurexup_running
708
709
710if __name__ == '__main__':
711        if os.geteuid() != 0:
712                print "  [Lliurex-up]: You need be root!"
713                sys.exit(1)
714
715        islliurexup_running()
716        free_space_check()     
717        mode=None
718        options=0       
719        extra_args={}
720        extra_args["mirror"]=True
721        extra_args["unattended_mirror"]=False
722        extra_args["unattendend_upgrade"]=False
723        extra_args["repositories"]=False
724
725        args=arguments.Args().copy
726       
727        if args.contains(["-h", "--help"]):
728                usage()
729       
730        if args.contains(["-s", "--sai"]):
731                mode="sai"
732                options=1
733
734        if args.contains(["-u", "--unattended"]):
735                extra_args["unattendend_upgrade"]=True
736                extra_args["unattended_mirror"]=True
737                options=1
738
739        if args.contains(["-r","--repositories"]):
740                extra_args["repositories"]=True
741                options=1
742       
743        if args.contains(["-n", "--no-mirror"]):
744                extra_args["mirror"]=False
745                options=1
746        else:
747                if len(args)>0 and options==0:
748                        usage() 
749       
750        lliurexupcli = LliurexUpCli()   
751        sys.exit(lliurexupcli.main(mode,extra_args))
Note: See TracBrowser for help on using the repository browser.