[installation] Init with inital config for global
This commit is contained in:
69
etc/init/caps.py
Normal file
69
etc/init/caps.py
Normal file
@ -0,0 +1,69 @@
|
||||
# SeisComP init script for CAPS
|
||||
# Code is required to be Python 2 and 3 compatible
|
||||
# pylint: disable=consider-using-f-string, unspecified-encoding
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import seiscomp.kernel
|
||||
|
||||
|
||||
class Module(seiscomp.kernel.Module):
|
||||
def __init__(self, env):
|
||||
seiscomp.kernel.Module.__init__(self, env, env.moduleName(__file__))
|
||||
self.killTimeout = 60
|
||||
self.reloadTimeout = 60
|
||||
|
||||
def updateConfigProxy(self):
|
||||
return "trunk"
|
||||
|
||||
def updateConfig(self):
|
||||
# By default the "trunk" module must be configured to write the
|
||||
# bindings into the database
|
||||
return 0
|
||||
|
||||
def supportsAliases(self):
|
||||
# The default handler does not support aliases
|
||||
return True
|
||||
|
||||
def reload(self):
|
||||
if not self.isRunning():
|
||||
self.env.log("{} is not running".format(self.name))
|
||||
return 1
|
||||
|
||||
self.env.log("reloading {}".format(self.name))
|
||||
|
||||
lockfile = self.env.lockFile(self.name)
|
||||
reloadfile = os.path.join(
|
||||
os.path.dirname(lockfile), "{}.reload".format(self.name)
|
||||
)
|
||||
|
||||
# Open pid file
|
||||
with open(lockfile, "r") as f:
|
||||
# Try to read the pid
|
||||
pid = int(f.readline())
|
||||
|
||||
# Create empty reload file to be removed by CAPS server after
|
||||
# reload is complete.
|
||||
try:
|
||||
with open(reloadfile, "a"):
|
||||
pass
|
||||
except OSError as e:
|
||||
self.env.log(
|
||||
"could not create reload file {}: {}".format(reloadfile, e)
|
||||
)
|
||||
return 1
|
||||
|
||||
# Send SIGHUP
|
||||
subprocess.call("kill -s USR1 %d" % pid, shell=True)
|
||||
|
||||
# wait for reload file to disappear
|
||||
for _ in range(0, int(self.reloadTimeout * 5)):
|
||||
time.sleep(0.2)
|
||||
if not os.path.isfile(reloadfile):
|
||||
return 0
|
||||
|
||||
self.env.log("timeout exceeded")
|
||||
|
||||
return 1
|
||||
Reference in New Issue
Block a user