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

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

first version of all functions working

  • Property svn:executable set to *
File size: 6.9 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.update(self.credentials,"MirrorManager",'',distro,None)
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,distro):
64                result = self.client.get_percentage(self.credentials,"MirrorManager",distro)
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,port):
74                result = self.client.stop_webserver(self.credentials,"MirrorManager",port)
75                print str(result['msg'])
76                sys.exit( 0 if result['status'] else 1 )
77
78        def stopUpdate(self):
79                result = self.client.stopupdate(self.credentials,"MirrorManager")
80                print str(result['msg'])
81                sys.exit( 0 if result['status'] else 1 )
82
83        def getAvailableDistros(self):
84                result = self.client.get_available_mirrors(self.credentials,"MirrorManager")
85                print str(result['msg'])
86                sys.exit( 0 if result['status'] else 1 )
87
88        def isMirrorUpdate(self,distro):
89                result = self.client.is_update_available(self.credentials,"MirrorManager",distro)
90                print str(result['msg'])
91                sys.exit( 0 if result['status'] else 1 )       
92
93def usage():
94        puts("Usage")
95        with indent(4):
96                puts("lliurex-mirror [FLAGS...] ACTION")
97                puts("Actions")
98                with indent(4):
99                        puts("setcname")
100                        puts("rundebmirror DISTRO")
101                        puts("isalive")
102                        puts("getmirrorarchitecture")
103                        puts("setmirrorarchitecture [ARCH ARCH ...]")
104                        puts("getmirrororig")
105                        puts("setmirrororig URL")
106                        puts("getchecksumvalidation")
107                        puts("setchecksumvalidation [0|1]")
108                        puts("getpercentage")
109                        puts("enablewebserverforpath PATH")
110                        puts("stopwebserver PORT")
111                        puts("stopupdate")
112                        puts("getavailabledistros")
113                        puts("ismirrorupdate")
114                puts("Flags")
115                with indent(4):
116                        puts("-h --help : Show help")
117                        puts("-H --host : Remove ip to launch mirror actions")
118                        puts("-k --key : Magic key to run lliurex-mirror")
119                        puts("-u --user : User to validation")
120                        puts("-p --password : Password to validation")
121
122                       
123        sys.exit(1)
124
125if __name__ == '__main__':
126        args = arguments.Args().copy
127        host = None
128        credentials = ""
129        user = None
130        password = None
131        if args.contains(["-h","--help"]) or len(args.all) == 0 :
132                usage()
133       
134        if args.contains(["-H","--host"]):
135                #host = args.value_after()
136                host = args.value_after("-H") if args.value_after("-H") != None else args.value_after("--host")
137                if host == None:
138                        usage()
139
140
141        if not args.contains(["-k","--key","-u","--user","-p","--password","-P","--intpassword"]):
142                if os.access('/etc/n4d/key',os.R_OK):
143                        f = open("/etc/n4d/key","r")
144                        credentials = f.readlines()[0].strip()
145
146        if args.contains(["-u","--user"]):
147                user = args.value_after("-u") if args.value_after("-u") != None else args.value_after("--user")
148                if user == None:
149                        usage()
150                index = args.first(["-u","--user"])
151                args.pop(index)
152                args.pop(index)
153
154        if args.contains(["-p","--password"]):
155                password = args.value_after("-p") if args.value_after("-p") != None else args.value_after("--password")
156                if password == None:
157                        usage()
158
159                index = args.first(["-p","--password"])
160                args.pop(index)
161                args.pop(index)
162
163        if args.contains(["-P","--intpassword"]):
164                if args.contains(["-u","--user"]):
165                        password = getpass.getpass("Password: ")
166                        index = args.first(["-P","--intpassword"])
167                        args.pop(index)
168                else:
169                        usage()
170
171        if user != None and password != None:
172                credentials = (user,password)
173
174        if args.contains(["-k","--key"]):
175                credentials = args.value_after("-k") if args.value_after("-k") != None else args.value_after("--key")
176                if credentials == None:
177                        usage()
178                index = args.first(["-k","--key"])
179                args.pop(index)
180                args.pop(index)
181
182        action = args.pop(0)
183        lliurexmirror = LliurexMirror(credentials,host)
184        if action == "setcname":
185                lliurexmirror.setCname()
186        elif action == "rundebmirror":
187                lliurexmirror.runDebmirror(args.get(0))
188        elif action == "isalive":
189                lliurexmirror.isAlive()
190        elif action == "getmirrorarchitecture":
191                lliurexmirror.getMirrorArchitecture(args.get(0))
192        elif action == "setmirrorarchitecture":
193                lliurexmirror.setMirrorArchitecture(args.pop(0),args.all)
194        elif action == "getmirrororig":
195                lliurexmirror.getMirrorOrig(args.get(0))
196        elif action == "setmirrororig":
197                lliurexmirror.setMirrorOrig(args.get(0),args.get(1))
198        elif action == "getchecksumvalidation":
199                lliurexmirror.getChecksumValidation(args.get(0))
200        elif action == "setchecksumvalidation":
201                checkvalue = 1 if args.get(1) == "True" else 0
202                lliurexmirror.setChecksumValidation(args.get(0),checkvalue)
203        elif action == "getpercentage":
204                lliurexmirror.getPercentage(args.get(0))
205        elif action == "enablewebserverforpath":
206                lliurexmirror.enableWebserverForPath(args.get(0))
207        elif action == "stopwebserver":
208                lliurexmirror.stopWebserver(args.get(0))
209        elif action == "getavailabledistros":
210                lliurexmirror.getAvailableDistros()
211        elif action == "stopupdate":
212                lliurexmirror.stopUpdate()
213        elif action == "ismirrorupdate":
214                lliurexmirror.isMirrorUpdate(args.get(0))       
Note: See TracBrowser for help on using the repository browser.