Completed
Pull Request — master (#469)
by
unknown
02:24
created

Icinga2StateChangeSensor.run()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 5
rs 9.4285
cc 1
1
#!/usr/bin/env python
2
3
from lib.client import Client
4
from st2reactor.sensor.base import Sensor
5
6
class Icinga2StateChangeSensor(Sensor):
7
  def setup(self):
8
    self.logger = self._sensor_service.get_logger(__name__)
9
    self.api_url = self._config['api_url'] + '/events?queue=state_change&types=StateChange'
10
    self.api_user = self._config['api_state_change_user']
11
    self.api_password = self._config['api_state_change_password']
12
    self.trigger_name = 'event.state_change'
13
    self.trigger_pack = 'icinga2'
14
    self.trigger_ref = '.'.join([self.trigger_pack, self.trigger_name])
15
    self.client = Client(self, self.api_url, self.api_user, self.api_password)
16
    self.logger.info('Icinga2StateChangeSensor initialized with URL: %s User: %s Password: *****', self.api_url, self.api_user)
17
    
18
  def process_event(self, event):
19
    self.logger.info('Processing event: %s', event)
20
    payload = {}
21
    payload['service'] = event['service']
22
    payload['host'] = event['host']
23
    payload['state'] = event['state']
24
    payload['state_type'] = event['state_type']
25
    payload['type'] = event['type']
26
    payload['check_result'] = event['check_result']
27
    self.dispatch_trigger(payload)
28
    
29
30
  def run(self):
31
    self.logger.info('Setting up API connection params.')
32
    self.client.setup_connection()
33
    self.logger.info('Starting connection to API endpoint.')
34
    self.client.start()
35
36
  def cleanup(self):
37
    self.client.abort_session()
38
39
  def add_trigger(self, trigger):
40
    pass
41
42
  def update_trigger(self, trigger):
43
    pass
44
45
  def remove_trigger(self, trigger):
46
    self.client.abort_session()
47
48
  def dispatch_trigger(self, payload):
49
    self.logger.info('Dispatching trigger: %s', self.trigger_ref)
50
    self._sensor_service.dispatch(self.trigger_ref, payload)
51
52