From a6ef07140242e17ba27af8ccaaa60a3d3f471dee Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 14 Jul 2017 14:19:42 +0200 Subject: [PATCH] header-zone: refactor hook_config_destroy We now just bring the hook down, execute hook_destroy which can be not empty inside the hook, because it is defined in src/header-config. After this we delete the config file. Fixes: #11416 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- src/header-config | 4 ++++ src/header-zone | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/header-config b/src/header-config index e3c64233..868dce49 100644 --- a/src/header-config +++ b/src/header-config @@ -76,3 +76,7 @@ hook_edit() { exit ${EXIT_OK} } + +hook_destroy() { + return ${EXIT_OK} +} diff --git a/src/header-zone b/src/header-zone index 219b0d62..189fbc38 100644 --- a/src/header-zone +++ b/src/header-zone @@ -243,7 +243,21 @@ hook_config_destroy() { local hook=$(zone_config_get_hook_from_id ${zone} ${id}) assert isset hook - hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@" + # First we bring the hook down + hook_config_cmd "down" "${zone}" "${hook}" "${hook}.${id}" + + # If a hook_destroy function is implemented in the hook this function will be executed. + # If not a empty defined in header-config is executed. + if ! hook_config_cmd "destroy" "${zone}" "${hook}" "${hook}.${id}" "$@"; then + + # A better error message should printed inside the hook. + # We will not bring the config up because we do not know if it is safe or if some parts are already destroyed. + log ERROR "Could not destroy config with the follwoing id: ${id}" + return ${EXIT_ERROR} + fi + + # Now we delete the config of the zone + zone_config_settings_destroy "${zone}" "${hook}.${id}" } hook_config_edit() { -- 2.47.3