Completed
Push — master ( 84e890...c23c43 )
by
unknown
22s
created

Icinga2StateChangeSensor.process_event()   A

Complexity

Conditions 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

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