source: lliurex-up/trunk/fuentes/lliurex-up-gui/LliurexUpConnect.py @ 3108

Last change on this file since 3108 was 3108, checked in by jrpelegrina, 4 years ago

Wip in new gui. Add functions to Core

File size: 10.3 KB
Line 
1import xmlrpclib 
2import os
3import shutil
4import subprocess
5import socket
6import threading
7import datetime
8from math import pi
9
10import LliurexUpCore
11
12from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango
13
14import signal
15signal.signal(signal.SIGINT, signal.SIG_DFL)
16
17
18class LliurexUpConnect():
19
20        def __init__(self):
21
22                self.llxUpCore=LliurexUpCore.LliurexUpCore()
23                GObject.threads_init()
24                log_msg="------------------------------------------\n"+"LLIUREX-UP STARTING AT: " + datetime.datetime.today().strftime("%d/%m/%y %H:%M:%S") +"\n------------------------------------------"
25                self.log(log_msg)
26                #self.saveTargetMetapackagePath=os.path.join(self.llxUpCore.processPath,"targetMetapackage")
27                self.preactions_token=os.path.join(self.llxUpCore.processPath,'preactions_token')
28                self.upgrade_token=os.path.join(self.llxUpCore.processPath,'upgrade_token')
29                self.installflavour_token=os.path.join(self.llxUpCore.processPath,'installflavour_token')
30                self.postactions_token=os.path.join(self.llxUpCore.processPath,'postactions_token')
31                self.errorupgrade_token=os.path.join(self.llxUpCore.processPath,'errorupgrade_token')
32
33                self.checkInitialFlavour()
34
35
36        #def __init__   
37
38
39        def checkInitialFlavour(self):
40
41                self.targetMetapackage=None
42
43                try:
44                        self.targetMetapackage=self.llxUpCore.checkFlavour()
45                        log_msg="Initial check metapackage. Metapackage to install: " + str(self.targetMetapackage)
46                        self.log(log_msg)
47                       
48                        #if self.targetMetapackage !=None:
49                        self.metapackageRef=self.llxUpCore.metapackageRef
50                        if len(self.metapackageRef)==0:
51                                self.llxUpCore.getTargetMetapackage()
52                        self.metapackageRef=sorted(self.metapackageRef) 
53                         
54                        self.previousFlavours=self.llxUpCore.previuosFlavours
55                        if len(self.previousFlavours)==0:
56                                self.llxUpCore.getPreviuosFlavours()
57                       
58                        log_msg="Get initial flavours: " + str(self.previousFlavours)
59                        self.log(log_msg)
60                 
61                except Exception as e:
62                        log_msg="Initial check metapackage. Error: " + str(e)
63                        self.log(log_msg)
64
65                return self.targetMetapackage
66
67        #def checkFlavoour
68
69
70        # def saveTargetMetapackage(self):
71
72        #       try:
73        #               aux=open(self.saveTargetMetapackagePath,'w')
74        #               x=self.targetMetapackage.split("-")[2]
75        #               aux.write(x+"\n")
76        #               x="edu"
77        #               aux.write(x+"\n")
78        #               aux.close()
79
80        #       except Exception as e:
81        #               print str(e)   
82
83        def requiresInstallFlavour(self):
84               
85                flavourToInstall=None
86               
87                self.flavours=self.llxUpCore.flavours
88                log_msg="Get update flavours: " + str(self.flavours)
89                self.log(log_msg)
90
91                if not 'None' in self.previousFlavours:
92                        if self.previousFlavours !=self.flavours:
93                                flavourToInstall=self.parseFlavourToInstall(self.previousFlavours)
94                                log_msg="Requires Install this Flavour: " + str(flavourToInstall)
95                                self.log(log_msg)
96                               
97                        else:
98                                log_msg="Requires Install Flavour: No"
99                                self.log(log_msg)       
100                                                       
101                else:
102                        log_msg="Flavours reference: " + str(self.metapackageRef)
103                        self.log(log_msg)
104                        if self.metapackageRef != self.flavours:
105                                flavourToInstall=self.parseFlavourToInstall(self.metapackageRef)
106
107                                log_msg="Requires Install this Flavour: " + str(flavourToInstall)
108                                self.log(log_msg)
109                        else:
110                                log_msg="Requires Install Flavour: No"
111                                self.log(log_msg)
112
113                return flavourToInstall                                         
114                       
115
116        def parseFlavourToInstall(self,flavours):
117       
118                parse_flavour=""
119
120                for item in flavours:
121                        if item != "edu":
122                                parse_flavour=parse_flavour + " " + "lliurex-meta-" + item
123
124                return parse_flavour                   
125
126        def canConnectToLliurexNet(self):
127
128                try:
129                        can_connect=self.llxUpCore.canConnectToLliurexNet()
130                        if can_connect:
131                                return True 
132                        else:
133                                return False
134                except:
135                        return False
136
137        #def canConnectToLliurexNet
138
139        def isLliurexUpIsUpdated(self):
140
141                try:
142                        is_lliurexup_updated=self.llxUpCore.isLliurexUpIsUpdated()
143                        log_msg="Checking lliurex-up. Is lliurex-up updated: "+ str(is_lliurexup_updated)
144                        self.log(log_msg)
145                        return is_lliurexup_updated
146               
147                except Exception as e:
148                        log_msg="Checking lliurex-up. Error: " + str(e)
149                        self.log(log_msg)
150                        return True
151
152        #def isLliurexUpIsUpdated
153
154        def installLliurexUp(self):
155
156                try:
157                        is_lliurexup_installed=self.llxUpCore.installLliurexUp()
158                        log_msg="Installing lliurex-up: " + str(is_lliurexup_installed)
159                        self.log(log_msg)
160                        return is_lliurexup_installed
161
162                except Exception as e:
163                        log_msg="Installing lliurex-up. Error: " + str(e)
164                        self.log(log_msg)
165                        return True
166
167        #def installLliurexUp   
168
169       
170        def lliurexMirrorIsUpdated(self):
171
172                try:
173                        is_mirror_updated=self.llxUpCore.lliurexMirrorIsUpdated()
174
175                        if is_mirror_updated !=None:
176                       
177                                if is_mirror_updated['action']=='update':
178                                        log_msg="Checking mirror. Is mirror update: False"
179                                        self.log(log_msg)
180                                        return False
181                                else: 
182                                        log_msg="Checking mirror. Is mirror update: " + is_mirror_updated['action']
183                                        self.log(log_msg)
184                                        return True
185                        else:
186                                log_msg="Checking mirror. Is mirror update: None"
187                                self.log(log_msg)
188                                return True
189               
190               
191                except Exception as e:
192                        log_msg="Checking mirror. Error: " + str(e)
193                        self.log(log_msg)
194                        return True     
195
196        #def lliurexMirrorIsUpdated             
197
198        def lliurexMirrorIsRunning(self):
199
200                try:
201                        is_lliurexmirror_running=self.llxUpCore.lliurexMirrorIsRunning()
202                        return is_lliurexmirror_running
203
204                except Exception as e:
205                        log_msg="Updating mirror. Error: " + str(e)
206                        self.log(log_msg)
207                        return False
208
209        #def lliurexMirrorIsRunning             
210
211        def getPercentageLliurexMirror(self):
212
213                try:
214                        percentage_mirror=self.llxUpCore.getPercentageLliurexMirror()
215                        if percentage_mirror != None:
216                                return percentage_mirror
217                        else:
218                                return 0       
219               
220                except Exception as e:
221                        return 0       
222
223
224        #def getPercentageLliurexMirror
225
226        def getLliurexVersionLocal(self):
227               
228                try:
229                       
230                        self.lliurexVersionLocal=self.llxUpCore.getLliurexVersionLocal()
231                        log_msg="Get LliurexVersion installed: " + self.lliurexVersionLocal["installed"]
232                        self.log(log_msg)
233                        log_msg="Get LliurexVersion candidate from Local repository: " + self.lliurexVersionLocal["candidate"]
234                        self.log(log_msg)
235                        self.lliurexVersionLocal=self.lliurexVersionLocal["candidate"]
236
237                except Exception as e:
238                        log_msg="Get LliurexVersion from Local repository. Error: " + str(e)
239                        self.log(log_msg)
240                        self.lliurexVersionLocal=None
241
242                return self.lliurexVersionLocal
243
244
245        def getLliurexVersionNet(self):
246               
247                try:
248                        self.lliurexVersionNet=self.llxUpCore.getLliurexVersionLliurexNet()["candidate"]
249                        log_msg="Get LliurexVersion candidate from Lliurex Net: " + self.lliurexVersionNet
250                        self.log(log_msg)
251                       
252
253                except Exception as e:
254                        log_msg="Get LliurexVersion from Lliurex Net. Error: " + str(e)
255                        self.log(log_msg)
256                        self.lliurexVersionNet=None
257
258                return self.lliurexVersionNet   
259
260
261        def installInitialFlavour(self,flavourToInstall):
262
263                try:
264                        is_flavour_installed=self.llxUpCore.installInitialFlavour(flavourToInstall)
265                        return is_flavour_installed
266                        self.log(is_flavour_installed)
267
268                except Exception as e:
269                        print str(e)
270
271
272        def getPackagesToUpdate(self):
273               
274                ref_flavour=["lliurex-meta-server","lliurex-meta-client", "lliurex-meta-desktop", "lliurex-meta-music", "lliurex-meta-pyme", "lliurex-meta-infantil"] 
275                self.incorrect_flavours=[]
276                try:
277                        packages_parse=[]
278                        packages=self.llxUpCore.getPackagesToUpdate()
279                        if len(packages)>0:
280                                for item in packages:
281                                        version=packages[item]
282                                        packages_parse.append(item+";"+version['candidate']+";"+'20Mb')
283                                        if item in ref_flavour:
284                                                self.incorrect_flavours.append(item)
285
286                        log_msg="Get packages to update: OK" 
287                        self.log(log_msg)               
288                        return packages_parse
289
290                except Exception as e:
291                        log_msg="Get packages to update. Error: " + str(e)
292                        self.log(log_msg)
293                        return packages_parse
294
295
296        def checkIncorrectFlavours(self):
297               
298                count=0
299
300                if len(self.incorrect_flavours)>0:
301
302                        for item in self.incorrect_flavours:
303                                if self.targetMetapackage != None:
304                                        print self.targetMetapackage
305                                        if item != self.targetMetapackage:
306                                                count=count+1
307                                else:
308                                        meta=item.split("-")[2]
309                                        if 'None' in self.previousFlavours:
310                                                if not meta in self.metapackageRef:
311                                                        count=count+1
312                                        else:           
313                                                if not meta in self.previousFlavours:
314                                                        count=count+1
315
316                if count>0:
317                        log_msg="Checking incorrect flavours. Others flavours detected: " + str(self.incorrect_flavours)
318                        self.log(log_msg)
319                        return True
320
321                else:
322                        log_msg="Checking incorrect flavours. Others flavours no detected"
323                        self.log(log_msg)
324                        return False
325
326
327        def preActionsScript(self):
328
329                try:
330                        self.preActions=self.llxUpCore.preActionsScript()
331                        self.preActions=self.preActions + ' ;touch ' + self.preactions_token + '\n'
332                        return self.preActions
333
334                except Exception as e:
335                        print str(e)   
336
337
338        def distUpgradeProcess(self):
339               
340                self.distupgrade=self.llxUpCore.distUpgradeProcess()   
341                self.distupgrade=self.distupgrade + ' ;touch ' + self.upgrade_token + '\n'
342       
343                return self.distupgrade
344
345
346        def checkErrorDistUpgrade(self):
347
348                count=0
349                if os.path.exists(self.errorupgrade_token):
350                        aux = open(self.errorupgrade_token,'r')
351                        lines = aux.readlines()
352                        for x in lines:
353                                if 'E: ' in x:
354                                        count=count+1
355                        aux.close()
356
357                if count==0:
358                        return True
359                else:
360                        return False                   
361
362
363        def checkFinalFlavour(self):
364               
365                flavourToInstall=None
366               
367                try:
368                        self.targetMetapackage=self.llxUpCore.checkFlavour()
369                        log_msg="Final check metapackage. Metapackage to install: " + str(self.targetMetapackage)
370                        self.log(log_msg)
371                        if self.targetMetapackage==None:
372                                flavourToInstall=self.requiresInstallFlavour()
373                        else:
374                                flavourToInstall=self.targetMetapackage         
375
376                except Exception as e:
377                        log_msg="Final check metapackage. Error: " + str(e)
378                        self.log(log_msg)
379
380                return flavourToInstall         
381       
382        def installFinalFlavour(self,flavourToInstall):
383
384                self.command=self.llxUpCore.installFinalFlavour(flavourToInstall)
385                self.command=self.command + ' ;touch ' + self.installflavour_token + '\n'
386                return self.command
387
388        def postActionsScript(self):
389
390                try:
391                        self.postActions=self.llxUpCore.postActionsScript()
392                        self.postActions=self.postActions + ' 2> >(tee ' + self.errorupgrade_token + ') ;touch ' + self.postactions_token + '\n'
393                        return self.postActions
394
395                except Exception as e:
396                        print str(e)   
397
398
399        def cleanEnvironment(self):
400               
401                try:
402                        self.llxUpCore.cleanEnvironment()
403                        log_msg="Clean environment: OK"
404                        self.log(log_msg)
405
406                except Exception as e:
407                        log_msg="Clean environment. Error :" + str(e)
408                        self.log(log_msg)                               
409
410        #def getPackagesToUpdate
411                       
412        def log(self,msg):
413               
414                log_file="/var/log/lliurex-up.log"
415                f=open(log_file,"a+")
416                f.write(msg + '\n')
417                f.close()
418
419        #def log                       
Note: See TracBrowser for help on using the repository browser.