From aec8cf4da9a4622098e5f7ff9f19099572a8a03e Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Mon, 16 Sep 2019 20:50:02 +0000 Subject: [PATCH] Add schedule/duration #76 --- api/admin/controllers/importer.js | 19 ++++++++++++++++--- api/sharedFunctions.js | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/api/admin/controllers/importer.js b/api/admin/controllers/importer.js index 5d0cea79..3d19950c 100644 --- a/api/admin/controllers/importer.js +++ b/api/admin/controllers/importer.js @@ -500,22 +500,35 @@ exports._extract_psconfig_tests = function( importedConfig, sub, mainConfig ) { var tool = importedConfig.tasks[ testName ].tools[0]; tool = tool.replace("bwctl", ""); if ( tool ) { - testObj.tool= shared.convert_tool( tool, true ); + testObj.spec.tool= shared.convert_tool( tool, true ); } } + if ("duration" in testObj.spec && isNaN(testObj.spec.duration)) { + testObj.spec.duration = shared.iso8601_to_seconds( testObj.spec.duration ); + } // TODO: review - hostgroups not required when creating testspecs console.log("BEFORE ADDING HOSTGROUPS testObj", testObj); var groups = importedConfig.groups; var tasksObj = importedConfig.tasks; + var hosts = []; _.each( tasksObj, function( taskObj, taskName ) { if ( taskObj.test == testName ) { - var groupName = taskObj.group; - //hosts = importedConfig.tests[ taskObj.test ].type; + var thisTask = taskObj; + var groupName = thisTask.group; + //var tools = thisTask.tools; + //testObj.spec.tool = tools; + //hosts = importedConfig.tests[ thisTask.test ].type; hosts = _.map(groups[ groupName ].addresses, function(obj, index) {return obj.name;}); + var scheduleName = thisTask.schedule; + if ( scheduleName in importedConfig.schedules ) { + var scheduleObj = importedConfig.schedules[ scheduleName ]; + var interval = shared.iso8601_to_seconds( scheduleObj.repeat ); + testObj.spec.interval = interval; + } } }); diff --git a/api/sharedFunctions.js b/api/sharedFunctions.js index 48939e47..07848a6e 100644 --- a/api/sharedFunctions.js +++ b/api/sharedFunctions.js @@ -1,3 +1,4 @@ +const moment = require('moment'); exports.convert_tool = function( tool, reverse ) { var tool_conversions = { @@ -77,3 +78,21 @@ exports.rename_field = function( obj, oldname, newname ) { return obj; }; + +exports.seconds_to_iso8601 = function( dur ) { + var isoOut = moment.duration(dur * 1000); // moment.duration expects milliseconds + isoOut = isoOut.toISOString(); + return isoOut; +}; + + +exports.iso8601_to_seconds = function( iso ) { + console.log("iso duration", iso); + var mom = moment.duration(iso); + //console.log("ms", ms); + var seconds = mom.asSeconds(); + console.log("seconds", seconds); + return seconds; +}; + +