Parent

Class/Module Index [+]

Quicksearch

MCollective::RPC::Reply

Simple class to manage compliant replies to MCollective::RPC

Attributes

data[RW]
statuscode[RW]
statusmsg[RW]

Public Class Methods

new(action, ddl) click to toggle source
# File lib/mcollective/rpc/reply.rb, line 7
def initialize(action, ddl)
  @data = {}
  @statuscode = 0
  @statusmsg = "OK"
  @ddl = ddl
  @action = action

  begin
    initialize_data
  rescue Exception => e
    Log.warn("Could not pre-populate reply data from the DDL: %s: %s" % [e.class, e.to_s ])
  end
end

Public Instance Methods

[](key) click to toggle source

Read from the data hash

# File lib/mcollective/rpc/reply.rb, line 70
def [](key)
  @data[key]
end
[]=(key, val) click to toggle source

Write to the data hash

# File lib/mcollective/rpc/reply.rb, line 65
def []=(key, val)
  @data[key] = val
end
fail(msg, code=1) click to toggle source

Helper to fill in statusmsg and code on failure

# File lib/mcollective/rpc/reply.rb, line 36
def fail(msg, code=1)
  @statusmsg = msg
  @statuscode = code
end
fail!(msg, code=1) click to toggle source

Helper that fills in statusmsg and code but also raises an appropriate error

# File lib/mcollective/rpc/reply.rb, line 42
def fail!(msg, code=1)
  @statusmsg = msg
  @statuscode = code

  case code
    when 1
      raise RPCAborted, msg

    when 2
      raise UnknownRPCAction, msg

    when 3
      raise MissingRPCData, msg

    when 4
      raise InvalidRPCData, msg

    else
      raise UnknownRPCError, msg
  end
end
fetch(key, default) click to toggle source
# File lib/mcollective/rpc/reply.rb, line 74
def fetch(key, default)
  @data.fetch(key, default)
end
initialize_data() click to toggle source
# File lib/mcollective/rpc/reply.rb, line 21
def initialize_data
  unless @ddl.actions.include?(@action)
    raise "No action '%s' defined for agent '%s' in the DDL" % [@action, @ddl.pluginname]
  end

  interface = @ddl.action_interface(@action)

  interface[:output].keys.each do |output|
    # must deep clone this data to avoid accidental updates of the DDL in cases where the
    # default is for example a string and someone does << on it
    @data[output] = Marshal.load(Marshal.dump(interface[:output][output].fetch(:default, nil)))
  end
end
to_hash() click to toggle source

Returns a compliant Hash of the reply that should be sent over the middleware

# File lib/mcollective/rpc/reply.rb, line 80
def to_hash
  return {:statuscode => @statuscode,
          :statusmsg => @statusmsg,
          :data => @data}
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.