source: lliurex-remote-installer/trunk/fuentes/lliurex-remote-installer-server.install/usr/share/n4d/python-plugins/LliureXRemoteInstaller.py @ 4747

Last change on this file since 4747 was 4747, checked in by daduve, 4 years ago

Adding log to llx-remote-installer server

File size: 21.4 KB
Line 
1import subprocess
2import os
3import os.path
4import shutil
5import re
6import datetime
7import json
8from urllib2 import urlopen
9
10class LliureXRemoteInstaller:
11       
12        N4D_VAR="LLX_REMOTE_INSTALLER"
13        initial_dict={'deb': {'url': 'http://server/llx-remote/', 'packages': []}, 'sh': {'url': 'http://server/llx-remote/', 'packages': []}, 'apt': {'Mirror':{'url':'mirror', 'packages': []},'LliureX':{'url':'lliurex', 'packages': []}},'update':{'activate':'False', 'url':'Mirror', 'version':'0','datetime':'0'}}
14       
15        #VALOR VARIABLE DEL REPO ADDAPLICATION_SOURCES
16        dir_sources="/etc/apt/sources.list.d/"
17        file_sources="llxremoteinstaller_sources.list"
18        file_sources=str(dir_sources)+str(file_sources)
19       
20       
21        #VALORES DE LOS DICCIONARIOS
22        DEB='deb'
23        APT='apt'
24        SH='sh'
25        LIST='packages'
26        URL='url'
27        UPDATE='update'
28        SHARE_DIRECTORY='/var/www/llx-remote'
29        MIRROR_DIRECTORY='/net/mirror/llx16'
30        NET_MIRROR_DIRECTORY='http://lliurex.net/xenial'
31        TIMESTAMP_DIRECTORY='/pool/main/l/lliurex-version-timestamp/'
32        LOG_FILE='/var/log/llx-remote.log'
33       
34       
35        def __init__(self):
36                pass
37               
38        #def __init__
39       
40        def test_var (self,namevar=None,user=None,passwd=None):
41                try:
42                        print "------------------------------------"
43                        print "Lliurex Remote Installer Test Var"
44                        print "------------------------------------"
45                        import xmlrpclib as x
46                        ppa_lliurex=False
47                        ppa_mirror=False
48                        c=x.ServerProxy("https://server:9779")
49                        u=(user,passwd)
50                        VALOR=c.get_variable(u,"VariablesManager",namevar)
51                        #print VALOR
52                        if not os.path.exists(self.SHARE_DIRECTORY):
53                                os.makedirs(self.SHARE_DIRECTORY)
54                                #proc=subprocess.Popen(["LANGUAGE=en_EN; chown 775 %s; sudo setfacl -m g:adm:rwx -d -m g:adm:rwx %s" %self.SHARE_DIRECTORY],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
55                                #proc.wait()
56                                os.system("chmod 775 %s"%self.SHARE_DIRECTORY)
57                                os.system("setfacl -m g:adm:rwx -d -m g:adm:rwx %s"%self.SHARE_DIRECTORY)
58                                print "[LLXRemoteInstaller] (test_var) New directory to shared files is created: %s"%(self.SHARE_DIRECTORY)
59                        else:
60                                print "[LLXRemoteInstaller] (test_var) Directory to shared files exists: %s"%(self.SHARE_DIRECTORY)
61                                os.system("setfacl -m g:adm:rwx -d -m g:adm:rwx %s"%self.SHARE_DIRECTORY)
62                                #os.chmod(self.SHARE_DIRECTORY, 755)
63                        print "[LLXRemoteInstaller] (test_var) Value for variable %s: %s"%(namevar,VALOR)
64                        if  VALOR in ["",None,'None']:
65                                objects["VariablesManager"].add_variable(namevar,self.initial_dict,"",namevar,[],False,False)
66                                COMMENT = ("[LLXRemoteInstaller] (test_var) Added variable %s to VariablesManager" %namevar)
67                                print ("%s" %COMMENT)
68                                return [True,str(COMMENT)]
69                        else:
70                                for x in VALOR[self.APT]:
71                                        if x in ["LliureX"]:
72                                                ppa_lliurex=True
73                                        elif x in ["Mirror"]:
74                                                ppa_mirror=True
75                                if not ppa_lliurex:
76                                        print "No tiene lliurex.net"
77                                        VALOR[self.APT].update({'LliureX':{'url':'lliurex', 'packages': []}})
78                                        objects["VariablesManager"].set_variable(namevar,VALOR)
79                                if not ppa_mirror:
80                                        print "No tiene mirror"
81                                        VALOR[self.APT].update({'Mirror':{'url':'mirror', 'packages': []}})
82                                        objects["VariablesManager"].set_variable(namevar,VALOR)
83                                try:
84                                        exists=VALOR[self.UPDATE]
85                                except Exception as e:
86                                        print "[LLXRemoteInstaller] (test_var) Creating new values to variable[update]......."
87                                        VALOR[self.UPDATE]={}
88                                        VALOR[self.UPDATE]['activate']='False'
89                                        VALOR[self.UPDATE]['url']='mirror'
90                                        VALOR[self.UPDATE]['version']='0'
91                                        VALOR[self.UPDATE]['datetime']='0'
92                                        objects["VariablesManager"].set_variable(namevar,VALOR)
93                                COMMENT=("[LLXRemoteInstaller] (test_var) %s Variable exists in your system, it hasn't been created again" %namevar)
94                                print ("%s" %COMMENT)
95                                return [True,str(COMMENT)]
96                               
97                except Exception as e:
98                        return [False,str(e)]
99                       
100        #def_test_var
101       
102       
103        def reset_var (self,namevar=None):
104                try:
105                       
106                        import xmlrpclib as x
107                        c=x.ServerProxy("https://server:9779")
108                        data=None
109                        objects["VariablesManager"].set_variable(namevar,data)
110                        COMMENT=("[LLXRemoteInstaller] (reset_var) %s has been updated" %namevar)
111                        print ("%s" %COMMENT)
112                        return [True,str(COMMENT)]
113                               
114                except Exception as e:
115                        return [False,str(e)]
116               
117        #def_reset_var
118
119        def mirror_version(self):
120                try:
121                        mirror_version_exists=objects["LliurexVersion"].lliurex_version("-m")
122                        version='False'
123                        if mirror_version_exists[0]:
124                                if mirror_version_exists[1]=='True':
125                                        DIRECTORY=self.MIRROR_DIRECTORY+self.TIMESTAMP_DIRECTORY
126                                        lst=os.listdir(DIRECTORY)
127                                        lst_ordered=sorted([f for f in lst])
128                                        version=re.search(r'\_(.*)\_', lst_ordered[-1]).group(1)
129                                       
130                        return [True,version]
131                except Exception as e:
132                        return [False,str(e)]
133        #def_mirror_version
134       
135       
136        def net_mirror_version(self):
137                try:
138                       
139                        DIRECTORY=self.NET_MIRROR_DIRECTORY+self.TIMESTAMP_DIRECTORY
140                        urlpath =urlopen(DIRECTORY)
141                        net_mirror_info= urlpath.read().decode('utf-8')
142                        info=re.findall('<a href="?\'?([^"\'>]*)deb', net_mirror_info)
143                        lst_ordered=sorted([f for f in info])
144                        version=re.search(r'\_(.*)\_', lst_ordered[-1]).group(1)
145                                       
146                        return [True,version]
147                except Exception as e:
148                        return [False,str(e)]
149        #def_mirror_version
150       
151       
152        def write_log(self, user, dict,dict_orig):
153                try:
154                        if os.path.exists(self.LOG_FILE):
155                                option='a'
156                        else :
157                                option='w'
158                        print ('Option to write_log is.......%s'%option)
159                        date=datetime.datetime.now()
160                        date_update=date.strftime("%d-%m-%Y %H:%M")
161                        d1_keys = set(dict.keys())
162                        d2_keys = set(dict_orig.keys())
163                        intersect_keys = d1_keys.intersection(d2_keys)
164                        added = d1_keys - d2_keys
165                        removed = d2_keys - d1_keys
166                        modified = {o : (dict[o]) for o in intersect_keys if dict[o] != dict_orig[o]}
167                        print ('New data to write_log is.......%s'%modified)
168                        f=open(self.LOG_FILE,option)
169                        f.write('### User: %s \n'%(user))
170                        f.write('### Date: %s \n'%date_update)
171                        f.write('*** Data modified: %s \n'%modified)
172                        #f.write(json.dumps(new_data))
173                        f.write('------------------------------------\n')
174                        f.write(json.dumps(dict))
175                        f.write('\n')
176                        f.write('\n')
177                        f.close
178                        return [True]
179                except Exception as e:
180                        print e
181                        return [False,str(e)]
182               
183        #def_write_log
184
185        def update_var_dict (self,namevar=None,dict={},user=None,passwd=None):
186                try:
187                        print "[LLXRemoteInstaller] (update_var_list) Test if_exists variable %s"%namevar
188                        if self.test_var(namevar,user, passwd)[0]:
189                                print "[LLXRemoteInstaller] (update_var_list) Variable %s is now in your system"%namevar
190                                import xmlrpclib as x
191                                c=x.ServerProxy("https://server:9779")
192                                if objects["VariablesManager"].set_variable(namevar,dict)[0]:
193                                        if os.path.exists(self.LOG_FILE):
194                                                option='w'
195                                        else :
196                                                option='a'
197                                        date=datetime.datetime.now()
198                                        date_update=datestrftime("%d-%m-%Y %H:%M")
199                                        f=open(self.LOG_FILE,option)
200                                        f.write('### User: %s has modificated LLX-Remote at: %s'%(user,date_update))
201                                        f.write(dict)
202                                        f.close
203                                        COMMENT="[LLXRemoteInstaller] (update_var_list) %s has been updated with this list of APP %s" %(namevar,dict)
204                                        print ("%s" %COMMENT)
205                                        return [True,str(COMMENT)]
206                        else:
207                                COMMENT="[LLXRemoteInstaller] (update_var_list) Cannot updated variable"
208                                print ("%s" %COMMENT)
209                                return [False,str(COMMENT)]
210                               
211                except Exception as e:
212                        return [False,str(e)]
213               
214        #def_add_list
215       
216       
217        def update2version (self,Mirror=False):
218                try:
219                        update_version="Ninguna"
220                        if Mirror:
221                                update_version=subprocess.Popen(["LANGUAGE=en_EN; find /net/mirror/llx16/pool/main/l/lliurex-version-timestamp -name 'lliurex-version-timestamp*.deb' | tail -n 1 | cut -d_ -f2" ],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
222                        else:
223                                pass
224                       
225                       
226                        COMMENT="Update_version is: %s" %update_version
227                        print ("%s" %COMMENT)   
228                        return [True,str(COMMENT)]     
229                       
230                except Exception as e:
231                        return [False,str(e)]
232               
233        #def_update2version
234       
235       
236       
237        def app_repo_exist (self,app=None):
238                try:
239                        #exist=os.system("LANGUAGE=en_EN; apt-cache policy %s | grep -i candidate" %app)
240                        exist=subprocess.Popen(["LANGUAGE=en_EN; apt-cache policy %s | grep -i candidate" %app],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
241                        print ("[LLXRemoteInstaller] (app_repo_exist) APP candidate in your repo is: %s"%exist)
242                        if exist == None or exist == "":
243                                COMMENT="[LLXRemoteInstaller] (app_repo_exist) APP: %s doesn't exist in your repository, you can't add it to install list" %app
244                                print ("%s" %COMMENT)
245                                return [False,str(COMMENT)]
246                        else:
247                                COMMENT="[LLXRemoteInstaller] (app_repo_exist) APP: %s is avaiable from your repo, it has been added to your install list" %app
248                                print ("%s" %COMMENT)
249                                return [True,str(COMMENT)]
250                               
251                except Exception as e:
252                        return [False,str(e)]
253               
254        #def_app_repo_exist
255       
256       
257       
258        def app_deb_exist (self,app=None, url=None):
259                try:
260                        url_all=str(url)+str(app)
261                        print ("[LLXRemoteInstaller] (app_deb_exist) VAR URL_ALL: %s"%url_all)
262                        import urllib
263                        if urllib.urlopen(url_all).code == 200:
264                                COMMENT="[LLXRemoteInstaller](app_deb_exist) APP: %s is avaiable and added to list to install it" %app
265                                print ("%s" %COMMENT)
266                                return [True,str(COMMENT)]
267                        else:
268                                COMMENT="[LLXRemoteInstaller] (app_deb_exist) Can't find APP: %s to download it from URL %s, you can't added to install it" %(app,url)
269                                print ("%s" %COMMENT)
270                                return [False,str(COMMENT)]
271                               
272                except Exception as e:
273                        return [False,str(e)]
274               
275        #def_app_deb_exist
276       
277       
278       
279        def repo_add (self,sources_private=None):
280                try:
281                        if sources_private not in ["",None,[]]:
282                                COMMENT="[LLXRemoteInstaller](repo_add) REPO IS PARTICULAR %s" %sources_private
283                                print ("%s" %COMMENT)
284                                print "[LLXRemoteInstaller](repo_add) Creating new file %s" %self.file_sources
285                                mode = 'a' if os.path.exists(self.file_sources) else 'w'
286                                f_used=open(self.file_sources,mode)
287                                print "open(%s,%s)"%(self.file_sources,mode)
288                                f_used.write(sources_private+'\n')
289                                f_used.close()
290                                print "[LLXRemoteInstaller](repo_add) File created now read it" 
291                                #NOW READ THE NEW SOURCES.LIST
292                                sources=[]
293                                file=open(self.file_sources)
294                                f=file.read().splitlines()
295                                for line in f:
296                                        sources.append(line)
297                                        print "[LLXRemoteInstaller](repo_add) Line added: %s" %line
298                                file.close()
299                       
300                        COMMENT="[LLXRemoteInstaller](repo_add) Your repo LLXRemoteInstaller has new lines %s"%sources 
301                        print ("%s" %COMMENT)
302                        return [True,str(COMMENT),sources]
303       
304                               
305                except Exception as e:
306                        print e
307                        return [False,str(e)]
308               
309        #def_repo_update
310       
311        def remove_file (self,file=None):
312                try:
313                       
314                        COMMENT="[LLXRemoteInstaller](remove_file) Reemoving file %s"%file     
315                        print ("%s" %COMMENT)
316                        if os.path.exists(file):
317                                #print "Borrandoooooooooooooooooooooooooooooo"
318                                os.remove(file)
319                       
320                                COMMENT="[LLXRemoteInstaller](remove_file) File %s has been deleted from server"%file
321                                print ("%s" %COMMENT)
322                                return [True,str(COMMENT)]
323                        else:
324                                COMMENT="[LLXRemoteInstaller](remove_file) ERROR: Cannot delete file %s from server"%file
325                                print ("%s" %COMMENT)
326                                return [False,str(COMMENT)]
327                       
328                except Exception as e:
329                        return [False,str(e)]
330               
331        #def_repo_restore
332       
333        def repo_restore (self,file=None):
334                try:
335                       
336                        COMMENT="[LLXRemoteInstaller](repo_restore) Repo %s to test APT Aplications is deleted and restore to initial state"%file       
337                        print ("%s" %COMMENT)
338                        if os.path.exists(file):
339                                #print "Borrandoooooooooooooooooooooooooooooo"
340                                os.remove(file)
341                               
342                        self.repo_update()
343                       
344                        COMMENT="[LLXRemoteInstaller](repo_restore) Repo from AddApplications has deleted"     
345                        print ("%s" %COMMENT)
346                        return [True,str(COMMENT)]
347                       
348                except Exception as e:
349                        return [False,str(e)]
350               
351        #def_repo_restore
352       
353       
354        def repo_update (self):
355                try:
356                        COMMENT="[LLXRemoteInstaller](repo_restore) Actualizando los indices, espera........"
357                        print ("%s" %COMMENT)
358                        proc = subprocess.Popen('apt-get update', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
359                        proc.wait()
360                        COMMENT="[LLXRemoteInstaller](repo_restore) Se han actualizado los indices"
361                        print ("%s" %COMMENT)
362                        return [True,str(COMMENT)]
363                       
364                except Exception as e:
365                        return [False,str(e)]
366               
367        #def_repo_restore
368       
369       
370        def test_apt_list (self,dict=None):
371               
372                try:
373                        list_apt=[]
374                        list_apt_ok=[]
375                        list_apt_testing=[]
376                        restore=False
377                        ubuntu=["deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse","deb http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse","deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse"]
378                        lliurex_net=["deb http://lliurex.net/xenial xenial main restricted universe multiverse","deb http://lliurex.net/xenial xenial-security main restricted universe multiverse","deb http://lliurex.net/xenial xenial-updates main restricted universe multiverse"]
379                        lliurex_mirror=["deb http://mirror/llx16 xenial main restricted universe multiverse","deb http://mirror/llx16 xenial-security main restricted universe multiverse","deb http://mirror/llx16 xenial-updates main restricted universe multiverse"]
380                        for x in dict[self.APT]:
381                                print "[LLXRemoteInstaller](test_apt_list) Comprobando el PPA: %s"%x
382                                #print "[LLXRemoteInstaller](dict_ok) Comprobando el listado de APP: %s"%list_apt
383                                url=dict[self.APT][x][self.URL]
384                                list_apt_testing=dict[self.APT][x][self.LIST]
385                                if url not in ["",None] and list_apt_testing not in ["",[],None]:
386                                        for line in ubuntu:
387                                                self.repo_add(line)
388                                        if x in ["LliureX"]:
389                                                for line in lliurex_net:
390                                                        self.repo_add(line)
391                                                COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
392                                                print COMMENT
393                                                list_apt=list_apt+list_apt_testing
394                                                restore=True
395                                                print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
396                                        elif x in ["Mirror"]:
397                                                for line in lliurex_mirror:
398                                                        self.repo_add(line)
399                                                COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
400                                                print COMMENT
401                                                list_apt=list_apt+list_apt_testing
402                                                restore=True
403                                                print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
404                                        else:
405                                                if self.repo_add(url)[0]:
406                                                        COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
407                                                        print COMMENT
408                                                        list_apt=list_apt+list_apt_testing
409                                                        restore=True
410                                                        print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
411                                                else:
412                                                        self.repo_restore(self.file_sources)
413                                                        COMMENT="[LLXRemoteInstaller](test_apt_list) Repo no se puede ADDED - PROBLEM"
414                                                        return [False,list_apt,COMMENT]
415                       
416                        if list_apt not in ["",None,[]] :
417                                if self.repo_update()[0]:
418                                        for app in list_apt:
419                                                print "[LLXRemoteInstaller](test_apt_list) Comprobando si es avaiable el APT: %s"%app
420                                                if self.app_repo_exist(app)[0]:
421                                                        list_apt_ok.append(app)
422                                        list_apt=list_apt_ok
423                                        COMMENT="[LLXRemoteInstaller](test_apt_list) El listado de APT disponibles en el repo es: %s"%(list_apt)
424                                        print COMMENT
425                                else:
426                                        self.repo_restore(self.file_sources)
427                                        COMMENT="[LLXRemoteInstaller](test_apt_list) No se puede actualizar el repo - PROBLEM"
428                                        return [False,list_apt,COMMENT]
429                                       
430                               
431                        else:
432                                COMMENT="[LLXRemoteInstaller](test_apt_list) No hacemos nada con este REPO esta vacio de contenido"
433                                print COMMENT
434                               
435                        #UPDATE DICT
436                        list_apt_deleted=[]
437                        for x in dict[self.APT]:
438                                list_apt_testing=[]
439                                for app in dict[self.APT][x][self.LIST]:
440                                        if app in list_apt:
441                                                list_apt_testing.append(app)
442                                        else:
443                                                list_apt_deleted.append(app)
444                                dict[self.APT][x][self.LIST]=list_apt_testing
445                               
446                        #Solo hago un update y restore del sources si este ha sido cambiado anteriormente.
447                        if restore:     
448                                self.repo_restore(self.file_sources)
449                        return [True,dict,list_apt,list_apt_deleted,COMMENT]
450                       
451                except Exception as e:
452                        return [False,str(e)]
453               
454               
455        #def test_apt_list
456       
457        def test_deb_list (self,dict=None):
458               
459                try:
460               
461                        #TEST DE LOS DEBS
462                        list_debs=dict[self.DEB][self.LIST]
463                        url=dict[self.DEB][self.URL]
464                        #url=self.SHARE_DIRECTORY
465                        print "[LLXRemoteInstaller](test_deb_list) El listado de DEBS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
466                        list_debs_ok=[]
467                        list_debs_fail=[]
468                        for app in list_debs:
469                                print "[LLXRemoteInstaller](test_deb_list) Comprobando si es avaiable el DEB: %s"%app
470                                if self.app_deb_exist(app,url)[0]:
471                                        list_debs_ok.append(app)
472                                else:
473                                        list_debs_fail.append(app)
474                        list_debs=list_debs_ok
475                        dict[self.DEB][self.LIST]=list_debs
476                        print "[LLXRemoteInstaller](test_deb_list) Listado avaiable de DEBS: %s"%list_debs_ok
477                        print "[LLXRemoteInstaller](test_deb_list) Listado Unavaiable de DEBS: %s"%list_debs_fail
478                        return [True,dict,list_debs_ok,list_debs_fail]
479                except Exception as e:
480                        return [False,str(e)]
481               
482               
483        #def test_deb_list
484       
485        def test_list (self,dict=None,type=None):
486               
487                try:
488               
489                        #TEST DE LOS DEBS
490                        list_debs=dict[type][self.LIST]
491                        url=dict[type][self.URL]
492                        #url=self.SHARE_DIRECTORY
493                        print "[LLXRemoteInstaller](test_list) El listado de SH es %s y lo comprobaremos en la URL: %s"%(list_debs,url)
494                        list_debs_ok=[]
495                        list_debs_fail=[]
496                        list_tupla_ok=[]
497                        for app_tupla in list_debs:
498                                app=app_tupla[0]
499                                md5=app_tupla[1]
500                                print "[LLXRemoteInstaller](test_list) Comprobando si es avaiable el SH: %s"%app
501                                if self.app_deb_exist(app,url)[0]:
502                                        list_debs_ok.append(app)
503                                        list_tupla_ok.append([app,md5])
504                                else:
505                                        list_debs_fail.append(app)
506                        list_debs=list_tupla_ok
507                        dict[type][self.LIST]=list_debs
508                        print "[LLXRemoteInstaller](test_list) Listado avaiable de SH: %s"%list_debs_ok
509                        print "[LLXRemoteInstaller](test_list) Listado Unavaiable de SH: %s"%list_debs_fail
510                        return [True,dict,list_debs_ok,list_debs_fail]
511                except Exception as e:
512                        return [False,str(e)]
513               
514               
515        #def test_deb_list
516       
517       
518                #initial_dict={'deb': {'url': 'http://server/llx-remote/', 'packages': []}, 'update':{'activate':'False', 'url':'Mirror', 'version':'0'}}
519
520       
521       
522       
523        def dict_ok (self, dict={}):
524                try:
525                        if os.path.exists(self.file_sources):
526                                os.remove(self.file_sources)
527                        COMMENT="[LLXRemoteInstaller](dict_ok) Comprobando la lista de la GUI........"
528                        print ("%s" %COMMENT)
529                       
530                        #TEST DEL UPDATE
531                        activate_update=dict[self.UPDATE]['activate']
532                        url_update=dict[self.UPDATE][self.URL]
533                        version_update=dict[self.UPDATE]['version']
534                        datetime_update=dict[self.UPDATE]['datetime']
535                       
536                        print "[LLXRemoteInstaller](dict_ok) El update posee activate:%s - url:%s - version:%s - datetime:%s  "%(activate_update,url_update,version_update,datetime_update)
537                        if activate_update or url_update or  version_update or datetime_update == None:
538                                dict[self.UPDATE]['activate']='False'
539                               
540                        print "[LLXRemoteInstaller](dict_ok) Finalmente UPDATE posee activate:%s - url:%s - version:%s - datetime:%s  "%(activate_update,url_update,version_update,datetime_update)
541                       
542                       
543                        #TEST DE LOS DEBS
544                        list_debs=dict[self.DEB][self.LIST]
545                        #url=dict[self.DEB][self.URL]
546                       
547                        print "[LLXRemoteInstaller](dict_ok) El listado de DEBS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
548                        list_debs_ok=[]
549                        for app in list_debs:
550                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el DEB: %s"%app
551                                if self.app_deb_exist(app,url)[0]:
552                                        list_debs_ok.append(app)
553                        list_debs=list_debs_ok
554                        dict[self.DEB][self.LIST]=list_debs
555                        print "[LLXRemoteInstaller](dict_ok) El listado de DEBS disponibles es: %s"%list_debs
556                       
557                        #TEST DE LOS SH
558                        list_sh=dict[self.SH][self.LIST]
559                        url=dict[self.SH][self.URL]
560                        print "[LLXRemoteInstaller](dict_ok) El listado de SCRIPTS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
561                        list_sh_ok=[]
562                        for app_tupla in list_sh:
563                                app=app_tupla[0]
564                                md5=app_tupla[1]
565                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el SCRIPTS: %s"%app
566                                if self.app_deb_exist(app,url)[0]:
567                                        list_sh_ok.append([app,md5])
568                        list_sh=list_sh_ok
569                        dict[self.SH][self.LIST]=list_sh
570                        print "[LLXRemoteInstaller](dict_ok) El listado de SCRIPTS disponibles es: %s"%list_sh
571                       
572                       
573                        list_apt_resume=[]
574                        #TEST DE LAS APT
575                        for x in dict[self.APT]:
576                                list_apt=None
577                                list_apt_ok=[]
578                                print "[LLXRemoteInstaller](dict_ok) Comprobando el PPA: %s"%x
579                                list_apt=dict[self.APT][x][self.LIST]
580                                #print "[LLXRemoteInstaller](dict_ok) Comprobando el listado de APP: %s"%list_apt
581                                url=dict[self.APT][x][self.URL]
582                                print "[LLXRemoteInstaller](dict_ok) El listado de APT es %s lo comprobaremos en la URL: %s"%(list_apt,url)
583                               
584                                if list_apt not in ["",None,[]] or url not in ["",None]:
585                                        #print "entro aqui dos"
586                                        if self.repo_add(url)[0]:
587                                                print "[LLXRemoteInstaller](dict_ok) Repo esta ADDED"
588                                                if self.repo_update()[0]:
589                                                        print "[LLXRemoteInstaller](dict_ok) Repo is UPDATED"
590                                                        pass
591                                                else:
592                                                        return [False,"false el repo_update"]
593                                                        #return [False,self.repo_update()[1]]
594                                        else:
595                                                #return [False,self.repo_add()[1]]
596                                                return [False,"false el repo_add"]
597                                       
598                                        for app in list_apt:
599                                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el APT: %s"%app
600                                                if self.app_repo_exist(app)[0]:
601                                                        list_apt_ok.append(app)
602                                                        list_apt_resume.append(app)
603                                        list_apt=list_apt_ok
604                                        dict[self.APT][x][self.LIST]=list_apt
605                                        print "[LLXRemoteInstaller](dict_ok) El listado de APT disponibles en el repo %s es: %s"%(x,list_apt)
606                                else:
607                                        print "[LLXRemoteInstaller](dict_ok) No hacemos nada con este REPO %s esta vacio de contenido"%x
608                       
609                        self.repo_restore(self.file_sources)   
610                        COMMENT="[LLXRemoteInstaller](dict_ok) El listado de disponibles es ** DEBS: %s  ** SH: %s  **  APT: %s"%(list_debs,list_sh,list_apt_resume)
611                        print ("%s" %COMMENT)
612                        return [True,str(COMMENT),dict,list_apt_resume]
613                       
614                except Exception as e:
615                        return [False,str(e)]
616               
617        #def_dict_ok
618       
Note: See TracBrowser for help on using the repository browser.