source: llx-pool-tools/trunk/fuentes/install-files/usr/sbin/llx-pool @ 1275

Last change on this file since 1275 was 1275, checked in by hectorgh, 4 years ago

adding project files

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1#!/usr/bin/env python
2
3import os
4import glob
5import sys
6
7import signal
8signal.signal(signal.SIGINT, signal.SIG_DFL)
9
10from termcolor import colored
11
12
13CURRENT_DISTRO="trusty"
14
15class LliurexPool:
16       
17        def __init__(self):
18
19                self.actions_dir="/usr/share/llx-pool/actions/%s/*"%CURRENT_DISTRO
20                self.parse_actions(self.actions_dir)
21               
22        #def init
23       
24       
25        def check_root(self):
26               
27                try:
28                        f=open("/run/llx-pool.pid","w")
29                        f.write(str(os.getpid()))
30                        f.close()
31                        return True
32                except:
33                        return False
34               
35        #def check_root
36       
37       
38        def parse_actions(self,actions_dir):
39               
40                actions=glob.glob(actions_dir)
41                self.actions_dir={}
42                       
43                for action in actions:
44                       
45                        f=open(action)
46                        lines=f.readlines()
47                        f.close()
48                        section="UNKOWN"
49                        weight=999
50                        comment=""
51                        for line in lines:
52                                if "SECTION" in line:
53                                        section=line.split("=")[1].strip("\n").replace('"',"")
54                                if "WEIGHT" in line:
55                                        weight=int(line.split("=")[1].strip("\n"))
56                                if "COMMENT" in line:
57                                        comment=line.split("=")[1].strip("\n").replace('"',"")
58                                        break
59                                       
60                        if section not in self.actions_dir:
61                                self.actions_dir[section]={}
62                       
63                        while weight in self.actions_dir[section]:
64                                weight+=1
65                       
66                        self.actions_dir[section][weight]=(comment,action)
67               
68               
69        #def parse_actions
70       
71        def run(self):
72               
73               
74                if not self.check_root():
75                        print("You need administration privileges to run this program. Exiting...")
76                        sys.exit(1)
77               
78               
79                print("")
80                print( colored("# LliureX Pool ","blue"))
81                print(colored("===============","cyan"))
82               
83                self.welcome_step()
84       
85        def welcome_step(self):
86       
87                available_options=["0","1","2","3","e","q"]
88       
89                i=None
90       
91                while i not in available_options:
92                        print("")
93                       
94                        print(colored("llx-pool> ","green",attrs=["bold"]) + "What do you want to do?")
95                        print("")
96                        print("\t[0] Update lists operations")
97                        print("")
98                        print("\t[1] Check possible updates operations")
99                        print("\t[2] Pool operations")
100                        print("\t[3] Synchronization operations")
101                        print("")
102                        print("\t[e/q] Exit")
103                        print("")
104                       
105                        i=raw_input(colored("llx-pool> ","green",attrs=["bold"]))
106               
107                if i=="e" or i=="q":
108                        sys.exit(0)
109               
110                if i=="1":
111                        self.show_operations("check")
112                if i=="2":
113                        self.show_operations("update")
114                if i=="3":
115                        self.show_operations("sync")
116                if i=="0":
117                        self.show_operations("lists")
118                       
119                       
120       
121        #def step0
122       
123        def show_operations(self,section):
124               
125                count=1
126               
127                available_options=["e","g","q"]
128               
129                actions=[]
130               
131               
132                for w in sorted(self.actions_dir[section]):
133                        actions.append(self.actions_dir[section][w])
134                        available_options.append(str(count))
135                        count+=1
136                       
137               
138                input=None
139               
140                while input not in available_options:
141               
142                        print("")
143                       
144                        count=0
145                        for action in actions:
146                                print("\t[%s] %s"%(count+1,actions[count][0]))
147                                count+=1
148                       
149                        print("")
150                        print("\t[g] Go back")
151                        print("\t[e/q] Exit LliureX Pool")
152                        print("")
153                       
154                        input=raw_input(colored("llx-pool> ","green",attrs=["bold"]))
155                       
156                if input=="e" or input=="q":
157                        sys.exit(0)
158                       
159                if input=="g":
160                        self.welcome_step()
161                       
162                       
163                cmd=actions[int(input)-1][1]
164                os.system(cmd)
165               
166                self.welcome_step()
167
168        #def show_
169       
170       
171#class LP
172
173if __name__=="__main__":
174       
175        lp=LliurexPool()
176        lp.run()
Note: See TracBrowser for help on using the repository browser.