Commit 75e766c1 authored by Nicolas Wavrant's avatar Nicolas Wavrant

addresiliency: now possible to register a hook to run after takeover

parent fb8912e8
...@@ -54,6 +54,7 @@ class Recipe(GenericSlapRecipe): ...@@ -54,6 +54,7 @@ class Recipe(GenericSlapRecipe):
'software': slap_connection['software-release-url'], 'software': slap_connection['software-release-url'],
'namebase': self.parameter_dict['namebase'], 'namebase': self.parameter_dict['namebase'],
'takeover_triggered_file_path': self.options['takeover-triggered-file-path'], 'takeover_triggered_file_path': self.options['takeover-triggered-file-path'],
'post_takeover_hook': self.options.get('post-takeover-hook', ''),
}) })
path_list.append(takeover_wrapper) path_list.append(takeover_wrapper)
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import logging import logging
import time import time
import traceback import traceback
import subprocess
import slapos import slapos
from slapos.slap.slap import NotFoundError from slapos.slap.slap import NotFoundError
...@@ -11,8 +12,8 @@ logging.basicConfig(level=logging.DEBUG) ...@@ -11,8 +12,8 @@ logging.basicConfig(level=logging.DEBUG)
def takeover(server_url, key_file, cert_file, computer_guid, def takeover(server_url, key_file, cert_file, computer_guid,
partition_id, software_release, namebase, partition_id, software_release, namebase,
winner_instance_suffix = None, winner_instance_suffix=None, takeover_triggered_file_path=None,
takeover_triggered_file_path=None): post_takeover_hook=None):
""" """
This function does This function does
...@@ -78,6 +79,12 @@ def takeover(server_url, key_file, cert_file, computer_guid, ...@@ -78,6 +79,12 @@ def takeover(server_url, key_file, cert_file, computer_guid,
# Create "lock" file preventing equeue to run import scripts # Create "lock" file preventing equeue to run import scripts
# XXX hardcoded # XXX hardcoded
open(takeover_triggered_file_path, 'w').write('') open(takeover_triggered_file_path, 'w').write('')
# Run post takeover hook
if post_takeover_hook:
log.debug('Running post-takeover hook')
subprocess.call(post_takeover_hook.split(' '))
def run(args): def run(args):
slapos.recipe.addresiliency.takeover.takeover(server_url = args.pop('server_url'), slapos.recipe.addresiliency.takeover.takeover(server_url = args.pop('server_url'),
...@@ -87,5 +94,6 @@ def run(args): ...@@ -87,5 +94,6 @@ def run(args):
partition_id = args.pop('partition_id'), partition_id = args.pop('partition_id'),
software_release = args.pop('software'), software_release = args.pop('software'),
namebase = args.pop('namebase'), namebase = args.pop('namebase'),
takeover_triggered_file_path = args.pop('takeover_triggered_file_path')) takeover_triggered_file_path = args.pop('takeover_triggered_file_path'),
post_takeover_hook = args.pop('post_takeover_hook'))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment