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

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

WIP in new gui. Add some features

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