source: n4d-shutdowner-client/trunk/fuentes/install-files/usr/share/n4d/python-plugins/ShutdownerClient.py @ 5534

Last change on this file since 5534 was 5534, checked in by hectorgh, 2 years ago

making sure SHUTDOWN var is read at boot time

File size: 1.3 KB
Line 
1import os
2import threading
3import time
4
5
6class ShutdownerClient:
7
8        def __init__(self):
9               
10                self.cron_file="/etc/cron.d/lliurex-shutdowner"
11
12        #def init
13       
14        def startup(self,options):
15               
16                t=threading.Thread(target=self._startup)
17                t.daemon=True
18                t.start()
19               
20        #def startup
21       
22        def _startup(self):
23               
24                objects["VariablesManager"].register_trigger("SHUTDOWNER","ShutdownerClient",self.shutdowner_trigger)
25               
26                # Making sure we're able to read SHUTDOWNER var from server
27                tries=10
28                for x in range(0,tries):
29               
30                        self.shutdowner_var=objects["VariablesManager"].get_variable("SHUTDOWNER")
31                        if self.shutdowner_var != None:
32                                self.shutdowner_trigger(self.shutdowner_var)
33                                break
34                        else:
35                                time.sleep(1)
36                               
37                if self.shutdowner_var == None:
38                        self.shutdowner_var={}
39                        self.shutdowner_var["shutdown_signal"]=0
40               
41        #def startup
42       
43        def shutdowner_trigger(self,value):
44               
45                if value!=None:
46
47                        if value["cron_enabled"]:
48                                if value["cron_content"]!=None:
49                                        f=open(self.cron_file,"w")
50                                        f.write(value["cron_content"])
51                                        f.close()
52                        else:
53                                if os.path.exists(self.cron_file):
54                                        os.remove(self.cron_file)
55                       
56                        if value["shutdown_signal"] > self.shutdowner_var["shutdown_signal"]:
57                                self.shutdown()
58               
59        #def server_trigger
60       
61       
62        def shutdown(self):
63               
64                os.system('shutdown -h now')
65               
66        #def shutdownlist
Note: See TracBrowser for help on using the repository browser.