Ignore:
Timestamp:
Sep 15, 2016, 12:12:09 PM (3 years ago)
Author:
kbut
Message:

new functions and refactoring for lliurex-mirror gtk client

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-mirror/trunk/fuentes/n4d-lliurex-mirror.install/usr/share/n4d/python-plugins/MirrorManager.py

    r2388 r2437  
    3434                self.update_thread=threading.Thread()
    3535                self.percentage=(0,None)
     36                self.mirrorworking = None
    3637                self.webserverprocess = None
    3738                self.defaultmirrorinfo = {"status_mirror":"New","last_mirror_date":None,"mirror_size":0,"progress":0}
     39                self.default_mirror_config = '''
     40{
     41        "NAME": "",
     42        "BANNER": "",
     43        "ORIGS" : {"1":"lliruex.net/xenial","2":"","3":""},
     44        "ARCHITECTURES": [ "amd64", "i386"],
     45        "SECTIONS": ["main", "main/debian-installer", "universe", "restricted", "multiverse", "partner"],
     46        "MIRROR_PATH": "/net/mirror/llx16",
     47        "DISTROS": ["xenial","xenial-updates","xenial-security"],
     48        "IGN_GPG":1,
     49        "IGN_RELEASE":0,
     50        "CHK_MD5":0,
     51        "CURRENT_UPDATE_OPTION":"1"
     52}'''
    3853               
    3954        #def init
     
    137152                self.variable[distro]['status_mirror'] = "Working"
    138153                self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
    139                 filelog = open('/var/log/lliurex-mirror.log','w')
    140154                self.build_debmirror_config(distro)
    141155                if os.path.exists('/etc/debmirror.conf'):
    142156                        os.remove('/etc/debmirror.conf')
    143157                os.symlink(os.path.join(self.debmirrorconfpath,distro),'/etc/debmirror.conf')
     158                self.mirrorworking = distro
    144159                self.debmirrorprocess=pexpect.spawn("/usr/bin/debmirror")
    145160                try:
     
    151166                                self.debmirrorprocess.expect('\n')
    152167                                line =self.debmirrorprocess.before
    153                                 filelog.write(line)
    154168                                line1=line.strip("\n")
    155169                                if line1.startswith("[") and line1[5] == "]":
     
    161175                                        if line1 != "" and line1.startswith("[") and line1[5] == "]":
    162176                                                        self.percentage=(int(line1[1:4].strip()),self.debmirrorprocess.exitstatus)
    163                                         filelog.write(line1)
    164177                                        self.debmirrorprocess.close()
    165178                                        status = self.debmirrorprocess.exitstatus
     
    173186                                self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
    174187                                break
    175                 filelog.close()
    176188
    177189                self.download_time_file(distro)
    178190
    179191                self.set_mirror_info(distro)
    180 
     192                self.mirrorworking = None
    181193                try:
    182194                        objects["ZCenterVariables"].remove_pulsating_color("lliurexmirror")
     
    187199       
    188200        def is_alive(self):
    189                 return {'status':self.update_thread.is_alive(),'msg':''}
     201
     202                return {'status':self.update_thread.is_alive(),'msg':self.mirrorworking}
    190203        #def is_alive
    191204
     
    200213                config = json.load(open(configpath,'r'))
    201214
    202                 mirrorpath = config["MIRRORPATH"]
     215                mirrorpath = config["MIRROR_PATH"]
    203216                #self.n4d_vars.set_variable("ZEROCENTERINTERNAL",self.internal_variable)
    204217               
     
    286299        #def set_mirror_architecture
    287300       
    288         def get_mirror_orig(self,distro):
     301        def get_mirror_orig(self,distro,option):
    289302
    290303                configpath = os.path.join(self.configpath,distro + ".json")
     
    293306                        return {'status':False,'msg':'not exists debmirror.conf to '+ distro }
    294307
    295                 if "URL" in config.keys():
    296                         return {'status':True,'msg':config["URL"] }
     308                if "ORIGS" in config.keys():
     309                        return {'status':True,'msg':config["ORIGS"][option] }
    297310                       
    298                 return {'status':False,'msg':"debmirror.conf hasn't orig variable" }           
     311                return {'status':False,'msg':"debmirror.conf hasn't orig variable" }   
    299312        #def get_mirror_from
    300313
    301         def set_mirror_orig(self,distro,url):
     314        def set_mirror_orig(self,distro,url,option):
    302315                configpath = os.path.join(self.configpath, distro + ".json")
    303316                config = json.load(open(configpath,'r'))
    304                 config['URL'] = url
     317                config['ORIGS'][option] = url
    305318
    306319                f=open(configpath,"w")
     
    312325                return {'status':True,'msg':'set orig'}
    313326        #def set_mirror_architecture
     327
     328        def get_option_update(self,distro):
     329                configpath = os.path.join(self.configpath,distro + ".json")
     330                config = json.load(open(configpath,'r'))
     331                if not os.path.exists(configpath):
     332                        return {'status':False,'msg':'not exists debmirror.conf to '+ distro }
     333
     334                if "CURRENT_UPDATE_OPTION" in config.keys():
     335                        return {'status':True,'msg':config["CURRENT_UPDATE_OPTION"] }
     336                       
     337                return {'status':False,'msg':"debmirror.conf hasn't option update variable" }
     338        #def set_option_update
     339
     340        def set_option_update(self,distro,option):
     341                configpath = os.path.join(self.configpath, distro + ".json")
     342                config = json.load(open(configpath,'r'))
     343                config['CURRENT_UPDATE_OPTION'] = str(option)
     344
     345                f=open(configpath,"w")
     346                data=unicode(json.dumps(config,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
     347                f.write(data)
     348                f.close()
     349
     350                self.build_debmirror_config(distro)
     351                return {'status':True,'msg':'set update option'}
     352        #def set_option_update
    314353
    315354        def get_percentage(self,distro):
     
    318357                else:
    319358                        return {'status':False,'msg':'this repo nos has been configured'}
     359        #def get_percentage
    320360
    321361        def build_debmirror_config(self,distro):
     
    341381        def _enable_webserver_into_folder(self,port,path):
    342382                try:
    343                         import os
    344383                        iface = '127.0.0.1'
    345384                        sock = (iface,port)
     
    403442                configpath = os.path.join(self.configpath,distro + ".json")
    404443                config = json.load(open(configpath,'r'))
    405                 path=config["MIRRORPATH"]
     444                path=config["MIRROR_PATH"]
    406445                f="time-of-last-update"
    407446                dest=os.path.join(path,f)
     
    434473                configpath = os.path.join(self.configpath,distro + ".json")
    435474                config = json.load(open(configpath,'r'))
    436                 path=config["MIRRORPATH"]
     475                path=config["MIRROR_PATH"]
    437476                file_time_name="time-of-last-update"
    438477                file_local_mirror=os.path.join(path,file_time_name)
     
    440479               
    441480                if os.path.isfile(file_local_mirror):
    442                         url_pool="http://"+os.path.join(config["LLIUREX_ORIG"],file_time_name)
     481                        url_pool="http://"+os.path.join(config["ORIGS"]['1'],file_time_name)
    443482                        file_pool=os.path.join("/tmp",file_time_name)
    444483
     
    474513                        return {'status':False,'msg':file_local_mirror + ' does not exist.','action':'nothing'}
    475514
    476         # def is_mirror_update                 
     515        # def is_mirror_update
     516
     517        def new_mirror_config(self,config):
     518                name = config["NAME"].lower().strip()
     519                import string
     520                valid_chars = "-_.%s%s" % (string.ascii_letters, string.digits)
     521                name = ''.join(c for c in name if c in valid_chars)
     522
     523                # Checks
     524                if name == "":
     525                        return {'status':False,'msg':"Name can't void"}
     526                newconfigpath = os.path.join(self.configpath,name,'.json')
     527                if os.path.exists(newconfigpath):
     528                        return {'status':False,'msg':'Path for %s already exists'%config["NAME"]}
     529
     530                data=unicode(json.dumps(config,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
     531                f = open(newconfigpath,'w')
     532                f.write(data)
     533                f.close()
     534                return {'status':True,'msg':'Config has been created'}
     535        #def new_mirror_config
     536
     537        def get_all_configs(self):
     538                versions = os.listdir(self.configpath)
     539                allconfigs = {}
     540                for version in versions:
     541                        configfile = os.path.join(self.configpath,version)
     542                        f = open(configfile,'r')
     543                        allconfigs[version] = json.load(f)
     544                        f.close()
     545                return {'status':True,'msg':allconfigs}
     546        #def get_all_configs
     547
     548        def update_mirror_config(self,mirror,config):
     549                configpath = os.path.join(self.configpath,distro + ".json")
     550
     551                f=open(configpath,"w")
     552
     553                data=unicode(json.dumps(config,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
     554                f.write(data)
     555                f.close()
     556
     557                return {'status':True,'msg':'Updated config'}
     558        #def update_mirror_config
Note: See TracChangeset for help on using the changeset viewer.