require 'json' require 'logger' require "base64" require "prepare-environment" require "trace-runner" class HelperRun def initialize () @basePath = Pathname.new(Canzea::config[:catalog_location]).realpath @log = Logger.new(Canzea::config[:logging_root] + '/plans.log') end def runPlan (plans) plans.each { | plan | puts "Running #{plan[:action]}" self.run (plan[:solution], plan[:action], plan[:parameters]) } end def run (solution, action, parameters) type = "ruby" params = JSON.parse(parameters); parameters = JSON.generate(params) envPush = PrepareEnvironment.new begin envScript = "#{@basePath}/helpers/#{solution}/environment.json" if File.exist?(envScript) log.info("Adding environment variables...") envPush.addToEnv "#{envScript}" end r = RunnerWorker.new if (type == "ruby") cmd = "ruby #{@basePath}/helpers/#{solution}/#{action}.rb '#{parameters}'" else cmd = "#{@basePath}/helpers/#{solution}/#{action}.sh \"#{parameters}\"" end r.run cmd, 1, 1, false rescue => exception @log.error(cmd) @log.error(exception.to_s) @log.error(exception.backtrace) abort() end end end