From a77406e134e4ed89f112da301eabae36dc33bf34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 10 Jul 2017 15:16:12 +0300 Subject: [PATCH] MXS-1300: Add calling of module commands to MaxCtrl Module commands can now be called with MaxCtrl. --- client/maxctrl/lib/call.js | 45 ++++++++++++++++++++++++++++++++++++++ client/maxctrl/maxctrl.js | 1 + 2 files changed, 46 insertions(+) create mode 100644 client/maxctrl/lib/call.js diff --git a/client/maxctrl/lib/call.js b/client/maxctrl/lib/call.js new file mode 100644 index 000000000..ad766ff84 --- /dev/null +++ b/client/maxctrl/lib/call.js @@ -0,0 +1,45 @@ +/* + * 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')() + +exports.command = 'call ' +exports.desc = 'Call module commands' +exports.handler = function() {} +exports.builder = function(yargs) { + yargs + .command('command [parameters...]', 'Call a module command', {}, function(argv) { + + // First we have to find the correct method to use + doRequest('maxscale/modules/' + argv.module + '/', function(resp) { + + // A GET request will return the correct error if the command is not found + var verb = "GET" + + resp.data.attributes.commands.forEach(function(i) { + if (i.id == argv.command) { + verb = i.attributes.method; + } + }) + + doRequest('maxscale/modules/' + argv.module + '/' + argv.command + '?' + argv.parameters.join('&'), + function(resp) { + console.log(JSON.stringify(resp, null, 4)) + }, { method: verb }) + }) + }) + .usage('Usage: call ') + .help() + .command('*', 'the default command', {}, () => { + console.log('Unknown command. See output of `help call` for a list of commands.') + }) +} diff --git a/client/maxctrl/maxctrl.js b/client/maxctrl/maxctrl.js index b028c2d56..483a4b309 100644 --- a/client/maxctrl/maxctrl.js +++ b/client/maxctrl/maxctrl.js @@ -64,6 +64,7 @@ program .command(require('./lib/stop.js')) .command(require('./lib/alter.js')) .command(require('./lib/rotate.js')) + .command(require('./lib/call.js')) .help() .demandCommand(1, 'At least one command is required') .command('*', 'the default command', {}, () => {