File: //usr/lib/python2.7/site-packages/salt/states/victorops.py
# -*- coding: utf-8 -*-
'''
Create an Event in VictorOps
============================
.. versionadded:: 2015.8.0
This state is useful for creating events on the
VictorOps service during state runs.
.. code-block:: yaml
webserver-warning-message:
victorops.create_event:
- message_type: 'CRITICAL'
- entity_id: 'webserver/diskspace'
- state_message: 'Webserver diskspace is low.'
'''
# Import Python libs
from __future__ import absolute_import, print_function, unicode_literals
def __virtual__():
'''
Only load if the victorops module is available in __salt__
'''
return 'victorops' if 'victorops.create_event' in __salt__ else False
def create_event(name, message_type, routing_key='everyone', **kwargs):
'''
Create an event on the VictorOps service
.. code-block:: yaml
webserver-warning-message:
victorops.create_event:
- message_type: 'CRITICAL'
- entity_id: 'webserver/diskspace'
- state_message: 'Webserver diskspace is low.'
database-server-warning-message:
victorops.create_event:
- message_type: 'WARNING'
- entity_id: 'db_server/load'
- state_message: 'Database Server load is high.'
- entity_is_host: True
- entity_display_name: 'dbdserver.example.com'
The following parameters are required:
name
This is a short description of the event.
message_type
One of the following values: INFO, WARNING, ACKNOWLEDGEMENT, CRITICAL, RECOVERY.
The following parameters are optional:
routing_key
The key for where messages should be routed. By default, sent to 'everyone' route.
entity_id
The name of alerting entity. If not provided, a random name will be assigned.
timestamp
Timestamp of the alert in seconds since epoch. Defaults to the time the alert is received at VictorOps.
timestamp_fmt
The date format for the timestamp parameter. Defaults to ''%Y-%m-%dT%H:%M:%S'.
state_start_time
The time this entity entered its current state (seconds since epoch). Defaults to the time alert is received.
state_start_time_fmt
The date format for the timestamp parameter. Defaults to '%Y-%m-%dT%H:%M:%S'.
state_message
Any additional status information from the alert item.
entity_is_host
Used within VictorOps to select the appropriate display format for the incident.
entity_display_name
Used within VictorOps to display a human-readable name for the entity.
ack_message
A user entered comment for the acknowledgment.
ack_author
The user that acknowledged the incident.
'''
ret = {'name': name,
'changes': {},
'result': None,
'comment': ''}
if __opts__['test']:
ret['comment'] = 'Need to create event: {0}'.format(name)
return ret
res = __salt__['victorops.create_event'](
message_type=message_type,
routing_key=routing_key,
**kwargs
)
if res['result'] == 'success':
ret['result'] = True
ret['comment'] = 'Created event: {0} for entity {1}'.format(name, res['entity_id'])
else:
ret['result'] = False
ret['comment'] = 'Failed to create event: {0}'.format(res['message'])
return ret