From a83949130c00dfa2bcd427d3f34ef62703d73c01 Mon Sep 17 00:00:00 2001 From: Hui Xiang Date: Mon, 22 Dec 2014 19:31:18 +0800 Subject: [PATCH] Refactor a bit. --- hooks/quantum_hooks.py | 8 ++++-- hooks/quantum_utils.py | 65 ++++++++++++++++++++++++++---------------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/hooks/quantum_hooks.py b/hooks/quantum_hooks.py index b560f2fc..a6772da6 100755 --- a/hooks/quantum_hooks.py +++ b/hooks/quantum_hooks.py @@ -50,7 +50,7 @@ from quantum_utils import ( cache_env_data, get_dns_host, get_external_agent_f, - install_legacy_ha_files + update_legacy_ha_files ) hooks = Hooks() @@ -76,7 +76,7 @@ def install(): sys.exit(1) # Legacy HA for Icehouse - install_legacy_ha_files() + update_legacy_ha_files() @hooks.hook('config-changed') @@ -106,12 +106,14 @@ def config_changed(): else: apt_purge('neutron-l3-agent') + update_legacy_ha_files() + @hooks.hook('upgrade-charm') def upgrade_charm(): install() config_changed() - install_legacy_ha_files(update=True) + update_legacy_ha_files(update=True) @hooks.hook('shared-db-relation-joined') diff --git a/hooks/quantum_utils.py b/hooks/quantum_utils.py index 375602d5..2d272420 100644 --- a/hooks/quantum_utils.py +++ b/hooks/quantum_utils.py @@ -152,6 +152,20 @@ EARLY_PACKAGES = { } LEGACY_HA_TEMPLATE_FILES = 'files' +LEGACY_FILES_MAP = { + 'monitor_neutron_ha.sh': { + 'path': '/usr/lib/ocf/resource.d/canonical', + 'permission': stat.S_IEXEC + }, + 'monitor.py': { + 'path': '/usr/local/bin/', + 'permission': stat.S_IEXEC + }, + 'monitor.conf': { + 'path': '/tmp', + 'permission': None + } +} def get_early_packages(): @@ -629,33 +643,24 @@ def copy_file(source_dir, des_dir, f, f_mod=None, update=False): raise +def remove_file(des_dir, f): + if not os.path.isdir(des_dir): + log('Directory %s already removed.' % des_dir) + + f = os.path.join(des_dir, f) + if os.path.isfile(f): + try: + os.remove(f) + except IOError: + log('Failed to remove file %s.' % f, level=ERROR) + + def get_external_agent_f(): agent = 'monitor_neutron_ha.sh' exec_dir = '/usr/lib/ocf/resource.d/canonical' return os.path.join(exec_dir, agent) -def init_external_agent_f(update=False): - agent = 'monitor_neutron_ha.sh' - exec_dir = '/usr/lib/ocf/resource.d/canonical' - copy_file(LEGACY_HA_TEMPLATE_FILES, exec_dir, - agent, stat.S_IEXEC, update=update) - - -def init_monitor_daemon(update=False): - service = 'monitor.py' - exec_dir = '/usr/local/bin/' - copy_file(LEGACY_HA_TEMPLATE_FILES, exec_dir, - service, stat.S_IEXEC, update=update) - - -def init_monitor_conf_files(update=False): - conf = 'monitor.conf' - exec_dir = '/tmp' - copy_file(LEGACY_HA_TEMPLATE_FILES, exec_dir, - conf, update=update) - - def init_canonical_ping_file(update=False): f = 'ping' exec_dir = '/usr/lib/ocf/resource.d/canonical' @@ -664,11 +669,21 @@ def init_canonical_ping_file(update=False): def install_legacy_ha_files(update=False): + for f, p in LEGACY_FILES_MAP: + copy_file(LEGACY_HA_TEMPLATE_FILES, p['path'], + p['permission'], update=update) + + +def remove_legacy_ha_files(): + for f, p in LEGACY_FILES_MAP: + remove_file(p['path'], f) + + +def update_legacy_ha_files(update=False): if config('ha-legacy-mode'): - init_external_agent_f(update=update) - init_monitor_daemon(update=update) - init_monitor_conf_files(update=update) - #init_canonical_ping_file() + install_legacy_ha_files(update=update) + else: + remove_legacy_ha_files() def cache_env_data():