source: lliurex-mirror/trunk/fuentes/lliurex-mirror-gui/lliurex_mirror_connect.py @ 2510

Last change on this file since 2510 was 2510, checked in by kbut, 3 years ago

wip

File size: 5.1 KB
Line 
1import xmlrpclib
2
3class LliurexMirrorN4d:
4        def __init__(self,server,credentials):
5                self.mode = None
6                self.client = None
7                self.serverip = server
8                self.localclient = None
9                self.connect(server)
10                self.local_connect()
11                self.credentials = credentials
12                self.localcredentials = self.get_local_credentials()
13        #def __init__
14
15        def connect(self,server):
16                self.client = xmlrpclib.ServerProxy('https://' + server + ':9779',allow_none=True)
17                self.serverip = server
18                try:
19                        self.client.get_methods()
20                except:
21                        self.client = None
22                        return False
23                return True
24        #def connect
25
26        def local_connect(self):
27                self.localclient = xmlrpclib.ServerProxy('https://localhost:9779',allow_none=True)
28                try:
29                        self.localclient.get_methods()
30                except:
31                        self.localclient = None
32                        return False
33                return True
34        #def connect
35
36        def get_local_credentials(self):
37                try:
38                        f = open('/etc/n4d/key','r')
39                        key = f.readline().strip()
40                        return key
41                except:
42                        return None
43
44        def mirror_list(self):
45                if type(self.client) == None:
46                        return {}
47                result = self.client.get_all_configs(self.credentials,'MirrorManager')
48                if not result['status']:
49                        return {}
50                return result['msg']
51        #def mirror_list
52
53        def is_alive(self):
54                try:
55                        return self.client.is_alive(self.credentials,'MirrorManager')
56                except:
57                        return {'status':False,'msg':None}
58        #def is_alive
59       
60        def save_config(self,mirror,config):
61                result = self.client.update_mirror_config(self.credentials,'MirrorManager',mirror,config)
62                return result
63        #def save_config
64
65        def create_conf(self,config):
66                if type(self.client) == None:
67                        return {}
68                result = self.client.new_mirror_config(self.credentials,'MirrorManager',config)
69                if result['status']:
70                        return result['msg']
71                return result
72        #def create_conf
73
74        def update(self,mirror,mode,data=None):
75                '''
76                mode is option to update mirror. (Internet, local network, folder)
77                data is extra info to update (local network ip, )
78                '''
79                self.mode = None
80                if mode == '2':
81                        self.mode = 2 
82                        result = self.client.get_client_ip('','MirrorManager','')
83                        print result
84                        tempserver = result['msg']
85                        result = self.localclient.enable_webserver_into_folder(self.localcredentials,'MirrorManager',data)
86                        tempserver = str(tempserver) + ":" + str(result['msg'])
87                        data = tempserver
88                        print data
89                        self.localclient.watch_update_finish(self.localcredentials,'MirrorManager',self.credentials,self.serverip)
90                if data != None:
91                        self.client.set_mirror_orig(self.credentials,'MirrorManager',mirror,data,mode)
92                self.client.set_option_update(self.credentials,'MirrorManager',mirror,mode)
93                result = self.client.update(self.credentials,'MirrorManager',mirror)
94                return result['status']
95        #def update
96
97        def export(self, mirror,folder):
98                import tempfile
99
100                # Get config for this mirror
101                result = self.client.get_all_configs(self.credentials,'MirrorManager')
102                config = result['msg'][mirror]
103               
104                # Open webserver for mirror and get ip
105                result = self.client.enable_webserver_into_folder(self.credentials,'MirrorManager',config['MIRROR_PATH'])
106
107                # Modify Config and write
108               
109                config['MIRROR_PATH'] = folder
110                config[] = '3'
111                config['ORIGS']['3'] = self.serverip + ":" + str(result['msg'])
112                result = self.client.render_debmirror_config(self.credentials,'MirrorManager',config)
113                temp_file = tempfile.mktemp()
114                f = open(temp_file,'w')
115                f.write(result['msg'])
116                f.close()
117
118                # Execute mirror
119                self.localclient.get_mirror(self.localcredentials,'MirrorManager',temp_file)
120                return True
121        #def export
122
123        def get_percentage_export(self):
124                result = self.localclient.is_alive_get_mirror(self.localcredentials,'MirrorManager')
125                return result['msg']
126        #def get_percentage_export
127
128        def is_alive_export(self):
129                result = self.localclient.is_alive_get_mirror(self.localcredentials,'MirrorManager')
130                print result
131                return result['status']
132
133
134        def get_percentage(self,mirror):
135                result = self.client.get_percentage(self.credentials,'MirrorManager',mirror)
136                if result['status'] :
137                        return result['msg']
138        #def get_percentage
139
140        def is_update_available(self,mirror):
141                result = self.client.is_update_available(self.credentials,'MirrorManager',mirror)
142                return result['status']
143        #def is_update_available
144
145        def stop_update(self):
146                if self.mode == '2':
147                        self.client.stop_webserver(self.credentials,'MirrorManager')
148                result = self.client.stopupdate(self.credentials,'MirrorManager')
149                return result['status']
150        #def stop_update
151
152
153if __name__ == '__main__':
154        c = LliurexMirrorN4d('localhost',['kbut','lliurex'])
155        config = {'IGN_GPG': 1, 'NAME': 'LliureX Xenial', 'ORIGS': {'1': 'lliurex.net/xenial', '3': '172.20.8.6/mirror/lliurex', '2': ''}, 'SECTIONS': ['main', 'main/debian-installer', 'universe', 'restricted', 'multiverse', 'partner'], 'MIRROR_PATH': '/net/mirror/llx16', 'ARCHITECTURES': ['amd64', 'i386'], 'CHK_MD5': 0, 'IGN_RELEASE': 0, 'BANNER': '', 'CURRENT_UPDATE_OPTION': '3', 'DISTROS': ['xenial', 'xenial-updates', 'xenial-security']}
156        #print c.save_config('llx16',config)
157        #print c.update('llx16','3','172.20.8.6/mirror/lliurex')
158        #print c.update('llx16','2','/net/mirror/lugar')
159        #print c.update('llx16','3')
160        #print c.mirror_list()
161        print c.export('llx16','/net/miexportacion')
162        #print c.is_alive_export()
163        #print c.get_percentage('llx16')
164        #print c.is_alive()
165        #print c.stop_update()
Note: See TracBrowser for help on using the repository browser.