diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2015-09-21 12:31:18 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-09-23 23:08:50 +0200 |
commit | 669ce24f8157b7d79914b3eb5a18214ef42aacc8 (patch) | |
tree | 0839a29ed8b9688dbaab4cb46a7c837ed72a913d /src/providers/fail_over.c | |
parent | 4c53f8b7400630ae06459aa8b5079427edcaa348 (diff) | |
download | sssd-669ce24f8157b7d79914b3eb5a18214ef42aacc8.tar.gz sssd-669ce24f8157b7d79914b3eb5a18214ef42aacc8.tar.xz sssd-669ce24f8157b7d79914b3eb5a18214ef42aacc8.zip |
FO: Add an API to reset all servers in a single service
Required for:
https://fedorahosted.org/sssd/ticket/2639
Previously, we had a function that allowed the caller to reset the
status of all services in the global fail over context. This patch adds
a new function that allows the caller to reset a single service instead.
The main user would be IPA subdomain provider that might need to reset
the status of an AD trusted domain on demand.
Reviewed-by: Sumit Bose <sbose@redhat.com>
Diffstat (limited to 'src/providers/fail_over.c')
-rw-r--r-- | src/providers/fail_over.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c index 6d835ae0e..562f0b3fd 100644 --- a/src/providers/fail_over.c +++ b/src/providers/fail_over.c @@ -1547,21 +1547,31 @@ time_t fo_get_service_retry_timeout(struct fo_service *svc) return svc->ctx->opts->retry_timeout; } +void fo_reset_servers(struct fo_service *service) +{ + struct fo_server *server; + + DLIST_FOR_EACH(server, service->server_list) { + if (server->srv_data != NULL) { + set_srv_data_status(server->srv_data, SRV_NEUTRAL); + } else { + fo_set_server_status(server, SERVER_NAME_NOT_RESOLVED); + } + + fo_set_port_status(server, PORT_NEUTRAL); + } +} + + void fo_reset_services(struct fo_ctx *fo_ctx) { struct fo_service *service; - struct fo_server *server; - DLIST_FOR_EACH(service, fo_ctx->service_list) { - DLIST_FOR_EACH(server, service->server_list) { - if (server->srv_data != NULL) { - set_srv_data_status(server->srv_data, SRV_NEUTRAL); - } else { - fo_set_server_status(server, SERVER_NAME_NOT_RESOLVED); - } + DEBUG(SSSDBG_TRACE_LIBS, + "Resetting all servers in all services\n"); - fo_set_port_status(server, PORT_NEUTRAL); - } + DLIST_FOR_EACH(service, fo_ctx->service_list) { + fo_reset_servers(service); } } |