From 4d752c5d06e6a38b9cd597bd7d85b2a420ed3e2f Mon Sep 17 00:00:00 2001 From: Alejandro Huertas Herrero Date: Thu, 14 Jan 2021 15:27:36 +0100 Subject: [PATCH] M #-: add JSON and XML output to provision log (#640) --- src/cli/one_helper/oneprovision_helper.rb | 2 +- src/cli/oneprovision | 6 ++++-- src/oneprovision/lib/provision/oneprovision.rb | 14 +++++++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/cli/one_helper/oneprovision_helper.rb b/src/cli/one_helper/oneprovision_helper.rb index 840a2929ac..982c6eeec8 100644 --- a/src/cli/one_helper/oneprovision_helper.rb +++ b/src/cli/one_helper/oneprovision_helper.rb @@ -246,7 +246,7 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper WAIT_READY, WAIT_TIMEOUT, PROVIDER, - USER_INPUTS] + USER_INPUTS] + [OpenNebulaHelper::FORMAT] ONE_OPTIONS = CommandParser::OPTIONS + CLIHelper::OPTIONS + diff --git a/src/cli/oneprovision b/src/cli/oneprovision index 99d15cfeb1..d82d9fe089 100755 --- a/src/cli/oneprovision +++ b/src/cli/oneprovision @@ -189,7 +189,8 @@ CommandParser::CmdParser.new(ARGV) do provision_configure_desc, :provisionid, :options => [OneProvisionHelper::MODES, - OneProvisionHelper::FORCE] do + OneProvisionHelper::FORCE] + + [OpenNebulaHelper::FORMAT] do helper.parse_options(options) rc = helper.configure(args[0], options.key?(:force)) @@ -214,7 +215,8 @@ CommandParser::CmdParser.new(ARGV) do :options => [OneProvisionHelper::MODES, OneProvisionHelper::THREADS, OneProvisionHelper::CLEANUP, - OneProvisionHelper::CLEANUP_TIMEOUT] do + OneProvisionHelper::CLEANUP_TIMEOUT] + + [OpenNebulaHelper::FORMAT] do helper.parse_options(options) if options[:cleanup_timeout].nil? diff --git a/src/oneprovision/lib/provision/oneprovision.rb b/src/oneprovision/lib/provision/oneprovision.rb index 541dc0c463..6b1bc0be41 100644 --- a/src/oneprovision/lib/provision/oneprovision.rb +++ b/src/oneprovision/lib/provision/oneprovision.rb @@ -22,6 +22,7 @@ require 'provision/provision_pool' require 'provision/resources' require 'provision/utils' +require 'base64' require 'logger' require 'singleton' @@ -46,7 +47,18 @@ module OneProvision format = '%Y-%m-%d %H:%M:%S' instance.logger.formatter = proc do |severity, datetime, _p, msg| - "#{datetime.strftime(format)} #{severity.ljust(5)} : #{msg}\n" + if options[:json] + "{ \"timestamp\": \"#{datetime}\", " \ + " \"severity\": \"#{severity}\", " \ + " \"message\": \"#{Base64.strict_encode64(msg)}\"}\n" + elsif options[:xml] + "#{datetime}" \ + "#{severity}" \ + "#{Base64.strict_encode64(msg)}\n" + else + "#{datetime.strftime(format)} #{severity.ljust(5)} " \ + ": #{msg}\n" + end end if options.key? :debug