Move configuration changes to a common file

The config_runtime.h header contains functions that can be used to
manipulate the running configuration. Currently the header contains the
function to create, add, remove and destroy servers.
This commit is contained in:
Markus Makela
2016-11-22 15:18:04 +02:00
parent d309444540
commit 8ef99c9066
10 changed files with 295 additions and 179 deletions

View File

@ -73,6 +73,7 @@
#include <maxscale/housekeeper.h>
#include <maxscale/listmanager.h>
#include <maxscale/maxscale.h>
#include <maxscale/config_runtime.h>
#include <maxscale/log_manager.h>
#include <sys/syslog.h>
@ -804,28 +805,9 @@ static void cmd_AddServer(DCB *dcb, SERVER *server, char *v1, char *v2, char *v3
for (int i = 0; i < items && values[i]; i++)
{
SERVICE *service = service_find(values[i]);
MONITOR *monitor = monitor_find(values[i]);
if (service || monitor)
if (runtime_link_server(server, values[i]))
{
ss_dassert(service == NULL || monitor == NULL);
if (service)
{
serviceAddBackend(service, server);
service_serialize_servers(service);
}
else if (monitor)
{
monitorAddServer(monitor, server);
monitor_serialize_servers(monitor);
}
const char *target = service ? "service" : "monitor";
MXS_NOTICE("Added server '%s' to %s '%s'", server->unique_name, target, values[i]);
dcb_printf(dcb, "Added server '%s' to %s '%s'\n", server->unique_name, target, values[i]);
dcb_printf(dcb, "Added server '%s' to '%s'\n", server->unique_name, values[i]);
}
else
{
@ -872,27 +854,9 @@ static void cmd_RemoveServer(DCB *dcb, SERVER *server, char *v1, char *v2, char
for (int i = 0; i < items && values[i]; i++)
{
SERVICE *service = service_find(values[i]);
MONITOR *monitor = monitor_find(values[i]);
if (service || monitor)
if (runtime_unlink_server(server, values[i]))
{
ss_dassert(service == NULL || monitor == NULL);
if (service)
{
serviceRemoveBackend(service, server);
service_serialize_servers(service);
}
else if (monitor)
{
monitorRemoveServer(monitor, server);
monitor_serialize_servers(monitor);
}
const char *target = service ? "service" : "monitor";
MXS_NOTICE("Removed server '%s' from %s '%s'", server->unique_name, target, values[i]);
dcb_printf(dcb, "Removed server '%s' from %s '%s'\n", server->unique_name, target, values[i]);
dcb_printf(dcb, "Removed server '%s' from '%s'\n", server->unique_name, values[i]);
}
else
{
@ -1044,7 +1008,7 @@ static void createServer(DCB *dcb, char *name, char *address, char *port,
if (server_find_by_unique_name(name) == NULL)
{
if (server_create(name, address, port, protocol, authenticator, authenticator_options))
if (runtime_create_server(name, address, port, protocol, authenticator, authenticator_options))
{
dcb_printf(dcb, "Created server '%s'\n", name);
}
@ -1093,7 +1057,7 @@ static void destroyServer(DCB *dcb, SERVER *server)
char name[strlen(server->unique_name) + 1];
strcpy(name, server->unique_name);
if (server_destroy(server))
if (runtime_destroy_server(server))
{
dcb_printf(dcb, "Destroyed server '%s'\n", name);
}