source: lliurex-mirror/trunk/fuentes/LliurexMirror.py @ 1931

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

update mirrors config

File size: 5.7 KB
Line 
1import xmlrpclib as x
2import sys
3import getpass
4from clint import arguments
5from clint.textui import puts, indent, colored
6import os
7
8class LliurexMirror(object):
9        """docstring for LliurexMirror"""
10        def __init__(self,credentials,host):
11                super(LliurexMirror, self).__init__()
12                self.ip = host if host != None else "localhost"
13                self.credentials = credentials
14                self.client = x.ServerProxy("https://"+self.ip+":9779")
15
16        def setCname(self):
17                result = self.client.set_cname(self.credentials,"MirrorManager")
18                print result['msg']
19                sys.exit( 0 if result['status'] else 1 )
20
21        def runDebmirror(self,distro):
22                result = self.client.set_cname(self.credentials,"MirrorManager",distro)
23                print result['msg']
24                sys.exit( 0 if result['status'] else 1 )
25
26        def isAlive(self):
27                result = self.client.is_alive(self,credentials,"MirrorManager")
28                print "True" if result['status'] else "False"
29                sys.exit( 0 if result['status'] else 1 )
30
31        def getMirrorArchitecture(self,distro):
32                result = self.client.get_mirror_architecture(self,credentials,"MirrorManager",distro)
33                print str(result['msg'])
34                sys.exit( 0 if result['status'] else 1 )
35
36        def setMirrorArchitecture(self,distro,archs):
37                result = self.client.set_mirror_architecture(self,credentials,"MirrorManager",distro,archs)
38                print str(result['msg'])
39                sys.exit( 0 if result['status'] else 1 )
40
41        def getMirrorOrig(self,distro):
42                result = self.client.get_mirror_orig(self,credentials,"MirrorManager",distro)
43                print str(result['msg'])
44                sys.exit( 0 if result['status'] else 1 )
45
46        def setMirrorOrig(self,distro,url):
47                result = self.client.set_mirror_orig(self,credentials,"MirrorManager",distro,url)
48                print str(result['msg'])
49                sys.exit( 0 if result['status'] else 1 )
50
51        def getChecksumValidation(self,distro):
52                result = self.client.get_checksum_validation(self,credentials,"MirrorManager",distro)
53                print str(result['msg'])
54                sys.exit( 0 if result['status'] else 1 )
55
56        def setChecksumValidation(self,distro,value):
57                check = 0 if not value else 1
58                result = self.client.set_checksum_validation(self,credentials,"MirrorManager",distro,check)
59                print str(result['msg'])
60                sys.exit( 0 if result['status'] else 1 )
61
62        def getPercentage(self):
63                result = self.client.get_percentage(self,credentials,"MirrorManager")
64                print str(result['msg'])
65                sys.exit( 0 if result['status'] else 1 )
66
67        def enableWebserverForPath(self,path):
68                result = self.client.enable_webserver_into_folder(self,credentials,"MirrorManager",path)
69                print str(result['msg'])
70                sys.exit( 0 if result['status'] else 1 )
71
72        def stopWebserver(self):
73                result = self.client.stop_webserver(self,credentials,"MirrorManager")
74                print str(result['msg'])
75                sys.exit( 0 if result['status'] else 1 )
76
77def usage():
78        puts("Usage")
79        with indent(4):
80                puts("lliurex-mirror [ACTION]")
81                puts("Actions")
82                with indent(4):
83                        puts("setcname")
84                        puts("rundebmirror")
85                        puts("isalive")
86                        puts("getmirrorarchitecture")
87                        puts("setmirrorarchitecture")
88                        puts("getmirrororig")
89                        puts("setmirrororig")
90                        puts("getchecksumvalidation")
91                        puts("setchecksumvalidation")
92                        puts("getpercentage")
93                        puts("enablewebserverforpath")
94                        puts("stopwebserver")
95        sys.exit(1)
96
97if __name__ == '__main__':
98        args = arguments.Args().copy
99        host = None
100        credentials = ""
101        user = None
102        password = None
103        if args.contains(["-h","--help"]):
104                usage()
105       
106        if args.contains(["-H","--host"]):
107                #host = args.value_after()
108                host = args.value_after("-H") if args.value_after("-H") != None else args.value_after("--host")
109                if host == None:
110                        usage()
111
112
113        if not args.contains(["-k","--key","-u","--user","-p","--password","-P","--intpassword"]):
114                if os.access('/etc/n4d/key',os.R_OK):
115                        f = open("/etc/n4d/key","r")
116                        credentials = f.readlines()[0].strip()
117
118        if args.contains(["-u","--user"]):
119                user = args.value_after("-u") if args.value_after("-u") != None else args.value_after("--user")
120                if user == None:
121                        usage()
122                index = args.first(["-u","--user"])
123                args.pop(index)
124                args.pop(index)
125
126        if args.contains(["-p","--password"]):
127                password = args.value_after("-p") if args.value_after("-p") != None else args.value_after("--password")
128                if password == None:
129                        usage()
130
131                index = args.first(["-p","--password"])
132                args.pop(index)
133                args.pop(index)
134
135        if args.contains(["-P","--intpassword"]):
136                if args.contains(["-u","--user"]):
137                        password = getpass.getpass("Password: ")
138                        index = args.first(["-P","--intpassword"])
139                        args.pop(index)
140                else:
141                        usage()
142
143        if user != None and password != None:
144                credentials = (user,password)
145
146        if args.contains(["-k","--key"]):
147                credentials = args.value_after("-k") if args.value_after("-k") != None else args.value_after("--key")
148                if credentials == None:
149                        usage()
150                index = args.first(["-k","--key"])
151                args.pop(index)
152                args.pop(index)
153
154        action = args.pop(0)
155        lliurexmirror = LliurexMirror(credentials,host)
156        if action == "setcname":
157                lliurexmirror.setCname()
158        elif action == "rundebmirror":
159                lliurexmirror.runDebmirror(args.get(0))
160        elif action == "isalive":
161                lliurexmirror.isAlive()
162        elif action == "getmirrorarchitecture":
163                lliurexmirror.getMirrorArchitecture(args.get(0))
164        elif action == "setmirrorarchitecture":
165                lliurexmirror.setMirrorArchitecture(args.pop(0),args.all)
166        elif action == "getmirrororig":
167                lliurexmirror.getMirrorOrig(args.get(0))
168        elif action == "setmirrororig":
169                lliurexmirror.setMirrorOrig(args.get(0),args.get(1))
170        elif action == "getchecksumvalidation":
171                lliurexmirror.getChecksumValidation(args.get(0))
172        elif action == "setchecksumvalidation":
173                checkvalue = 1 if args.get(1) == "True" else 0
174                lliurexmirror.setChecksumValidation(args.get(0),checkvalue)
175        elif action == "getpercentage":
176                lliurexmirror.getPercentage()
177        elif action == "enablewebserverforpath":
178                lliurexmirror.enableWebserverForPath(args.get(0))
179        elif action == "stopwebserver":
180                lliurexmirror.stopWebserver()
181
182
Note: See TracBrowser for help on using the repository browser.