Changeset 1907 for lliurex-mirror


Ignore:
Timestamp:
Jun 14, 2016, 3:00:06 PM (3 years ago)
Author:
kbut
Message:

wip

Location:
lliurex-mirror/trunk/fuentes
Files:
2 added
3 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-mirror/trunk/fuentes/MirrorManager.py

    r1889 r1907  
    1818from SimpleHTTPServer import SimpleHTTPRequestHandler
    1919from multiprocessing import Process
    20 
    21 class LliurexMirror:
     20import socket
     21
     22
     23class MirrorManager:
    2224
    2325
     
    5355                        self.variable["internal"]={}
    5456               
     57                if self.variable["internal"].has_key("status_mirror") and self.variable["internal"]["status_mirror"] == "Working":
     58                        if not self.update_thread.isAlive():
     59                                self.variable["internal"]['status_mirror'] = "Error"
     60                                self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
     61
    5562        #def startup
    5663
     
    123130
    124131                # link config debmirror to correct path with distro name
     132                self.variable["internal"]['status_mirror'] = "Working"
     133                self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
     134
    125135                self.build_debmirror_config(distro)
    126136                os.remove('/etc/debmirror.conf')
     
    145155
    146156                                        child.close()
    147                                         self.percentage=(self.percentage[0],child.exitstatus)
     157                                        status = child.exitstatus
     158                                        self.percentage=(self.percentage[0],status)
     159
     160                                        self.variable["internal"]['status_mirror'] = "Ok" if status == 0 else "Error"
     161                                        self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
    148162                                        break
    149163                        except Exception as e:
    150                                         break
     164                                self.variable["internal"]['status_mirror'] = "Error"
     165                                self.n4d_vars.set_variable("LLIUREXMIRROR",self.variable)
     166                                break
    151167                               
    152168                self.set_mirror_info(distro)
     
    160176       
    161177        def is_alive(self):
    162                 return self.update_thread.is_alive()
     178                return {'status':self.update_thread.is_alive(),'msg':''}
    163179        #def is_alive
    164180
     
    170186                        distro=self.distro
    171187               
    172                
     188                configpath = os.path.join(self.configpath, distro + ".json")
     189                config = json.load(open(configpath,'r'))
     190
     191                mirrorpath = config["MIRRORPATH"]
    173192                #self.n4d_vars.set_variable("ZEROCENTERINTERNAL",self.internal_variable)
    174193               
    175194                MIRROR_DATE=datetime.date.today().strftime("%d/%m/%Y")
    176                 MIRROR_SIZE=self.get_size("/net/mirror/"+distro)
     195                MIRROR_SIZE=self.get_size(mirrorpath)
    177196               
    178197                self.variable["internal"]["last_mirror_date"]=MIRROR_DATE
     
    270289                                origfrom = origfrom[:-1]
    271290                        origfrom = eval(origfrom)
    272                         return origfrom
    273291                        return {'status':True,'msg':origfrom }
    274                 return {'status':False,'msg':"debmirror.conf hasn't orig variable" }                   
     292                return {'status':False,'msg':"debmirror.conf hasn't orig variable" }           
    275293        #def get_mirror_from
    276294
     
    290308
    291309        def get_percentage(self):
    292                 return self.percentage
     310                if not self.is_alive():
     311                        return {'status':False,'msg':0}
     312                return {'status':True,'msg':self.percentage}
    293313
    294314        def build_debmirror_config(self,distro):
     
    303323       
    304324        def enable_webserver_into_folder(self,path):
    305                 port = 8000
     325                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     326                s.bind(('localhost', 0))
     327                addr, port = s.getsockname()
     328                s.close()
    306329                self.webserverprocess = Process(target=self._enable_webserver_into_folder,args=(port,path,))
    307330                self.webserverprocess.start()
    308331                return {'status':True,'msg':port}
     332        #enable_webserver_into_folder
    309333
    310334        def _enable_webserver_into_folder(self,port,path):
     
    320344                        self.httpd.serve_forever()
    321345                except Exception, e:
    322                         print e
    323346                        return None
     347        #_enable_webserver_into_folder
    324348
    325349        def stop_webserver(self):
    326350                self.webserverprocess.terminate()
    327351                return {'status':True,'msg':'Server stopped'}
     352        #stop_webserver
     353       
     354        def set_checksum_validation(self,distro,status):
     355                configpath = os.path.join(self.configpath, distro + ".json")
     356                config = json.load(open(configpath,'r'))
     357                config['CHK_MD5'] = status
     358
     359                f=open(configpath,"w")
     360                data=unicode(json.dumps(config,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
     361                f.write(data)
     362                f.close()
     363
     364                self.build_debmirror_config(distro)
     365                return {'status':True,'msg':'set checksum validation'}
     366        #set_checksum_validation
     367       
     368        def get_checksum_validation(self,distro):
     369                filepath = os.path.join(self.debmirrorconfpath,distro)
     370                if not os.path.exists(filepath):
     371                        return {'status':False,'msg':'not exists debmirror.conf to '+ distro }
     372                md5sum = self.search_field(filepath,'\$check_md5sums')
     373                if md5sum != None:
     374                        md5sum = md5sum.split("=")[1]
     375                        if md5sum.endswith(";"):
     376                                md5sum = md5sum[:-1]
     377                        md5sum = eval(md5sum)
     378                        return {'status':True,'msg':md5sum }
     379                return {'status':False,'msg':"debmirror.conf hasn't orig variable" }
     380        #get_checksum_validation
     381       
Note: See TracChangeset for help on using the changeset viewer.