Class: RServiceBus2::ConfigureMonitor

Inherits:
Object
  • Object
show all
Defined in:
lib/rservicebus2/monitor_configure.rb

Overview

Configure Monitors for an rservicebus host

Instance Method Summary collapse

Constructor Details

#initialize(host, resource_manager) ⇒ ConfigureMonitor

Constructor

Parameters:

  • host (RServiceBus2::Host)

    instance

  • resourceManager (Hash)

    As hash where k is the name of a resource, and v is the resource



13
14
15
16
17
18
19
# File 'lib/rservicebus2/monitor_configure.rb', line 13

def initialize(host, resource_manager)
  @host = host
  @resource_manager = resource_manager

  @handler_list = {}
  @resource_list = {}
end

Instance Method Details

#conditionally_set_app_resource(monitor, key, val) ⇒ Object



21
22
23
24
25
26
# File 'lib/rservicebus2/monitor_configure.rb', line 21

def conditionally_set_app_resource(monitor, key, val)
  monitor.instance_variable_set("@#{key}", val.resource)
  @resource_list[monitor.class.name] = [] if @resource_list[monitor.class.name].nil?
  @resource_list[monitor.class.name] << val
  @host.log "App resource attribute, #{key}, set for: #{monitor.class.name}"
end

#conditionally_set_app_resources(monitor) ⇒ Object

Assigns appropriate resources to writable attributes in the handler that

match keys in the resource hash

Parameters:

  • handler (RServiceBus2::Handler)


31
32
33
34
35
36
37
38
39
40
# File 'lib/rservicebus2/monitor_configure.rb', line 31

def conditionally_set_app_resources(monitor)
  RServiceBus2.rlog "Checking app resources for: #{monitor.class.name}"
  RServiceBus2.rlog "If your attribute is not getting set, check that it is in the 'attr_accessor' list"
  @resource_manager.all.each do |k, v|
    next unless monitor.class.method_defined?(k)

    conditionally_set_app_resource(monitor, k, v)
  end
  self
end

#load_monitor(key, val) ⇒ Object

rubocop:disable Metrics/MethodLength



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/rservicebus2/monitor_configure.rb', line 43

def load_monitor(key, val)
  name = key.sub('RSBOB_', '')
  uri = URI.parse(val)
  monitor = nil
  case uri.scheme
  when 'dir'
    require 'rservicebus2/monitor/dir'
    monitor = MonitorDir.new(@host, name, uri)
  when 'awss3'
    require 'rservicebus2/monitor/awss3'
    monitor = MonitorAWSS3.new(@host, name, uri)
  when 'awssqs'
    require 'rservicebus2/monitor/awssqs'
    monitor = MonitorAWSSQS.new(@host, name, uri)
  when 'dirnotifier'
    require 'rservicebus2/monitor/dirnotifier'
    monitor = MonitorDirNotifier.new(@host, name, uri)
  when 'beanstalk'
    require 'rservicebus2/monitor/beanstalk'
    monitor = MonitorBeanstalk.new(@host, name, uri)
  else
    abort("Scheme, #{uri.scheme}, not recognised when configuring
      Monitor, #{key}=#{val}")
  end
  monitor
end

#monitors(env) ⇒ Object

rubocop:enable Metrics/MethodLength



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/rservicebus2/monitor_configure.rb', line 71

def monitors(env)
  list = []

  env.each do |k, v|
    next unless v.is_a?(String) && k.start_with?('RSBOB_')

    monitor = load_monitor(k, v)
    conditionally_set_app_resources(monitor)
    list << monitor
  end
  list
end