summaryrefslogtreecommitdiffstats
path: root/GitAutoDeploy.py
diff options
context:
space:
mode:
authorJ.A. Nache <nache.nache@gmail.com>2014-09-19 12:56:41 +0200
committerJ.A. Nache <nache.nache@gmail.com>2014-09-19 12:56:41 +0200
commit0e23c2a45f69cacdf51562135ae0bece1e73e725 (patch)
tree36b6934ba498c50051af6a7853b2b8edb3638661 /GitAutoDeploy.py
parentcb60d28ad92a954fe106e9be69353c046c306a75 (diff)
downloadGit-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.zip
Git-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.tar.gz
Git-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.tar.bz2
kill -HUP now restart server, socket error handler, pid file generator
Diffstat (limited to 'GitAutoDeploy.py')
-rwxr-xr-xGitAutoDeploy.py48
1 files changed, 39 insertions, 9 deletions
diff --git a/GitAutoDeploy.py b/GitAutoDeploy.py
index 84ebd27..72d2956 100755
--- a/GitAutoDeploy.py
+++ b/GitAutoDeploy.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import json, urlparse, sys, os, signal
+import json, urlparse, sys, os, signal, socket
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from subprocess import call
@@ -114,32 +114,62 @@ class GitAutoDeployMain:
GitAutoDeploy.quiet = True
if(arg == '-q' or arg == '--quiet'):
GitAutoDeploy.quiet = True
+
if(GitAutoDeploy.daemon):
pid = os.fork()
if(pid != 0):
sys.exit()
os.setsid()
+ self.create_pidfile()
+
if(not GitAutoDeploy.quiet):
print 'Github & Gitlab Autodeploy Service v 0.1 started'
else:
print 'Github & Gitlab Autodeploy Service v 0.1 started in daemon mode'
- self.server = HTTPServer(('', GitAutoDeploy.getConfig()['port']), GitAutoDeploy)
- self.server.serve_forever()
+ try:
+ self.server = HTTPServer(('', GitAutoDeploy.getConfig()['port']), GitAutoDeploy)
+ self.server.serve_forever()
+ except socket.error, e:
+ print "Error on socket: %s" % e
+ sys.exit(1)
- def close(self, signum, frame):
- if(not GitAutoDeploy.quiet):
- print '\nGoodbye'
+ def create_pidfile(self):
+ mainpid = os.getpid()
+ f = open(GitAutoDeploy.getConfig()['pidfilepath'], 'w')
+ f.write(str(mainpid))
+ f.close()
+
+ def remove_pidfile(self):
+ os.remove(GitAutoDeploy.getConfig()['pidfilepath'])
+ def stop(self):
if(self.server is not None):
self.server.socket.close()
- sys.exit()
+
+ def exit(self):
+ if(not GitAutoDeploy.quiet):
+ print '\nGoodbye'
+ self.remove_pidfile()
+ sys.exit(0)
+
+ def signal_handle(self, signum, frame):
+ if(signum == 1):
+ self.stop()
+ self.run()
+ elif(signum == 2):
+ print 'Keyboard Interrupt!!!'
+ self.stop()
+ self.exit()
+ else:
+ self.stop()
+ self.exit()
if __name__ == '__main__':
gadm = GitAutoDeployMain()
- signal.signal(signal.SIGHUP, gadm.close)
- signal.signal(signal.SIGINT, gadm.close)
+ signal.signal(signal.SIGHUP, gadm.signal_handle)
+ signal.signal(signal.SIGINT, gadm.signal_handle)
gadm.run()