Add mgm scheduler
This commit is contained in:
parent
014d49f40e
commit
1ccc3cb3fc
@ -47,4 +47,5 @@ nova_secgroup = default
|
|||||||
haproxy_image = 12345
|
haproxy_image = 12345
|
||||||
api_servers = 10.0.0.1:1234 10.0.0.2:4321
|
api_servers = 10.0.0.1:1234 10.0.0.2:4321
|
||||||
nodes = 1
|
nodes = 1
|
||||||
interval = 5
|
check_interval = 5
|
||||||
|
sync_interval = 60
|
||||||
|
@ -19,6 +19,7 @@ import pwd
|
|||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import sched
|
||||||
|
|
||||||
from libra.common.options import Options, setup_logging
|
from libra.common.options import Options, setup_logging
|
||||||
|
|
||||||
@ -36,14 +37,29 @@ class Server(object):
|
|||||||
signal.signal(signal.SIGINT, self.exit_handler)
|
signal.signal(signal.SIGINT, self.exit_handler)
|
||||||
signal.signal(signal.SIGTERM, self.exit_handler)
|
signal.signal(signal.SIGTERM, self.exit_handler)
|
||||||
|
|
||||||
while 1:
|
# make initial sync and then run scheduler
|
||||||
|
sc = sched.scheduler(time.time, time.sleep)
|
||||||
self.logger.info(
|
self.logger.info(
|
||||||
'Sleeping for {minutes} minutes'
|
'Scheduling node sync for {sync} minutes'
|
||||||
.format(minutes=self.args.interval)
|
.format(sync=self.args.sync_interval)
|
||||||
)
|
)
|
||||||
time.sleep(self.args.interval)
|
self.logger.info(
|
||||||
|
'and node check for {check} minutes'
|
||||||
|
.format(check=self.args.check_interval)
|
||||||
|
)
|
||||||
|
self.sync_nodes(sc)
|
||||||
|
self.check_nodes(sc)
|
||||||
|
sc.run()
|
||||||
|
|
||||||
self.shutdown(False)
|
def check_nodes(self, sc):
|
||||||
|
""" check if known nodes are used """
|
||||||
|
self.logger.info('Checking if new nodes are needed')
|
||||||
|
sc.enter(60 * self.args.check_interval, 2, self.check_nodes, (sc, ))
|
||||||
|
|
||||||
|
def sync_nodes(self, sc):
|
||||||
|
""" sync list of known nodes """
|
||||||
|
self.logger.info('Syncing internal nodes list')
|
||||||
|
sc.enter(60 * self.args.sync_interval, 1, self.sync_nodes, (sc, ))
|
||||||
|
|
||||||
def exit_handler(self, signum, frame):
|
def exit_handler(self, signum, frame):
|
||||||
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user