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

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

add cli for lliurex-mirror

  • Property svn:executable set to *
File size: 5.7 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
78def usage():
79        puts("Usage")
80        with indent(4):
81                puts("lliurex-mirror [ACTION]")
82                puts("Actions")
83                with indent(4):
84                        puts("setcname")
85                        puts("rundebmirror")
86                        puts("isalive")
87                        puts("getmirrorarchitecture")
88                        puts("setmirrorarchitecture")
89                        puts("getmirrororig")
90                        puts("setmirrororig")
91                        puts("getchecksumvalidation")
92                        puts("setchecksumvalidation")
93                        puts("getpercentage")
94                        puts("enablewebserverforpath")
95                        puts("stopwebserver")
96        sys.exit(1)
97
98if __name__ == '__main__':
99        args = arguments.Args().copy
100        host = None
101        credentials = ""
102        user = None
103        password = None
104        if args.contains(["-h","--help"]):
105                usage()
106       
107        if args.contains(["-H","--host"]):
108                #host = args.value_after()
109                host = args.value_after("-H") if args.value_after("-H") != None else args.value_after("--host")
110                if host == None:
111                        usage()
112
113
114        if not args.contains(["-k","--key","-u","--user","-p","--password","-P","--intpassword"]):
115                if os.access('/etc/n4d/key',os.R_OK):
116                        f = open("/etc/n4d/key","r")
117                        credentials = f.readlines()[0].strip()
118
119        if args.contains(["-u","--user"]):
120                user = args.value_after("-u") if args.value_after("-u") != None else args.value_after("--user")
121                if user == None:
122                        usage()
123                index = args.first(["-u","--user"])
124                args.pop(index)
125                args.pop(index)
126
127        if args.contains(["-p","--password"]):
128                password = args.value_after("-p") if args.value_after("-p") != None else args.value_after("--password")
129                if password == None:
130                        usage()
131
132                index = args.first(["-p","--password"])
133                args.pop(index)
134                args.pop(index)
135
136        if args.contains(["-P","--intpassword"]):
137                if args.contains(["-u","--user"]):
138                        password = getpass.getpass("Password: ")
139                        index = args.first(["-P","--intpassword"])
140                        args.pop(index)
141                else:
142                        usage()
143
144        if user != None and password != None:
145                credentials = (user,password)
146
147        if args.contains(["-k","--key"]):
148                credentials = args.value_after("-k") if args.value_after("-k") != None else args.value_after("--key")
149                if credentials == None:
150                        usage()
151                index = args.first(["-k","--key"])
152                args.pop(index)
153                args.pop(index)
154
155        action = args.pop(0)
156        lliurexmirror = LliurexMirror(credentials,host)
157        if action == "setcname":
158                lliurexmirror.setCname()
159        elif action == "rundebmirror":
160                lliurexmirror.runDebmirror(args.get(0))
161        elif action == "isalive":
162                lliurexmirror.isAlive()
163        elif action == "getmirrorarchitecture":
164                lliurexmirror.getMirrorArchitecture(args.get(0))
165        elif action == "setmirrorarchitecture":
166                lliurexmirror.setMirrorArchitecture(args.pop(0),args.all)
167        elif action == "getmirrororig":
168                lliurexmirror.getMirrorOrig(args.get(0))
169        elif action == "setmirrororig":
170                lliurexmirror.setMirrorOrig(args.get(0),args.get(1))
171        elif action == "getchecksumvalidation":
172                lliurexmirror.getChecksumValidation(args.get(0))
173        elif action == "setchecksumvalidation":
174                checkvalue = 1 if args.get(1) == "True" else 0
175                lliurexmirror.setChecksumValidation(args.get(0),checkvalue)
176        elif action == "getpercentage":
177                lliurexmirror.getPercentage()
178        elif action == "enablewebserverforpath":
179                lliurexmirror.enableWebserverForPath(args.get(0))
180        elif action == "stopwebserver":
181                lliurexmirror.stopWebserver()
182
183
Note: See TracBrowser for help on using the repository browser.