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

Last change on this file since 2489 was 2489, checked in by kbut, 4 years ago

fix bugs

File size: 3.8 KB
Line 
1import xmlrpclib
2
3class LliurexMirrorN4d:
4        def __init__(self,server,credentials):
5                self.client = None
6                self.serverip = server
7                self.localclient = None
8                self.connect(server)
9                self.local_connect()
10                self.credentials = credentials
11                self.localcredentials = self.get_local_credentials()
12        #def __init__
13
14        def connect(self,server):
15                self.client = xmlrpclib.ServerProxy('https://' + server + ':9779')
16                self.serverip = server
17                try:
18                        self.client.get_methods()
19                except:
20                        self.client = None
21                        return False
22                return True
23        #def connect
24
25        def local_connect(self):
26                self.client = xmlrpclib.ServerProxy('https://localhost:9779',allow_none=True)
27                try:
28                        self.client.get_methods()
29                except:
30                        self.client = None
31                        return False
32                return True
33        #def connect
34
35        def get_local_credentials(self):
36                try:
37                        f = open('/etc/n4d/key','r')
38                        key = f.readline().strip()
39                        return key
40                except:
41                        return None
42
43        def mirror_list(self):
44                if type(self.client) == None:
45                        return {}
46                result = self.client.get_all_configs(self.credentials,'MirrorManager')
47                if not result['status']:
48                        return {}
49                return result['msg']
50        #def mirror_list
51
52        def is_alive(self):
53                try:
54                        return self.client.is_alive(self.credentials,'MirrorManager')
55                except:
56                        return {'status':False,'msg':None}
57        #def is_alive
58       
59        def save_config(self,mirror,config):
60                result = self.client.update_mirror_config(self.credentials,'MirrorManager',mirror,config)
61                return result['status']
62        #def save_config
63
64        def create_conf(self,config):
65                if self.client == None:
66                        return {}
67                result = self.client.new_mirror_config(self.credentials,'MirrorManager',config)
68                if result['status']:
69                        return result['msg']
70                return None
71        #def create_conf
72
73        def update(self,mirror,mode,data=None):
74                '''
75                mode is option to update mirror. (Internet, local network, folder)
76                data is extra info to update (local network ip, )
77                '''
78                self.mode = None
79                if mode == '2':
80                        self.mode = 2 
81                        result = self.client.get_client_ip('','MirrorManager','')
82                        tempserver = result['msg']
83                        result = self.localclient.enable_webserver_into_folder(self.localcredentials,'MirrorManager',data)
84                        tempserver = tempserver + ":" + result['msg']
85                        data = 'http://'+tempserver
86                        self.localclient.watch_update_finish(self.localcredentials,'MirrorManager',self.credentials,self.serverip)
87                if data != None:
88                        self.set_mirror_orig(self.credentials,'MirrorManager',mirror,data,mode)
89                self.client.set_option_update(self.credentials,'MirrorManager',mirror,mode)
90                result = update(self.credentials,'MirrorManager',mirror)
91                return result['status']
92        #def update
93
94        def export(self, mirror,folder):
95                import tempfile
96                result = self.client.render_debmirror_config(self.credentials,'MirrorManager',mirror)
97                temp_file = tempfile.mktemp()
98                f = open(temp_file,'w')
99                f.write(result['msg'])
100                f.close()
101                self.localclient.get_mirror(self.localcredentials,'MirrorManager',temp_file)
102        #def export
103
104        def get_percentage_export(self):
105                result = self.localclient.is_alive_get_mirror(self.localcredentials,'MirrorManager')
106                return result['msg']
107        #def get_percentage_export
108
109        def is_alive_export(self):
110                result = self.localclient.is_alive_get_mirror(self.localcredentials,'MirrorManager')
111                return result['status']
112
113
114        def get_percentage(self,mirror):
115                result = self.client.get_percentage(self.credentials,'MirrorManager',mirror)
116                if result['status'] :
117                        return result['msg']
118        #def get_percentage
119
120        def is_update_available(self,mirror):
121                result = self.client.is_update_available(self.credentials,'MirrorManager',mirror)
122                return result['status']
123        #def is_update_available
124
125        def stop_update(self):
126                if self.mode == '2':
127                        self.client.stop_webserver(self.credentials,'MirrorManager')
128                result = self.client.stopupdate(self.credentials,'MirrorManager')
129                return result['status']
130        #def stop_update
131
132
133if __name__ == '__main__':
134        c = LliurexMirrorN4d('localhost',['kbut','lliurex'])
135        print c.mirror_list()
Note: See TracBrowser for help on using the repository browser.