From 3f338c867240a15bfa0efe493de7c301a10f0c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 23 Jul 2018 18:45:58 +0300 Subject: [PATCH] MXS-1929: Add create/destroy filter commands Added the creation and destruction commands for filters to MaxCtrl. --- maxctrl/lib/create.js | 40 +++++++++++++++++++++++++++++++--------- maxctrl/lib/destroy.js | 8 ++++++++ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/maxctrl/lib/create.js b/maxctrl/lib/create.js index 0f71f7e37..58dd6e253 100644 --- a/maxctrl/lib/create.js +++ b/maxctrl/lib/create.js @@ -12,6 +12,16 @@ */ require('./common.js')() +// Converts an array of key=value pairs into an object +function to_obj(obj, value) { + var kv = value.split('=') + if (kv.length < 2) { + throw 'Error: Not a key-value parameter: ' + value + } + obj[kv[0]] = kv[1] + return obj +} + exports.command = 'create ' exports.desc = 'Create objects' exports.handler = function() {} @@ -173,15 +183,6 @@ exports.builder = function(yargs) { .usage('Usage: service ') }, function(argv) { - var to_obj = (obj, value) => { - var kv = value.split('=') - if (kv.length < 2) { - throw 'Error: Not a key-value parameter: ' + value - } - obj[kv[0]] = kv[1] - return obj - } - var service = { 'data': { 'id': argv.name, @@ -209,6 +210,27 @@ exports.builder = function(yargs) { }) }) + // Create filter + .command('filter ', 'Create a new filter', function(yargs) { + return yargs.epilog('The last argument to this command is a list of key=value parameters ' + + 'given as the filter parameters.') + .usage('Usage: filter ') + }, function(argv) { + + var filter = { + 'data': { + 'id': argv.name, + 'attributes': { + 'module': argv.module, + 'parameters': argv.params.reduce(to_obj, {}) + } + } + } + + maxctrl(argv, function(host) { + return doRequest(host, 'filters', null, {method: 'POST', body: filter}) + }) + }) // Create listener .group(['interface'], 'Create listener options:') diff --git a/maxctrl/lib/destroy.js b/maxctrl/lib/destroy.js index dc8dd95be..d91901055 100644 --- a/maxctrl/lib/destroy.js +++ b/maxctrl/lib/destroy.js @@ -55,6 +55,14 @@ exports.builder = function(yargs) { return doRequest(host, 'services/' + argv.name, null, {method: 'DELETE'}) }) }) + .command('filter ', 'Destroy an unused filter', function(yargs) { + return yargs.epilog('The filter must not be used by any service when it is destroyed.') + .usage('Usage: destroy filter ') + }, function(argv) { + maxctrl(argv, function(host) { + return doRequest(host, 'filters/' + argv.name, null, {method: 'DELETE'}) + }) + }) .command('user ', 'Remove a network user', function(yargs) { return yargs.epilog('The last remaining administrative user cannot be removed. ' + 'Create a replacement administrative user before attempting ' +