class TopologicalInventory::Providers::Common::Operations::Processor
Attributes
identity[RW]
message[RW]
method[RW]
metrics[RW]
model[RW]
params[RW]
Public Class Methods
new(message, metrics)
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 18 def initialize(message, metrics) self.message = message self.metrics = metrics self.model, self.method = message.message.split(".") self.params = message.payload["params"] self.identity = message.payload["request_context"] end
process!(message, metrics)
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 14 def self.process!(message, metrics) new(message, metrics).process end
Public Instance Methods
process()
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 27 def process logger.info(status_log_msg) impl = operation_class&.new(params, identity, metrics) if impl&.respond_to?(method) with_time_measure do result = impl.send(method) logger.info(status_log_msg("Complete")) result end else logger.warn(status_log_msg("Not Implemented!")) complete_task("not implemented") if params["task_id"] operation_status[:not_implemented] end rescue StandardError, NotImplementedError => e complete_task(e.message) if params["task_id"] raise end
Private Instance Methods
complete_task(msg, status = "error")
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 63 def complete_task(msg, status = "error") update_task(params["task_id"], :state => "completed", :status => status, :context => {:error => "#{model}##{method} - #{msg}"}) end
operation_class()
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 51 def operation_class raise NotImplementedError, "#{__method__} must be implemented in a subclass" end
status_log_msg(status = nil)
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 70 def status_log_msg(status = nil) "Processing #{model}##{method} [#{params}]...#{status}" end
with_time_measure() { || ... }
click to toggle source
# File lib/topological_inventory/providers/common/operations/processor.rb, line 55 def with_time_measure if metrics.present? metrics.record_operation_time(message.message) { yield } else yield end end