circonus_annotation: DOCUMENTATION & argument_spec cleaning (#26832)
* circonus_annotation: clean description - add 'default' field - default value for 'required' field is false - use formatting function * circonus_annotation: clean argument_spec remove useless conversion default of 'required' False use 'default' when possible * circonus_annotation: fix pep8 * circonus_annotation: add RETURN block * circonus_annotation: check_mode isn't supported, add a note
This commit is contained in:
parent
46956f0273
commit
a3f91274b3
2 changed files with 79 additions and 21 deletions
|
@ -25,6 +25,8 @@ requirements:
|
||||||
- urllib3
|
- urllib3
|
||||||
- requests
|
- requests
|
||||||
- time
|
- time
|
||||||
|
notes:
|
||||||
|
- Check mode isn’t supported.
|
||||||
options:
|
options:
|
||||||
api_key:
|
api_key:
|
||||||
description:
|
description:
|
||||||
|
@ -44,16 +46,16 @@ options:
|
||||||
required: true
|
required: true
|
||||||
start:
|
start:
|
||||||
description:
|
description:
|
||||||
- Unix timestamp of event start, defaults to now
|
- Unix timestamp of event start
|
||||||
required: false
|
default: I(now)
|
||||||
stop:
|
stop:
|
||||||
description:
|
description:
|
||||||
- Unix timestamp of event end, defaults to now + duration
|
- Unix timestamp of event end
|
||||||
required: false
|
default: I(now) + I(duration)
|
||||||
duration:
|
duration:
|
||||||
description:
|
description:
|
||||||
- Duration in seconds of annotation, defaults to 0
|
- Duration in seconds of annotation
|
||||||
required: false
|
default: 0
|
||||||
'''
|
'''
|
||||||
EXAMPLES = '''
|
EXAMPLES = '''
|
||||||
# Create a simple annotation event with a source, defaults to start and end time of now
|
# Create a simple annotation event with a source, defaults to start and end time of now
|
||||||
|
@ -78,6 +80,65 @@ EXAMPLES = '''
|
||||||
start_time: 1395940006
|
start_time: 1395940006
|
||||||
end_time: 1395954407
|
end_time: 1395954407
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
RETURN = '''
|
||||||
|
annotation:
|
||||||
|
description: details about the created annotation
|
||||||
|
returned: success
|
||||||
|
type: complex
|
||||||
|
contains:
|
||||||
|
_cid:
|
||||||
|
description: annotation identifier
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: /annotation/100000
|
||||||
|
_created:
|
||||||
|
description: creation timestamp
|
||||||
|
returned: success
|
||||||
|
type: int
|
||||||
|
sample: 1502236928
|
||||||
|
_last_modified:
|
||||||
|
description: last modification timestamp
|
||||||
|
returned: success
|
||||||
|
type: int
|
||||||
|
sample: 1502236928
|
||||||
|
_last_modified_by:
|
||||||
|
description: last modified by
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: /user/1000
|
||||||
|
category:
|
||||||
|
description: category of the created annotation
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: alerts
|
||||||
|
title:
|
||||||
|
description: title of the created annotation
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: WARNING
|
||||||
|
description:
|
||||||
|
description: description of the created annotation
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: Host is down.
|
||||||
|
start:
|
||||||
|
description: timestamp, since annotation applies
|
||||||
|
returned: success
|
||||||
|
type: int
|
||||||
|
sample: Host is down.
|
||||||
|
stop:
|
||||||
|
description: timestamp, since annotation ends
|
||||||
|
returned: success
|
||||||
|
type: string
|
||||||
|
sample: Host is down.
|
||||||
|
rel_metrics:
|
||||||
|
description: Array of metrics related to this annotation, each metrics is a string.
|
||||||
|
returned: success
|
||||||
|
type: list
|
||||||
|
sample:
|
||||||
|
- 54321_kbps
|
||||||
|
'''
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
@ -93,7 +154,7 @@ def post_annotation(annotation, api_key):
|
||||||
base_url = 'https://api.circonus.com/v2'
|
base_url = 'https://api.circonus.com/v2'
|
||||||
anootate_post_endpoint = '/annotation'
|
anootate_post_endpoint = '/annotation'
|
||||||
resp = requests.post(base_url + anootate_post_endpoint,
|
resp = requests.post(base_url + anootate_post_endpoint,
|
||||||
headers=build_headers(api_key), data=json.dumps(annotation))
|
headers=build_headers(api_key), data=json.dumps(annotation))
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@ -101,10 +162,7 @@ def post_annotation(annotation, api_key):
|
||||||
def create_annotation(module):
|
def create_annotation(module):
|
||||||
''' Takes ansible module object '''
|
''' Takes ansible module object '''
|
||||||
annotation = {}
|
annotation = {}
|
||||||
if module.params['duration'] is not None:
|
duration = module.params['duration']
|
||||||
duration = module.params['duration']
|
|
||||||
else:
|
|
||||||
duration = 0
|
|
||||||
if module.params['start'] is not None:
|
if module.params['start'] is not None:
|
||||||
start = module.params['start']
|
start = module.params['start']
|
||||||
else:
|
else:
|
||||||
|
@ -112,9 +170,9 @@ def create_annotation(module):
|
||||||
if module.params['stop'] is not None:
|
if module.params['stop'] is not None:
|
||||||
stop = module.params['stop']
|
stop = module.params['stop']
|
||||||
else:
|
else:
|
||||||
stop = int(time.time())+ duration
|
stop = int(time.time()) + duration
|
||||||
annotation['start'] = int(start)
|
annotation['start'] = start
|
||||||
annotation['stop'] = int(stop)
|
annotation['stop'] = stop
|
||||||
annotation['category'] = module.params['category']
|
annotation['category'] = module.params['category']
|
||||||
annotation['description'] = module.params['description']
|
annotation['description'] = module.params['description']
|
||||||
annotation['title'] = module.params['title']
|
annotation['title'] = module.params['title']
|
||||||
|
@ -124,8 +182,8 @@ def create_annotation(module):
|
||||||
def build_headers(api_token):
|
def build_headers(api_token):
|
||||||
'''Takes api token, returns headers with it included.'''
|
'''Takes api token, returns headers with it included.'''
|
||||||
headers = {'X-Circonus-App-Name': 'ansible',
|
headers = {'X-Circonus-App-Name': 'ansible',
|
||||||
'Host': 'api.circonus.com', 'X-Circonus-Auth-Token': api_token,
|
'Host': 'api.circonus.com', 'X-Circonus-Auth-Token': api_token,
|
||||||
'Accept': 'application/json'}
|
'Accept': 'application/json'}
|
||||||
return headers
|
return headers
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,15 +191,16 @@ def main():
|
||||||
'''Main function, dispatches logic'''
|
'''Main function, dispatches logic'''
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=dict(
|
argument_spec=dict(
|
||||||
start=dict(required=False, type='int'),
|
start=dict(type='int'),
|
||||||
stop=dict(required=False, type='int'),
|
stop=dict(type='int'),
|
||||||
category=dict(required=True),
|
category=dict(required=True),
|
||||||
title=dict(required=True),
|
title=dict(required=True),
|
||||||
description=dict(required=True),
|
description=dict(required=True),
|
||||||
duration=dict(required=False, type='int'),
|
duration=dict(default=0, type='int'),
|
||||||
api_key=dict(required=True, no_log=True)
|
api_key=dict(required=True, no_log=True)
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
annotation = create_annotation(module)
|
annotation = create_annotation(module)
|
||||||
try:
|
try:
|
||||||
resp = post_annotation(annotation, module.params['api_key'])
|
resp = post_annotation(annotation, module.params['api_key'])
|
||||||
|
|
|
@ -218,7 +218,6 @@ lib/ansible/modules/files/tempfile.py
|
||||||
lib/ansible/modules/files/xattr.py
|
lib/ansible/modules/files/xattr.py
|
||||||
lib/ansible/modules/monitoring/bigpanda.py
|
lib/ansible/modules/monitoring/bigpanda.py
|
||||||
lib/ansible/modules/monitoring/boundary_meter.py
|
lib/ansible/modules/monitoring/boundary_meter.py
|
||||||
lib/ansible/modules/monitoring/circonus_annotation.py
|
|
||||||
lib/ansible/modules/monitoring/datadog_event.py
|
lib/ansible/modules/monitoring/datadog_event.py
|
||||||
lib/ansible/modules/monitoring/icinga2_feature.py
|
lib/ansible/modules/monitoring/icinga2_feature.py
|
||||||
lib/ansible/modules/monitoring/librato_annotation.py
|
lib/ansible/modules/monitoring/librato_annotation.py
|
||||||
|
|
Loading…
Reference in a new issue