source: n4d-shutdowner-server/trunk/fuentes/install-files/usr/share/n4d/python-plugins/ShutdownerManager.py @ 5390

Last change on this file since 5390 was 5390, checked in by hectorgh, 19 months ago

wip

File size: 3.2 KB
Line 
1
2import sys
3import os
4import xmlrpclib
5import copy
6import time
7
8class Shutdowner:
9       
10
11        def __init__(self):
12               
13                self.cron_file="/etc/cron.d/lliurexshutdown"
14               
15        #def init
16
17       
18        def startup(self,options):
19               
20                self.internal_variable=copy.deepcopy(objects["VariablesManager"].get_variable("SHUTDOWNER"))
21               
22                if self.internal_variable==None:
23                        try:
24
25                                self.initialize_variable()
26                                objects["VariablesManager"].add_variable("SHUTDOWNER",copy.deepcopy(self.internal_variable),"","Shutdowner internal variable","lliurex-shutdowner")
27                               
28                        except Exception as e:
29                                print e
30       
31                self.check_server_shutodown()
32
33        #def startup
34
35       
36        def initialize_variable(self):
37               
38                self.internal_variable={}
39                self.internal_variable["cron_enabled"]=False
40                self.internal_variable["cron_content"]=""
41                self.internal_variable["shutdown_signal"]=0.0
42                self.internal_variable["cron_values"]={}
43                self.internal_variable["cron_values"]["hour"]=0
44                self.internal_variable["cron_values"]["minute"]=0
45                self.internal_variable["cron_values"]["weekdays"]=[True,True,True,True,True]
46                self.internal_variable["cron_values"]["server_shutdown"]=False
47               
48        #def initialize_variable
49
50
51        def check_variable(self,variable):
52
53                try:
54                        if not type(variable)==dict:
55                                return False
56                        if not type(variable["cron_enabled"])==bool:
57                                return False
58                        if not type(variable["cron_content"])==str:
59                                return False
60                        if not type(variable["shutdown_signal"])==float:
61                                return False
62                        if not type(variable["cron_values"])==dict:
63                                return False
64                        if not type(variable["cron_values"]["hour"])==int:
65                                return False
66                        if not type(variable["cron_values"]["minute"])==int:
67                                return False
68                        if not type(variable["cron_values"]["server_shutdown"])==bool:
69                                return False
70                        if not type(variable["cron_values"]["weekdays"])==list:
71                                if len(variable["cron_values"]["weekdays"])!=5:
72                                        return False
73                except:
74                        return False
75
76                return True
77
78        #def check_variable
79
80       
81        def manual_client_list_check(self):
82               
83                objects["VariablesManager"].manual_client_list_check()
84                return True
85               
86        #def manual_client_list_check
87
88       
89        def is_cron_enabled(self):
90               
91                ret={}
92                ret["status"]=self.internal_variable["cron_enabled"]
93                ret["msg"]=self.internal_variable["cron_content"]
94               
95                return ret
96               
97        #def is_cron_enabled
98       
99
100        def update_shutdown_signal(self):
101               
102                self.internal_variable["shutdown_signal"]=time.time()
103                self.save_variable()
104               
105        #def update_shutdown_signal
106
107       
108        def save_variable(self,variable=None):
109
110                if variable==None:
111                        variable=copy.deepcopy(self.internal_variable)
112                else:
113                        if not self.check_variable(variable):
114                                return {"status":False,"msg":"Variable does not have the expected structure"}
115                        self.internal_variable=copy.deepcopy(variable)
116               
117                objects["VariablesManager"].set_variable("SHUTDOWNER",variable)
118                self.check_server_shutodown()
119       
120                return {"status":True,"msg":""}
121               
122        #def save_variable
123
124       
125        def check_server_shutodown(self):
126                       
127                if self.internal_variable["cron_enabled"] and self.internal_variable["cron_values"]["server_shutdown"]:
128                        f=open(self.cron_file,"w")
129                        f.write(self.internal_variable["cron_content"])
130                        f.close()
131                else:
132                        if os.path.exists(self.cron_file):
133                                os.remove(self.cron_file)
134       
135                return True
136               
137        #def check_server_shutdown
Note: See TracBrowser for help on using the repository browser.