Sha256: f3465dd22f284ac634450340901c06bc7631adfabd4a80b5c74793367d7a73fd

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

module Nucleon
module Action
module Node
class Lookup < CORL.plugin_class(:nucleon, :cloud_action)
  
  include Mixin::Action::Registration
  
  #-----------------------------------------------------------------------------
  # Info
  
  def self.describe
    super(:node, :lookup, 565)
  end

  #-----------------------------------------------------------------------------
  # Settings
  
  def configure
    super do
      register :properties, :array, []
      register :context, :str, :priority do |value|
        success = true
        options = [ :priority, :array, :hash ]
        unless options.include?(value.to_sym)
          warn('corl.actions.lookup.errors.context', { :value => value, :options => options.join(', ') })
          success = false
        end
        success
      end
      
      register_translator :format, :json
    end
  end
  
  #---
  
  def arguments
    [ :properties ]
  end

  #-----------------------------------------------------------------------------
  # Operations
   
  def execute
    super do |node, network|
      ensure_node(node) do
        translator = CORL.translator({}, settings[:format])
        
        if settings[:properties].empty?
          myself.result = node.hiera_configuration(node.facts)
          $stderr.puts translator.generate(result)
        else
          properties = {}
          
          settings.delete(:properties).each do |property|
            properties[property] = node.lookup(property, nil, settings)
          end
          $stderr.puts translator.generate(properties)
          myself.result = properties 
        end        
      end
    end
  end
end
end
end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
corl-0.5.1 lib/nucleon/action/node/lookup.rb