Sha256: 224020ba6cab6696e52b1eb51ab01c2d76d0131e9c9f2868ae3b43e553f90781

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

module Choria
  class Colt
    module DataStructurer
      def self.structure(res) # rubocop:disable Metrics/AbcSize
        return res unless [0, 1].include? res[:statuscode]

        # data.stdout seems to always be JSON, so parse it once.
        res[:result] = JSON.parse res[:data][:stdout]
        res[:data].delete :stdout

        # On one side, data.stderr is filled by the remote execution stderr.
        # On the other side, error description is in JSON (ie. '_error')
        # So merge data.stderr in '_error'.'details'
        unless res[:data][:stderr].empty?
          raise NotImplementedError, 'What to do when res[:data][:stderr] contains something?' if res[:result]['_error'].empty?

          res[:result]['_error']['details'].merge!({ 'stderr' => res[:data][:stderr].split("\n") })
        end
        res[:data].delete :stderr

        # Convert '_output' (ie. stdout) lines into array
        res[:result]['_output'] = res[:result]['_output'].split("\n") unless res[:result]['_output'].nil?

        res
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
choria-colt-0.6.0 lib/choria/colt/data_structurer.rb
choria-colt-0.5.1 lib/choria/colt/data_structurer.rb
choria-colt-0.5.0 lib/choria/colt/data_structurer.rb