File tree 6 files changed +103
-0
lines changed
manageiq/providers/ansible_tower/configuration_manager
miq_server/worker_management/monitor
6 files changed +103
-0
lines changed Original file line number Diff line number Diff line change
1
+ class ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventCatcher < ManageIQ ::Providers ::BaseManager ::EventCatcher
2
+ require_nested :Runner
3
+ end
Original file line number Diff line number Diff line change
1
+ class ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventCatcher ::Runner < ManageIQ ::Providers ::BaseManager ::EventCatcher ::Runner
2
+ def stop_event_monitor
3
+ event_monitor_handle . stop
4
+ end
5
+
6
+ def monitor_events
7
+ event_monitor_handle . start
8
+ event_monitor_handle . poll do |event |
9
+ _log . debug { "#{ log_prefix } Received event #{ event . id } " }
10
+ event_monitor_running
11
+ @queue . enq event
12
+ end
13
+ ensure
14
+ stop_event_monitor
15
+ end
16
+
17
+ def queue_event ( event )
18
+ _log . info "#{ log_prefix } Caught event [#{ event . id } ]"
19
+ event_hash = ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventParser . event_to_hash ( event , @cfg [ :ems_id ] )
20
+ EmsEvent . add_queue ( 'add' , @cfg [ :ems_id ] , event_hash )
21
+ end
22
+
23
+ private
24
+
25
+ def event_monitor_handle
26
+ @event_monitor_handle ||= begin
27
+ ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventCatcher ::Stream . new (
28
+ @ems ,
29
+ :poll_sleep => worker_settings [ :poll ]
30
+ )
31
+ end
32
+ end
33
+ end
Original file line number Diff line number Diff line change
1
+ class ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventCatcher ::Stream
2
+ class ProviderUnreachable < ManageIQ ::Providers ::BaseManager ::EventCatcher ::Runner ::TemporaryFailure
3
+ end
4
+
5
+ def initialize ( ems , options = { } )
6
+ @ems = ems
7
+ @last_activity = nil
8
+ @stop_polling = false
9
+ @poll_sleep = options [ :poll_sleep ] || 20 . seconds
10
+ end
11
+
12
+ def start
13
+ @stop_polling = false
14
+ end
15
+
16
+ def stop
17
+ @stop_polling = true
18
+ end
19
+
20
+ def poll
21
+ @ems . with_provider_connection do |ansible |
22
+ catch ( :stop_polling ) do
23
+ begin
24
+ loop do
25
+ ansible . api . activity_stream . all ( filter ) . each do |activity |
26
+ throw :stop_polling if @stop_polling
27
+ yield activity
28
+ @last_activity = activity
29
+ end
30
+ sleep @poll_sleep
31
+ end
32
+ rescue => exception
33
+ raise ProviderUnreachable , exception . message
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def filter
42
+ {
43
+ :order_by => 'timestamp' ,
44
+ :timestamp__gt => @last_activity ? @last_activity . timestamp : 1 . minute . ago . to_s ( :db )
45
+ }
46
+ end
47
+ end
Original file line number Diff line number Diff line change
1
+ module ManageIQ ::Providers ::AnsibleTower ::ConfigurationManager ::EventParser
2
+ def self . event_to_hash ( event , ems_id )
3
+ {
4
+ :event_type => "ansible_tower_#{ event . operation } " ,
5
+ :source => "ANSIBLE_TOWER" ,
6
+ :message => event . changes . to_s ,
7
+ :timestamp => event . timestamp ,
8
+ :full_data => event . to_h ,
9
+ :ems_id => ems_id
10
+ }
11
+ end
12
+ end
Original file line number Diff line number Diff line change @@ -43,6 +43,7 @@ module MiqServer::WorkerManagement::Monitor::ClassNames
43
43
ManageIQ::Providers::Vmware::InfraManager::RefreshWorker
44
44
ManageIQ::Providers::Nuage::NetworkManager::RefreshWorker
45
45
ManageIQ::Providers::Amazon::CloudManager::EventCatcher
46
+ ManageIQ::Providers::AnsibleTower::ConfigurationManager::EventCatcher
46
47
ManageIQ::Providers::Azure::CloudManager::EventCatcher
47
48
ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher
48
49
ManageIQ::Providers::Google::CloudManager::EventCatcher
@@ -134,6 +135,7 @@ module MiqServer::WorkerManagement::Monitor::ClassNames
134
135
ManageIQ::Providers::StorageManager::CinderManager::EventCatcher
135
136
ManageIQ::Providers::Amazon::CloudManager::EventCatcher
136
137
ManageIQ::Providers::Azure::CloudManager::EventCatcher
138
+ ManageIQ::Providers::AnsibleTower::ConfigurationManager::EventCatcher
137
139
ManageIQ::Providers::Hawkular::MiddlewareManager::EventCatcher
138
140
ManageIQ::Providers::Google::CloudManager::EventCatcher
139
141
ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcher
Original file line number Diff line number Diff line change 230
230
:name : Application
231
231
:configuration :
232
232
:critical :
233
+ - ansible_tower_create
234
+ - ansible_tower_update
235
+ - ansible_tower_delete
236
+ - ansible_tower_associate
233
237
- ClusterReconfiguredEvent
234
238
- EnterMaintenanceMode_Task_Complete
235
239
- ExitMaintenanceMode_Task_Complete
1201
1205
:memory_threshold : 2.gigabytes
1202
1206
:nice_delta : 1
1203
1207
:poll : 1.seconds
1208
+ :event_catcher_ansible_tower :
1209
+ :poll : 20.seconds
1204
1210
:event_catcher_redhat :
1205
1211
:poll : 15.seconds
1206
1212
:event_catcher_vmware :
You can’t perform that action at this time.
0 commit comments