source: lliurex-mirror/trunk/fuentes/lliurex-mirror-cli/usr/bin/lliurexmirror @ 1960

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

add new function to list available mirrors

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