11require_relative "event_parser"
22
33class EventCatcher
4- def initialize ( ems , default_endpoint , default_authentication , messaging , logger , page_size = 20 )
5- @ems_id = ems [ "id" ]
6- @default_endpoint = default_endpoint
7- @default_authentication = default_authentication
8- @logger = logger
9- @messaging = messaging
10- @page_size = page_size
4+ def initialize ( ems , endpoint , authentication , messaging , logger , page_size = 20 )
5+ @ems = ems
6+ @endpoint = endpoint
7+ @authentication = authentication
8+ @logger = logger
9+ @messaging = messaging
10+ @page_size = page_size
1111 end
1212
1313 def run!
@@ -18,12 +18,17 @@ def run!
1818 notify_started
1919
2020 logger . info ( "Collecting events..." )
21+
2122 wait_for_updates ( vim ) do |property_change |
2223 logger . info ( property_change . name )
2324 next unless property_change . name . match? ( /latestPage.*/ )
2425
25- events = Array ( property_change . val ) . map { |event | EventParser . parse_event ( event ) . merge ( :ems_id => ems_id ) }
26+ events = Array ( property_change . val ) . map do |event |
27+ EventParser . parse_event ( event ) . merge ( :ems_id => ems [ "id" ] )
28+ end
29+
2630 logger . info ( events . to_json )
31+
2732 publish_events ( events )
2833 end
2934 rescue Interrupt
@@ -40,24 +45,24 @@ def stop!
4045
4146 private
4247
43- attr_reader :ems_id , :default_endpoint , :default_authentication , :logger , :messaging , :page_size
48+ attr_reader :ems , :endpoint , :authentication , :logger , :messaging , :page_size
4449
4550 def connect
4651 vim_opts = {
4752 :ns => 'urn:vim25' ,
4853 :ssl => true ,
49- :host => default_endpoint [ "hostname" ] ,
50- :port => default_endpoint [ "port" ] || 443 ,
51- :insecure => default_endpoint [ "verify_ssl" ] == OpenSSL ::SSL ::VERIFY_NONE ,
54+ :host => endpoint [ "hostname" ] ,
55+ :port => endpoint [ "port" ] || 443 ,
56+ :insecure => endpoint [ "verify_ssl" ] == OpenSSL ::SSL ::VERIFY_NONE ,
5257 :path => '/sdk' ,
5358 :rev => '7.0' ,
5459 }
5560
5661 RbVmomi ::VIM . new ( vim_opts ) . tap do |vim |
5762 vim . rev = vim . serviceContent . about . apiVersion
5863 vim . serviceContent . sessionManager . Login (
59- :userName => default_authentication [ "userid" ] ,
60- :password => default_authentication [ "password" ]
64+ :userName => authentication [ "userid" ] ,
65+ :password => authentication [ "password" ]
6166 )
6267 end
6368 end
@@ -116,7 +121,7 @@ def publish_events(events)
116121 events . each do |event |
117122 messaging_client . publish_topic (
118123 :service => "manageiq.ems" ,
119- :sender => ems_id ,
124+ :sender => ems [ "id" ] ,
120125 :event => event [ :event_type ] ,
121126 :payload => event
122127 )
@@ -125,19 +130,19 @@ def publish_events(events)
125130
126131 def messaging_client
127132 @messaging_client ||= ManageIQ ::Messaging ::Client . open (
128- messaging . merge ( :client_ref => "vmware-event-catcher-#{ ems_id } " )
133+ messaging . merge ( :client_ref => "vmware-event-catcher-#{ ems [ "id" ] } " )
129134 )
130135 end
131136
132137 def notify_started
133- SdNotify . ready if ENV [ "NOTIFY_SOCKET" ]
138+ SdNotify . ready
134139 end
135140
136141 def heartbeat
137- SdNotify . watchdog if ENV [ "NOTIFY_SOCKET" ]
142+ SdNotify . watchdog
138143 end
139144
140145 def notify_stopping
141- SdNotify . stopping if ENV [ "NOTIFY_SOCKET" ]
146+ SdNotify . stopping
142147 end
143148end
0 commit comments