MXS-1300: Make MaxCtrl more like a library

All invocations into the common helper functions are now done through the
`maxctrl` function. This allows the program arguments to be passed to the
core as a parameter instead of reading them from global variables.

This helps with the implicit initialization that was done when the yargs
library was required which caused duplicated output.

Refactored the core functions so that they only process the argument
vector. The parsing of the argument vector is done in maxctrl.js where it
is more appropriate.
This commit is contained in:
Markus Mäkelä
2017-07-13 19:54:19 +03:00
parent 67b2654f50
commit 816e317485
18 changed files with 271 additions and 211 deletions

View File

@ -12,20 +12,22 @@
*/
require('../common.js')()
function addServer(path, targets) {
doRequest(path, function(res) {
var servers =_.get(res, 'data.relationships.servers.data', [])
function addServer(argv, path, targets) {
maxctrl(argv)
.doRequest(path, function(res) {
var servers =_.get(res, 'data.relationships.servers.data', [])
targets.forEach(function(i){
servers.push({id: i, type: 'servers'})
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
maxctrl(argv)
.doRequest(path, null, {method: 'PATCH', body: res})
})
// 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 <command>'
@ -34,10 +36,10 @@ exports.handler = function() {}
exports.builder = function(yargs) {
yargs
.command('service <name> <server...>', 'Link servers to a service', {}, function(argv) {
addServer('services/' + argv.name, argv.server)
addServer(argv, 'services/' + argv.name, argv.server)
})
.command('monitor <name> <server...>', 'Link servers to a monitor', {}, function(argv) {
addServer('monitors/' + argv.name, argv.server)
addServer(argv, 'monitors/' + argv.name, argv.server)
})
.usage('Usage: link <command>')
.help()