diff --git a/client/maxctrl/lib/link.js b/client/maxctrl/lib/link.js new file mode 100644 index 000000000..f5f3d4b8f --- /dev/null +++ b/client/maxctrl/lib/link.js @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2016 MariaDB Corporation Ab + * + * Use of this software is governed by the Business Source License included + * in the LICENSE.TXT file and at www.mariadb.com/bsl11. + * + * Change Date: 2020-01-01 + * + * On the date above, in accordance with the Business Source License, use + * of this software will be governed by version 2 or later of the General + * Public License. + */ +require('../common.js')() + +function addServer(path, targets) { + doRequest(path, function(res) { + var servers =_.get(res, 'data.relationships.servers.data', []) + + targets.forEach(function(i){ + servers.push({id: i, type: 'servers'}) + }) + + // Update relationships and remove unnecessary parts + _.set(res, 'data.relationships.servers.data', servers) + delete res.data.attributes + + doRequest(path, null, {method: 'PATCH', body: res}) + }) +} + +exports.command = 'link ' +exports.desc = 'Link objects' +exports.handler = function() {} +exports.builder = function(yargs) { + yargs + .command('service ', 'Link servers to a service', {}, function(argv) { + addServer('services/' + argv.name, argv.server) + }) + .command('monitor ', 'Link servers to a monitor', {}, function(argv) { + addServer('monitors/' + argv.name, argv.server) + }) + .usage('Usage: link ') + .help() + .command('*', 'the default command', {}, () => { + console.log('Unknown command. See output of `help link` for a list of commands.') + }) +} diff --git a/client/maxctrl/lib/unlink.js b/client/maxctrl/lib/unlink.js new file mode 100644 index 000000000..0bd50abdc --- /dev/null +++ b/client/maxctrl/lib/unlink.js @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2016 MariaDB Corporation Ab + * + * Use of this software is governed by the Business Source License included + * in the LICENSE.TXT file and at www.mariadb.com/bsl11. + * + * Change Date: 2020-01-01 + * + * On the date above, in accordance with the Business Source License, use + * of this software will be governed by version 2 or later of the General + * Public License. + */ +require('../common.js')() + +function removeServer(path, targets) { + doRequest(path, function(res) { + var servers =_.get(res, 'data.relationships.servers.data', []) + + _.remove(servers, function(i) { + return targets.indexOf(i.id) != -1 + }) + + // Update relationships and remove unnecessary parts + _.set(res, 'data.relationships.servers.data', servers) + delete res.data.attributes + + doRequest(path, null, {method: 'PATCH', body: res}) + }) +} + +exports.command = 'unlink ' +exports.desc = 'Unlink objects' +exports.handler = function() {} +exports.builder = function(yargs) { + yargs + .command('service ', 'Unlink servers from a service', {}, function(argv) { + removeServer('services/' + argv.name, argv.server) + }) + .command('monitor ', 'Unlink servers from a monitor', {}, function(argv) { + removeServer('monitors/' + argv.name, argv.server) + }) + .usage('Usage: unlink ') + .help() + .command('*', 'the default command', {}, () => { + console.log('Unknown command. See output of `help unlink` for a list of commands.') + }) +} diff --git a/client/maxctrl/maxctrl.js b/client/maxctrl/maxctrl.js index 60f65360e..268a3601b 100644 --- a/client/maxctrl/maxctrl.js +++ b/client/maxctrl/maxctrl.js @@ -58,6 +58,8 @@ program .command(require('./lib/disable.js')) .command(require('./lib/create.js')) .command(require('./lib/destroy.js')) + .command(require('./lib/link.js')) + .command(require('./lib/unlink.js')) .help() .demandCommand(1, 'At least one command is required') .command('*', 'the default command', {}, () => { diff --git a/server/core/config_runtime.cc b/server/core/config_runtime.cc index f81c52827..49fa3013e 100644 --- a/server/core/config_runtime.cc +++ b/server/core/config_runtime.cc @@ -1377,7 +1377,7 @@ bool runtime_alter_service_from_json(SERVICE* service, json_t* new_json) if (is_valid_resource_body(new_json) && object_to_server_relations(service->name, old_json.get(), new_json)) { - bool changed = false; + rval = true; json_t* parameters = mxs_json_pointer(new_json, MXS_JSON_PTR_PARAMETERS); json_t* old_parameters = mxs_json_pointer(old_json.get(), MXS_JSON_PTR_PARAMETERS); @@ -1395,7 +1395,6 @@ bool runtime_alter_service_from_json(SERVICE* service, json_t* new_json) } } - rval = true; const char* key; json_t* value;