Changeset 4763


Ignore:
Timestamp:
May 15, 2017, 4:33:39 PM (2 years ago)
Author:
daduve
Message:

Client support updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-remote-installer/trunk/fuentes/lliurex-remote-installer-client.install/usr/share/n4d/python-plugins/LliurexRemoteInstallerClient.py

    r4610 r4763  
    55import apt.debfile
    66import types
     7import datetime
     8import threading
    79
    810class LliureXRemoteInstallerClient:
     
    2325        LIST='packages'
    2426        URL='url'
     27        UPDATE='update'
    2528       
    2629        #Essential package for provides
     
    3134       
    3235        def __init__(self):
    33                 self.dbg=0
     36                self.dbg=1
    3437                pass
    3538        #def __init__
     
    3942
    4043        def _debug(self,message):
    41                 if self.dbg==1:
     44                if self.dbg==0:
    4245                        print("RemoteInstallerClient: "+str(message))
    4346                        self._log(message)
     
    5962                        if options["controlled"]:
    6063                                if os.system("host server")==0:
    61                                         objects["LliureXRemoteInstallerClient"].test_system()
     64                                        try:
     65                                                t=threading.Thread(target=self.test_system)
     66                                                t.daemon=True
     67                                                t.start()
     68                                        except Exception as e:
     69                                                print e
     70
    6271        #def startup
    6372       
     
    133142#                       if  VALOR in [None,'','None']:
    134143                        if  not VALOR:
    135                                 list_dict=[self.APT,self.DEB,self.SH]
    136                                 VALOR=self.create_dict ([self.APT,self.DEB,self.SH])[2]
     144                                list_dict=[self.APT,self.DEB,self.SH,self.UPDATE]
     145                                VALOR=self.create_dict ([self.APT,self.DEB,self.SH,self.UPDATE])[2]
    137146                                if objects["VariablesManager"].add_variable(namevar,VALOR,"",namevar,[],False,False)[0]:
    138147                                        COMMENT = ("[LLXRemoteInstallerClient] (test_var) Added variable %s to VariablesManager with valor %s" %(namevar,VALOR))
     
    596605                return(result_sh)
    597606        #def sh_test
     607       
     608       
     609       
     610       
     611        def update_test(self,appDict,dictOrig):
     612               
     613                self._debug("update_test")
     614                updated="False"
     615                #Get dict values
     616                try:
     617                        updateDict=appDict[self.UPDATE]
     618                except:
     619                        self._debug("Update Test: Creating new dictionary")
     620                        version_installed=subprocess.Popen(["lliurex-version -n"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
     621                        version_installed=version_installed.split()[0]
     622                        updateDict={'version':version_installed,'datetime':"None",'url':"Mirror"}
     623               
     624                self._debug("Update Test: Continue......")
     625                       
     626                version_installed=subprocess.Popen(["lliurex-version -n"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
     627                version_installed=version_installed.split()[0]
     628                version_programed=appDict[self.UPDATE]['version']
     629               
     630                self._debug("Update Test: Version installed %s"%version_installed)
     631                self._debug("Update Test: Version programed %s"%version_programed)
     632               
     633                if ( version_installed < version_programed ):
     634                        #actualizo repos y updateo
     635                        if appDict[self.UPDATE]['url']=='Lliurex.net':
     636                                self._debug("(update_test) Updating your system to Lliurex.net, please wait........")
     637                                #proc = subprocess.Popen(["lliurex-upgrade -u -r"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()
     638                                #ret=os.system("http_proxy=http://proxy:3128 /usr/sbin/lliurex-upgrade -u -r 2>/dev/null 1>/dev/null")
     639                                #ret=int(ret)
     640                                proc = subprocess.Popen('http_proxy=http://proxy:3128 /usr/sbin/lliurex-upgrade -u -r', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
     641                                proc.wait()
     642                                date=datetime.datetime.now()
     643                                date_update=date.strftime("%d-%m-%Y %H:%M:%S")
     644                                print ("Actualizacion terminada...... %s"%date_update)
     645                                if proc.returncode == 1:
     646                                        print "Fallo actulalizacion"
     647                        else:
     648                                proc = subprocess.Popen('http_proxy=http://proxy:3128 /usr/sbin/lliurex-upgrade -u', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
     649                                proc.wait()
     650                                date=datetime.datetime.now()
     651                                date_update=date.strftime("%d-%m-%Y %H:%M:%S")
     652                                print ("Actualizacion terminada...... %s"%date_update)
     653                                if proc.returncode == 1:
     654                                        print "Fallo actulalizacion"
     655                       
     656                        updated="True"
     657                        update_url=appDict[self.UPDATE]['url']
     658                        new_version=subprocess.Popen(["lliurex-version -n"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
     659                        new_version=new_version.split()[0]
     660                        date=datetime.datetime.now()
     661                        date_update=date.strftime("%d-%m-%Y %H:%M")
     662                        updateDict={'version':new_version,'datetime':date_update,'url':update_url}
     663               
     664                self._debug("Update Test: New dict %s"%updateDict)
     665               
     666                return [updateDict, updated]
     667               
     668        #def deb_test
     669
     670
    598671
    599672        def _refine_apt_repoList(self,appDict,dictOrig):
     
    675748        #def apt_test
    676749
    677         def _update_results(self,dict_orig,result_deb,result_sh,result_apt):
     750        def _update_results(self,dict_orig,result_deb,result_sh,result_apt,result_update,updated):
    678751                if not dict_orig:
    679752                        #Create dict if doesn't exists
    680753                        self._debug("[LLXRemoteInstallerClient](test_system) Creando el diccionario.......")
    681                         dict_new=self.create_dict ([self.APT,self.DEB,self.SH])[2]
     754                        dict_new=self.create_dict ([self.APT,self.DEB,self.SH,self.UPDATE])[2]
    682755                        dict_new[self.APT]=list(result_apt)
    683756                        dict_new[self.DEB]=list(result_deb[2])
    684757                        dict_new[self.SH]=list(result_sh[2])
     758                        dict_new[self.UPDATE]=result_update
    685759                        self.update_var_dict (self.N4D_INSTALLED,dict_new,"localhost")
    686760                else:
    687761                        #Update dict
     762                        try:
     763                                updateDict=dict_orig[self.UPDATE]
     764                        except:
     765                                self._debug("Update Result: Creating new dictionarie")
     766                                version_installed=subprocess.Popen(["lliurex-version -n"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
     767                                version_installed=version_installed.split()[0]
     768                                updateDict={'version':version_installed,'datetime':"None",'url':"Mirror"}
     769                                dict_orig[self.UPDATE]=[]
     770                                dict_orig[self.UPDATE]=updateDict
     771                               
     772                       
    688773                        dict_new=dict_orig
    689                         log="[LLXRemoteInstallerClient](test_system) Will add APT: %s ** DEBS: %s ** SH: %s "%(result_apt,result_deb[2],result_sh[2])
     774                        log="[LLXRemoteInstallerClient](test_system) Will add APT: %s ** DEBS: %s ** SH: %s ** UPDATE: %s "%(result_apt,result_deb[2],result_sh[2],result_update)
    690775                        self._debug(log)
    691776                        #Check the dict against a tuple
    692                         dict_help=self.create_dict ([self.APT,self.DEB,self.SH])[2]
     777                        dict_help=self.create_dict ([self.APT,self.DEB,self.SH,self.UPDATE])[2]
    693778                        dict_help[self.APT]=list(result_apt)
    694779                        dict_help[self.DEB]=list(result_deb[2])
    695780                        dict_help[self.SH]=list(result_sh[2])
    696                         self._debug("[LLXRemoteInstallerClient](test_system) dict to compare is "+str(dict_help))
     781                        #dict_help[self.UPDATE]=result_update
     782                        #self._debug("[LLXRemoteInstallerClient](test_system) dict to compare is "+str(dict_help))
    697783                        #Check values
     784                        if updated == 'True':
     785                                log="[LLXRemoteInstallerClient](test_system) System has been updated to version: %s"%result_update['version']
     786                                self._debug(log)
     787                                dict_new[self.UPDATE]=result_update
    698788                        for valor_dict in dict_help:
    699789                                self._debug("[LLXRemoteInstallerClient](test_system) Test APP from: "+valor_dict)
     
    717807                                except Exception as e:
    718808                                        self._debug("ERROR: "+str(e))
    719                         return (dict_new)
     809                return (dict_new)
    720810        #def _update_results
    721811
     
    749839                        self._debug("Call apt_test")
    750840                        result_apt=self.apt_test(appDict,dict_orig)
     841                        #TEST UPDATE
     842                        self._debug("Call update_test")
     843                        if appDict[self.UPDATE]['activate']=="True":
     844                                try:
     845                                        result_update_vector=self.update_test(appDict,dict_orig)
     846                                        result_update=result_update_vector[0]
     847                                        updated=result_update_vector[1]
     848                                except Exception as e:
     849                                        print e
     850                        else:
     851                                result_update={'version':dict_orig[self.UPDATE]['version'],'url':dict_orig[self.UPDATE]['url'],'datetime':dict_orig[self.UPDATE]['datetime']}
     852                                updated="False"
     853                        self._debug("Updated is %s"%updated)
    751854                       
    752855                        #Check that it's a list
    753856                        sh_installed=list(result_sh[2])
    754857                        #Add results to N4D dict
    755                         dict_new=self._update_results(dict_orig,result_deb,result_sh,result_apt)
     858                        dict_new=self._update_results(dict_orig,result_deb,result_sh,result_apt,result_update,updated)
    756859#                       if dict_orig in ["",None,{}]:
    757860                        log="Dict now is %s"%dict_new
    758861                        self._debug(log)
    759                         self._debug("Updating.......")
     862                        self._debug("Updating N4D Variable.......")
    760863                        #Add installed apps to N4D
    761864                        self.update_var_dict (self.N4D_INSTALLED,dict_new,"localhost")
    762                         COMMENT="The system has been configured with the APPS: %s * has executed the scripts: %s * Installed new DEBS: %s"%(result_apt,sh_installed,result_deb[2])
     865                        if updated == 'False':
     866                                COMMENT="The system has been configured with the APPS: %s * has executed the scripts: %s * Installed new DEBS: %s"%(result_apt,sh_installed,result_deb[2])
     867                        else:
     868                                COMMENT="The system has been configured with the APPS: %s * has executed the scripts: %s * Installed new DEBS: %s * Updated to: %s"%(result_apt,sh_installed,result_deb[2],result_update['version'])
    763869                        self._debug(COMMENT)
    764                         return [True,str(COMMENT),result_apt,result_sh[2],result_deb[2],dict_new]
    765                 except Exception as e:
     870                        return [True,str(COMMENT),result_apt,result_sh[2],result_deb[2],updated,dict_new]
     871                except Exception as e:
     872                        print e,"!!!!!!!!!!"
    766873                        return[False,str(e)]
    767874       
Note: See TracChangeset for help on using the changeset viewer.