mirror of
https://github.com/Pardus-LiderAhenk/ahenk
synced 2024-11-10 15:52:22 +03:00
timeout function added for waiting get policies response and some functions formatted
This commit is contained in:
parent
98dde0a3d1
commit
fa9c2fc104
1 changed files with 36 additions and 15 deletions
|
@ -29,6 +29,8 @@ from base.registration.Registration import Registration
|
||||||
from base.scheduler.scheduler_factory import SchedulerFactory
|
from base.scheduler.scheduler_factory import SchedulerFactory
|
||||||
from base.system.system import System
|
from base.system.system import System
|
||||||
from base.task.TaskManager import TaskManager
|
from base.task.TaskManager import TaskManager
|
||||||
|
from base.timer.setup_timer import SetupTimer
|
||||||
|
from base.timer.timer import Timer
|
||||||
from base.util.util import Util
|
from base.util.util import Util
|
||||||
|
|
||||||
ahenkdaemon = None
|
ahenkdaemon = None
|
||||||
|
@ -118,13 +120,17 @@ class AhenkDeamon(BaseDaemon):
|
||||||
def check_registration(self):
|
def check_registration(self):
|
||||||
max_attemp_number = int(System.Hardware.Network.interface_size()) * 3
|
max_attemp_number = int(System.Hardware.Network.interface_size()) * 3
|
||||||
logger = Scope.getInstance().getLogger()
|
logger = Scope.getInstance().getLogger()
|
||||||
|
registration = Scope.getInstance().getRegistration()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while Scope.getInstance().getRegistration().is_registered() is False:
|
while registration.is_registered() is False:
|
||||||
|
# while Scope.getInstance().getRegistration().is_registered() is False:
|
||||||
max_attemp_number -= 1
|
max_attemp_number -= 1
|
||||||
logger.debug('[AhenkDeamon] Ahenk is not registered. Attempting for registration')
|
logger.debug('[AhenkDeamon] Ahenk is not registered. Attempting for registration')
|
||||||
# TODO 'Could not reach Registration response from Lider. Be sure Lider is running and it is connected to XMPP server!'
|
# TODO 'Could not reach Registration response from Lider. Be sure Lider is running and it is connected to XMPP server!'
|
||||||
Scope.getInstance().getRegistration().registration_request()
|
|
||||||
|
registration.registration_request()
|
||||||
|
# Scope.getInstance().getRegistration().registration_request()
|
||||||
if max_attemp_number < 0:
|
if max_attemp_number < 0:
|
||||||
logger.warning('[AhenkDeamon] Number of Attempting for registration is over')
|
logger.warning('[AhenkDeamon] Number of Attempting for registration is over')
|
||||||
self.registration_failed()
|
self.registration_failed()
|
||||||
|
@ -161,6 +167,17 @@ class AhenkDeamon(BaseDaemon):
|
||||||
# TODO destroy plugin manager here
|
# TODO destroy plugin manager here
|
||||||
self.init_plugin_manager()
|
self.init_plugin_manager()
|
||||||
|
|
||||||
|
def init_signal_listener(self):
|
||||||
|
try:
|
||||||
|
signal.signal(signal.SIGALRM, self.run_command_from_fifo)
|
||||||
|
self.logger.info('[AhenkDeamon] Signal handler is set up')
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.error('[AhenkDeamon] Signal handler could not set up. Error Message: {} '.format(str(e)))
|
||||||
|
|
||||||
|
def init_pid_file(self):
|
||||||
|
with open(System.Ahenk.pid_path(), 'w+') as f:
|
||||||
|
f.write(str(os.getpid()))
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
print('Ahenk running...')
|
print('Ahenk running...')
|
||||||
|
|
||||||
|
@ -175,6 +192,9 @@ class AhenkDeamon(BaseDaemon):
|
||||||
# Logger must be second
|
# Logger must be second
|
||||||
self.logger = self.init_logger()
|
self.logger = self.init_logger()
|
||||||
|
|
||||||
|
self.init_pid_file()
|
||||||
|
self.logger.info('[AhenkDeamon] Pid file was created')
|
||||||
|
|
||||||
self.init_event_manager()
|
self.init_event_manager()
|
||||||
self.logger.info('[AhenkDeamon] Event Manager was set')
|
self.logger.info('[AhenkDeamon] Event Manager was set')
|
||||||
|
|
||||||
|
@ -203,7 +223,10 @@ class AhenkDeamon(BaseDaemon):
|
||||||
self.logger.info('[AhenkDeamon] Ahenk was registered')
|
self.logger.info('[AhenkDeamon] Ahenk was registered')
|
||||||
|
|
||||||
self.messenger = self.init_messenger()
|
self.messenger = self.init_messenger()
|
||||||
self.logger.info('[AhenkDeamon] Messager was set')
|
self.logger.info('[AhenkDeamon] Messenger was set')
|
||||||
|
|
||||||
|
self.init_signal_listener()
|
||||||
|
self.logger.info('[AhenkDeamon] Signals listeners was set')
|
||||||
|
|
||||||
Agreement().agreement_contract_update()
|
Agreement().agreement_contract_update()
|
||||||
|
|
||||||
|
@ -215,15 +238,6 @@ class AhenkDeamon(BaseDaemon):
|
||||||
|
|
||||||
self.logger.info('[AhenkDeamon] LDAP registration of Ahenk is completed')
|
self.logger.info('[AhenkDeamon] LDAP registration of Ahenk is completed')
|
||||||
|
|
||||||
with open(System.Ahenk.pid_path(), 'w+') as config_file:
|
|
||||||
config_file.write(str(os.getpid()))
|
|
||||||
|
|
||||||
try:
|
|
||||||
signal.signal(signal.SIGALRM, self.run_command_from_fifo)
|
|
||||||
self.logger.info('[AhenkDeamon] Signal handler is set up')
|
|
||||||
except Exception as e:
|
|
||||||
self.logger.error('[AhenkDeamon] Signal handler could not set up. Error Message: {} '.format(str(e)))
|
|
||||||
|
|
||||||
self.messenger.send_direct_message('test')
|
self.messenger.send_direct_message('test')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
@ -253,6 +267,7 @@ class AhenkDeamon(BaseDaemon):
|
||||||
messenger = scope.getMessenger()
|
messenger = scope.getMessenger()
|
||||||
conf_manager = scope.getConfigurationManager()
|
conf_manager = scope.getConfigurationManager()
|
||||||
db_service = scope.getDbService()
|
db_service = scope.getDbService()
|
||||||
|
execute_manager = scope.getExecutionManager()
|
||||||
|
|
||||||
self.logger.debug('[AhenkDeamon] Signal handled')
|
self.logger.debug('[AhenkDeamon] Signal handled')
|
||||||
self.logger.debug('[AhenkDeamon] Signal is :{}'.format(str(json_data['event'])))
|
self.logger.debug('[AhenkDeamon] Signal is :{}'.format(str(json_data['event'])))
|
||||||
|
@ -304,7 +319,7 @@ class AhenkDeamon(BaseDaemon):
|
||||||
agreement_choice = True
|
agreement_choice = True
|
||||||
|
|
||||||
if agreement_choice is True:
|
if agreement_choice is True:
|
||||||
db_service.delete('session', 'username=\'{}\''.format(username))
|
db_service.delete('session', 'username=\'{0}\''.format(username))
|
||||||
|
|
||||||
self.logger.info('[AhenkDeamon] Display is {0}, desktop env is {1} for {2}'.format(display, desktop, username))
|
self.logger.info('[AhenkDeamon] Display is {0}, desktop env is {1} for {2}'.format(display, desktop, username))
|
||||||
|
|
||||||
|
@ -314,11 +329,19 @@ class AhenkDeamon(BaseDaemon):
|
||||||
plugin_manager.process_mode('safe', username)
|
plugin_manager.process_mode('safe', username)
|
||||||
plugin_manager.process_mode('login', username)
|
plugin_manager.process_mode('login', username)
|
||||||
|
|
||||||
|
kward = {}
|
||||||
|
kward['timeout_args'] = username
|
||||||
|
kward['checker_args'] = username
|
||||||
|
SetupTimer.start(Timer(timeout=System.Ahenk.get_policy_timeout(), timeout_function=execute_manager.execute_default_policy, checker_func=execute_manager.is_policy_executed, kwargs=kward))
|
||||||
|
|
||||||
|
self.logger.info('[AhenkDeamon] Requesting updated policies from Lider. If Ahenk could not reach updated policies in {0} sec, booked policies will be executed'.format(System.Ahenk.get_policy_timeout()))
|
||||||
messenger.send_direct_message(get_policy_message)
|
messenger.send_direct_message(get_policy_message)
|
||||||
|
|
||||||
elif 'logout' == str(json_data['event']):
|
elif 'logout' == str(json_data['event']):
|
||||||
username = json_data['username']
|
username = json_data['username']
|
||||||
db_service.delete('session', 'username=\'{}\''.format(username))
|
db_service.delete('session', 'username=\'{}\''.format(username))
|
||||||
|
execute_manager.remove_user_executed_policy_dict(username)
|
||||||
|
# TODO delete all user records while initializing
|
||||||
self.logger.info('[AhenkDeamon] logout event is handled for user: {}'.format(username))
|
self.logger.info('[AhenkDeamon] logout event is handled for user: {}'.format(username))
|
||||||
logout_message = message_manager.logout_msg(username)
|
logout_message = message_manager.logout_msg(username)
|
||||||
messenger.send_direct_message(logout_message)
|
messenger.send_direct_message(logout_message)
|
||||||
|
@ -372,11 +395,9 @@ class AhenkDeamon(BaseDaemon):
|
||||||
while self.running_plugin() is False:
|
while self.running_plugin() is False:
|
||||||
self.logger.debug('[AhenkDeamon] Waiting for progress of plugins...')
|
self.logger.debug('[AhenkDeamon] Waiting for progress of plugins...')
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
ahenkdaemon.stop()
|
ahenkdaemon.stop()
|
||||||
else:
|
else:
|
||||||
self.logger.error('[AhenkDeamon] Unknown command error. Command:' + json_data['event'])
|
self.logger.error('[AhenkDeamon] Unknown command error. Command:' + json_data['event'])
|
||||||
|
|
||||||
self.logger.debug('[AhenkDeamon] Processing of handled event is completed')
|
self.logger.debug('[AhenkDeamon] Processing of handled event is completed')
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue