Skip to content
Snippets Groups Projects
Commit ba7d758f authored by David Vasek's avatar David Vasek Committed by Daniel Salzman
Browse files

ctl: zone-backup -- refactor global catalog zones backup

Also, the "backup/restore init failed" error message should always reflect reality.
parent 6d31076e
No related branches found
No related tags found
No related merge requests found
Pipeline #76156 passed
This commit is part of merge request !1237. Comments created here will be created in the context of that merge request.
...@@ -432,14 +432,6 @@ static int init_backup(ctl_args_t *args, bool restore_mode) ...@@ -432,14 +432,6 @@ static int init_backup(ctl_args_t *args, bool restore_mode)
ctx->backup_zonefile = !MATCH_AND_FILTER(args, CTL_FILTER_PURGE_ZONEFILE); ctx->backup_zonefile = !MATCH_AND_FILTER(args, CTL_FILTER_PURGE_ZONEFILE);
args->custom_ctx = ctx; args->custom_ctx = ctx;
if (args->data[KNOT_CTL_IDX_ZONE] == NULL) {
ctx->backup_global = true;
ret = global_backup(ctx, &args->server->catalog, NULL);
if (ret != KNOT_EOK) {
zone_backup_deinit(ctx);
}
}
return ret; return ret;
} }
...@@ -473,11 +465,7 @@ static int zone_backup_cmd(zone_t *zone, ctl_args_t *args) ...@@ -473,11 +465,7 @@ static int zone_backup_cmd(zone_t *zone, ctl_args_t *args)
static int zones_apply_backup(ctl_args_t *args, bool restore_mode) static int zones_apply_backup(ctl_args_t *args, bool restore_mode)
{ {
int ret = init_backup(args, restore_mode); int ret = init_backup(args, restore_mode);
if (ret != KNOT_EOK) {
if (ret == KNOT_EOK) {
ret = zones_apply(args, zone_backup_cmd);
deinit_backup(args);
} else {
char *msg = sprintf_alloc("%s init failed (%s)", char *msg = sprintf_alloc("%s init failed (%s)",
restore_mode ? "restore" : "backup", restore_mode ? "restore" : "backup",
knot_strerror(ret)); knot_strerror(ret));
...@@ -493,9 +481,23 @@ static int zones_apply_backup(ctl_args_t *args, bool restore_mode) ...@@ -493,9 +481,23 @@ static int zones_apply_backup(ctl_args_t *args, bool restore_mode)
/* Warning: zone name in the control command params discarded here. */ /* Warning: zone name in the control command params discarded here. */
args->data[KNOT_CTL_IDX_ZONE] = NULL; args->data[KNOT_CTL_IDX_ZONE] = NULL;
send_error(args, knot_strerror(ret)); send_error(args, knot_strerror(ret));
ret = KNOT_CTL_EZONE; return KNOT_CTL_EZONE;
} }
/* Global catalog zones backup. */
if (args->data[KNOT_CTL_IDX_ZONE] == NULL) {
zone_backup_ctx_t *ctx = args->custom_ctx;
ctx->backup_global = true;
ret = global_backup(ctx, &args->server->catalog, NULL);
if (ret != KNOT_EOK) {
goto done;
}
}
ret = zones_apply(args, zone_backup_cmd);
done:
deinit_backup(args);
return ret; return ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment