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

Last change on this file since 4748 was 4748, checked in by daduve, 3 years ago

Adding log to llx-remote-installer server

File size: 21.5 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('** New variable plublished: ')
175                        f.write(json.dumps(dict))
176                        f.write('\n')
177                        f.write('\n')
178                        f.close
179                        return [True]
180                except Exception as e:
181                        print e
182                        return [False,str(e)]
183               
184        #def_write_log
185
186        def update_var_dict (self,namevar=None,dict={},user=None,passwd=None):
187                try:
188                        print "[LLXRemoteInstaller] (update_var_list) Test if_exists variable %s"%namevar
189                        if self.test_var(namevar,user, passwd)[0]:
190                                print "[LLXRemoteInstaller] (update_var_list) Variable %s is now in your system"%namevar
191                                import xmlrpclib as x
192                                c=x.ServerProxy("https://server:9779")
193                                if objects["VariablesManager"].set_variable(namevar,dict)[0]:
194                                        if os.path.exists(self.LOG_FILE):
195                                                option='w'
196                                        else :
197                                                option='a'
198                                        date=datetime.datetime.now()
199                                        date_update=datestrftime("%d-%m-%Y %H:%M")
200                                        f=open(self.LOG_FILE,option)
201                                        f.write('### User: %s has modificated LLX-Remote at: %s'%(user,date_update))
202                                        f.write(dict)
203                                        f.close
204                                        COMMENT="[LLXRemoteInstaller] (update_var_list) %s has been updated with this list of APP %s" %(namevar,dict)
205                                        print ("%s" %COMMENT)
206                                        return [True,str(COMMENT)]
207                        else:
208                                COMMENT="[LLXRemoteInstaller] (update_var_list) Cannot updated variable"
209                                print ("%s" %COMMENT)
210                                return [False,str(COMMENT)]
211                               
212                except Exception as e:
213                        return [False,str(e)]
214               
215        #def_add_list
216       
217       
218        def update2version (self,Mirror=False):
219                try:
220                        update_version="Ninguna"
221                        if Mirror:
222                                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]
223                        else:
224                                pass
225                       
226                       
227                        COMMENT="Update_version is: %s" %update_version
228                        print ("%s" %COMMENT)   
229                        return [True,str(COMMENT)]     
230                       
231                except Exception as e:
232                        return [False,str(e)]
233               
234        #def_update2version
235       
236       
237       
238        def app_repo_exist (self,app=None):
239                try:
240                        #exist=os.system("LANGUAGE=en_EN; apt-cache policy %s | grep -i candidate" %app)
241                        exist=subprocess.Popen(["LANGUAGE=en_EN; apt-cache policy %s | grep -i candidate" %app],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
242                        print ("[LLXRemoteInstaller] (app_repo_exist) APP candidate in your repo is: %s"%exist)
243                        if exist == None or exist == "":
244                                COMMENT="[LLXRemoteInstaller] (app_repo_exist) APP: %s doesn't exist in your repository, you can't add it to install list" %app
245                                print ("%s" %COMMENT)
246                                return [False,str(COMMENT)]
247                        else:
248                                COMMENT="[LLXRemoteInstaller] (app_repo_exist) APP: %s is avaiable from your repo, it has been added to your install list" %app
249                                print ("%s" %COMMENT)
250                                return [True,str(COMMENT)]
251                               
252                except Exception as e:
253                        return [False,str(e)]
254               
255        #def_app_repo_exist
256       
257       
258       
259        def app_deb_exist (self,app=None, url=None):
260                try:
261                        url_all=str(url)+str(app)
262                        print ("[LLXRemoteInstaller] (app_deb_exist) VAR URL_ALL: %s"%url_all)
263                        import urllib
264                        if urllib.urlopen(url_all).code == 200:
265                                COMMENT="[LLXRemoteInstaller](app_deb_exist) APP: %s is avaiable and added to list to install it" %app
266                                print ("%s" %COMMENT)
267                                return [True,str(COMMENT)]
268                        else:
269                                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)
270                                print ("%s" %COMMENT)
271                                return [False,str(COMMENT)]
272                               
273                except Exception as e:
274                        return [False,str(e)]
275               
276        #def_app_deb_exist
277       
278       
279       
280        def repo_add (self,sources_private=None):
281                try:
282                        if sources_private not in ["",None,[]]:
283                                COMMENT="[LLXRemoteInstaller](repo_add) REPO IS PARTICULAR %s" %sources_private
284                                print ("%s" %COMMENT)
285                                print "[LLXRemoteInstaller](repo_add) Creating new file %s" %self.file_sources
286                                mode = 'a' if os.path.exists(self.file_sources) else 'w'
287                                f_used=open(self.file_sources,mode)
288                                print "open(%s,%s)"%(self.file_sources,mode)
289                                f_used.write(sources_private+'\n')
290                                f_used.close()
291                                print "[LLXRemoteInstaller](repo_add) File created now read it" 
292                                #NOW READ THE NEW SOURCES.LIST
293                                sources=[]
294                                file=open(self.file_sources)
295                                f=file.read().splitlines()
296                                for line in f:
297                                        sources.append(line)
298                                        print "[LLXRemoteInstaller](repo_add) Line added: %s" %line
299                                file.close()
300                       
301                        COMMENT="[LLXRemoteInstaller](repo_add) Your repo LLXRemoteInstaller has new lines %s"%sources 
302                        print ("%s" %COMMENT)
303                        return [True,str(COMMENT),sources]
304       
305                               
306                except Exception as e:
307                        print e
308                        return [False,str(e)]
309               
310        #def_repo_update
311       
312        def remove_file (self,file=None):
313                try:
314                       
315                        COMMENT="[LLXRemoteInstaller](remove_file) Reemoving file %s"%file     
316                        print ("%s" %COMMENT)
317                        if os.path.exists(file):
318                                #print "Borrandoooooooooooooooooooooooooooooo"
319                                os.remove(file)
320                       
321                                COMMENT="[LLXRemoteInstaller](remove_file) File %s has been deleted from server"%file
322                                print ("%s" %COMMENT)
323                                return [True,str(COMMENT)]
324                        else:
325                                COMMENT="[LLXRemoteInstaller](remove_file) ERROR: Cannot delete file %s from server"%file
326                                print ("%s" %COMMENT)
327                                return [False,str(COMMENT)]
328                       
329                except Exception as e:
330                        return [False,str(e)]
331               
332        #def_repo_restore
333       
334        def repo_restore (self,file=None):
335                try:
336                       
337                        COMMENT="[LLXRemoteInstaller](repo_restore) Repo %s to test APT Aplications is deleted and restore to initial state"%file       
338                        print ("%s" %COMMENT)
339                        if os.path.exists(file):
340                                #print "Borrandoooooooooooooooooooooooooooooo"
341                                os.remove(file)
342                               
343                        self.repo_update()
344                       
345                        COMMENT="[LLXRemoteInstaller](repo_restore) Repo from AddApplications has deleted"     
346                        print ("%s" %COMMENT)
347                        return [True,str(COMMENT)]
348                       
349                except Exception as e:
350                        return [False,str(e)]
351               
352        #def_repo_restore
353       
354       
355        def repo_update (self):
356                try:
357                        COMMENT="[LLXRemoteInstaller](repo_restore) Actualizando los indices, espera........"
358                        print ("%s" %COMMENT)
359                        proc = subprocess.Popen('apt-get update', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
360                        proc.wait()
361                        COMMENT="[LLXRemoteInstaller](repo_restore) Se han actualizado los indices"
362                        print ("%s" %COMMENT)
363                        return [True,str(COMMENT)]
364                       
365                except Exception as e:
366                        return [False,str(e)]
367               
368        #def_repo_restore
369       
370       
371        def test_apt_list (self,dict=None):
372               
373                try:
374                        list_apt=[]
375                        list_apt_ok=[]
376                        list_apt_testing=[]
377                        restore=False
378                        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"]
379                        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"]
380                        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"]
381                        for x in dict[self.APT]:
382                                print "[LLXRemoteInstaller](test_apt_list) Comprobando el PPA: %s"%x
383                                #print "[LLXRemoteInstaller](dict_ok) Comprobando el listado de APP: %s"%list_apt
384                                url=dict[self.APT][x][self.URL]
385                                list_apt_testing=dict[self.APT][x][self.LIST]
386                                if url not in ["",None] and list_apt_testing not in ["",[],None]:
387                                        for line in ubuntu:
388                                                self.repo_add(line)
389                                        if x in ["LliureX"]:
390                                                for line in lliurex_net:
391                                                        self.repo_add(line)
392                                                COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
393                                                print COMMENT
394                                                list_apt=list_apt+list_apt_testing
395                                                restore=True
396                                                print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
397                                        elif x in ["Mirror"]:
398                                                for line in lliurex_mirror:
399                                                        self.repo_add(line)
400                                                COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
401                                                print COMMENT
402                                                list_apt=list_apt+list_apt_testing
403                                                restore=True
404                                                print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
405                                        else:
406                                                if self.repo_add(url)[0]:
407                                                        COMMENT="[LLXRemoteInstaller](test_apt_list) Repo esta ADDED"
408                                                        print COMMENT
409                                                        list_apt=list_apt+list_apt_testing
410                                                        restore=True
411                                                        print "[LLXRemoteInstaller](test_apt_list) Anyadimos las APT del repo anterior, nueva lista: %s"%(list_apt)
412                                                else:
413                                                        self.repo_restore(self.file_sources)
414                                                        COMMENT="[LLXRemoteInstaller](test_apt_list) Repo no se puede ADDED - PROBLEM"
415                                                        return [False,list_apt,COMMENT]
416                       
417                        if list_apt not in ["",None,[]] :
418                                if self.repo_update()[0]:
419                                        for app in list_apt:
420                                                print "[LLXRemoteInstaller](test_apt_list) Comprobando si es avaiable el APT: %s"%app
421                                                if self.app_repo_exist(app)[0]:
422                                                        list_apt_ok.append(app)
423                                        list_apt=list_apt_ok
424                                        COMMENT="[LLXRemoteInstaller](test_apt_list) El listado de APT disponibles en el repo es: %s"%(list_apt)
425                                        print COMMENT
426                                else:
427                                        self.repo_restore(self.file_sources)
428                                        COMMENT="[LLXRemoteInstaller](test_apt_list) No se puede actualizar el repo - PROBLEM"
429                                        return [False,list_apt,COMMENT]
430                                       
431                               
432                        else:
433                                COMMENT="[LLXRemoteInstaller](test_apt_list) No hacemos nada con este REPO esta vacio de contenido"
434                                print COMMENT
435                               
436                        #UPDATE DICT
437                        list_apt_deleted=[]
438                        for x in dict[self.APT]:
439                                list_apt_testing=[]
440                                for app in dict[self.APT][x][self.LIST]:
441                                        if app in list_apt:
442                                                list_apt_testing.append(app)
443                                        else:
444                                                list_apt_deleted.append(app)
445                                dict[self.APT][x][self.LIST]=list_apt_testing
446                               
447                        #Solo hago un update y restore del sources si este ha sido cambiado anteriormente.
448                        if restore:     
449                                self.repo_restore(self.file_sources)
450                        return [True,dict,list_apt,list_apt_deleted,COMMENT]
451                       
452                except Exception as e:
453                        return [False,str(e)]
454               
455               
456        #def test_apt_list
457       
458        def test_deb_list (self,dict=None):
459               
460                try:
461               
462                        #TEST DE LOS DEBS
463                        list_debs=dict[self.DEB][self.LIST]
464                        url=dict[self.DEB][self.URL]
465                        #url=self.SHARE_DIRECTORY
466                        print "[LLXRemoteInstaller](test_deb_list) El listado de DEBS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
467                        list_debs_ok=[]
468                        list_debs_fail=[]
469                        for app in list_debs:
470                                print "[LLXRemoteInstaller](test_deb_list) Comprobando si es avaiable el DEB: %s"%app
471                                if self.app_deb_exist(app,url)[0]:
472                                        list_debs_ok.append(app)
473                                else:
474                                        list_debs_fail.append(app)
475                        list_debs=list_debs_ok
476                        dict[self.DEB][self.LIST]=list_debs
477                        print "[LLXRemoteInstaller](test_deb_list) Listado avaiable de DEBS: %s"%list_debs_ok
478                        print "[LLXRemoteInstaller](test_deb_list) Listado Unavaiable de DEBS: %s"%list_debs_fail
479                        return [True,dict,list_debs_ok,list_debs_fail]
480                except Exception as e:
481                        return [False,str(e)]
482               
483               
484        #def test_deb_list
485       
486        def test_list (self,dict=None,type=None):
487               
488                try:
489               
490                        #TEST DE LOS DEBS
491                        list_debs=dict[type][self.LIST]
492                        url=dict[type][self.URL]
493                        #url=self.SHARE_DIRECTORY
494                        print "[LLXRemoteInstaller](test_list) El listado de SH es %s y lo comprobaremos en la URL: %s"%(list_debs,url)
495                        list_debs_ok=[]
496                        list_debs_fail=[]
497                        list_tupla_ok=[]
498                        for app_tupla in list_debs:
499                                app=app_tupla[0]
500                                md5=app_tupla[1]
501                                print "[LLXRemoteInstaller](test_list) Comprobando si es avaiable el SH: %s"%app
502                                if self.app_deb_exist(app,url)[0]:
503                                        list_debs_ok.append(app)
504                                        list_tupla_ok.append([app,md5])
505                                else:
506                                        list_debs_fail.append(app)
507                        list_debs=list_tupla_ok
508                        dict[type][self.LIST]=list_debs
509                        print "[LLXRemoteInstaller](test_list) Listado avaiable de SH: %s"%list_debs_ok
510                        print "[LLXRemoteInstaller](test_list) Listado Unavaiable de SH: %s"%list_debs_fail
511                        return [True,dict,list_debs_ok,list_debs_fail]
512                except Exception as e:
513                        return [False,str(e)]
514               
515               
516        #def test_deb_list
517       
518       
519                #initial_dict={'deb': {'url': 'http://server/llx-remote/', 'packages': []}, 'update':{'activate':'False', 'url':'Mirror', 'version':'0'}}
520
521       
522       
523       
524        def dict_ok (self, dict={}):
525                try:
526                        if os.path.exists(self.file_sources):
527                                os.remove(self.file_sources)
528                        COMMENT="[LLXRemoteInstaller](dict_ok) Comprobando la lista de la GUI........"
529                        print ("%s" %COMMENT)
530                       
531                        #TEST DEL UPDATE
532                        activate_update=dict[self.UPDATE]['activate']
533                        url_update=dict[self.UPDATE][self.URL]
534                        version_update=dict[self.UPDATE]['version']
535                        datetime_update=dict[self.UPDATE]['datetime']
536                       
537                        print "[LLXRemoteInstaller](dict_ok) El update posee activate:%s - url:%s - version:%s - datetime:%s  "%(activate_update,url_update,version_update,datetime_update)
538                        if activate_update or url_update or  version_update or datetime_update == None:
539                                dict[self.UPDATE]['activate']='False'
540                               
541                        print "[LLXRemoteInstaller](dict_ok) Finalmente UPDATE posee activate:%s - url:%s - version:%s - datetime:%s  "%(activate_update,url_update,version_update,datetime_update)
542                       
543                       
544                        #TEST DE LOS DEBS
545                        list_debs=dict[self.DEB][self.LIST]
546                        #url=dict[self.DEB][self.URL]
547                       
548                        print "[LLXRemoteInstaller](dict_ok) El listado de DEBS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
549                        list_debs_ok=[]
550                        for app in list_debs:
551                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el DEB: %s"%app
552                                if self.app_deb_exist(app,url)[0]:
553                                        list_debs_ok.append(app)
554                        list_debs=list_debs_ok
555                        dict[self.DEB][self.LIST]=list_debs
556                        print "[LLXRemoteInstaller](dict_ok) El listado de DEBS disponibles es: %s"%list_debs
557                       
558                        #TEST DE LOS SH
559                        list_sh=dict[self.SH][self.LIST]
560                        url=dict[self.SH][self.URL]
561                        print "[LLXRemoteInstaller](dict_ok) El listado de SCRIPTS es %s i lo comprobaremos en la URL: %s"%(list_debs,url)
562                        list_sh_ok=[]
563                        for app_tupla in list_sh:
564                                app=app_tupla[0]
565                                md5=app_tupla[1]
566                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el SCRIPTS: %s"%app
567                                if self.app_deb_exist(app,url)[0]:
568                                        list_sh_ok.append([app,md5])
569                        list_sh=list_sh_ok
570                        dict[self.SH][self.LIST]=list_sh
571                        print "[LLXRemoteInstaller](dict_ok) El listado de SCRIPTS disponibles es: %s"%list_sh
572                       
573                       
574                        list_apt_resume=[]
575                        #TEST DE LAS APT
576                        for x in dict[self.APT]:
577                                list_apt=None
578                                list_apt_ok=[]
579                                print "[LLXRemoteInstaller](dict_ok) Comprobando el PPA: %s"%x
580                                list_apt=dict[self.APT][x][self.LIST]
581                                #print "[LLXRemoteInstaller](dict_ok) Comprobando el listado de APP: %s"%list_apt
582                                url=dict[self.APT][x][self.URL]
583                                print "[LLXRemoteInstaller](dict_ok) El listado de APT es %s lo comprobaremos en la URL: %s"%(list_apt,url)
584                               
585                                if list_apt not in ["",None,[]] or url not in ["",None]:
586                                        #print "entro aqui dos"
587                                        if self.repo_add(url)[0]:
588                                                print "[LLXRemoteInstaller](dict_ok) Repo esta ADDED"
589                                                if self.repo_update()[0]:
590                                                        print "[LLXRemoteInstaller](dict_ok) Repo is UPDATED"
591                                                        pass
592                                                else:
593                                                        return [False,"false el repo_update"]
594                                                        #return [False,self.repo_update()[1]]
595                                        else:
596                                                #return [False,self.repo_add()[1]]
597                                                return [False,"false el repo_add"]
598                                       
599                                        for app in list_apt:
600                                                print "[LLXRemoteInstaller](dict_ok) Comprobando si es avaiable el APT: %s"%app
601                                                if self.app_repo_exist(app)[0]:
602                                                        list_apt_ok.append(app)
603                                                        list_apt_resume.append(app)
604                                        list_apt=list_apt_ok
605                                        dict[self.APT][x][self.LIST]=list_apt
606                                        print "[LLXRemoteInstaller](dict_ok) El listado de APT disponibles en el repo %s es: %s"%(x,list_apt)
607                                else:
608                                        print "[LLXRemoteInstaller](dict_ok) No hacemos nada con este REPO %s esta vacio de contenido"%x
609                       
610                        self.repo_restore(self.file_sources)   
611                        COMMENT="[LLXRemoteInstaller](dict_ok) El listado de disponibles es ** DEBS: %s  ** SH: %s  **  APT: %s"%(list_debs,list_sh,list_apt_resume)
612                        print ("%s" %COMMENT)
613                        return [True,str(COMMENT),dict,list_apt_resume]
614                       
615                except Exception as e:
616                        return [False,str(e)]
617               
618        #def_dict_ok
619       
Note: See TracBrowser for help on using the repository browser.