mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-08 06:12:51 +00:00
Reformat everything.
This commit is contained in:
@@ -223,36 +223,32 @@ from urllib.parse import urlparse, urlencode, urlunparse
|
||||
|
||||
|
||||
def check(module, name, state, service_id, integration_key, api_key, incident_key=None, http_call=fetch_url):
|
||||
url = 'https://api.pagerduty.com/incidents'
|
||||
url = "https://api.pagerduty.com/incidents"
|
||||
headers = {
|
||||
"Content-type": "application/json",
|
||||
"Authorization": f"Token token={api_key}",
|
||||
'Accept': 'application/vnd.pagerduty+json;version=2'
|
||||
"Accept": "application/vnd.pagerduty+json;version=2",
|
||||
}
|
||||
|
||||
params = {
|
||||
'service_ids[]': service_id,
|
||||
'sort_by': 'incident_number:desc',
|
||||
'time_zone': 'UTC'
|
||||
}
|
||||
params = {"service_ids[]": service_id, "sort_by": "incident_number:desc", "time_zone": "UTC"}
|
||||
if incident_key:
|
||||
params['incident_key'] = incident_key
|
||||
params["incident_key"] = incident_key
|
||||
|
||||
url_parts = list(urlparse(url))
|
||||
url_parts[4] = urlencode(params, True)
|
||||
|
||||
url = urlunparse(url_parts)
|
||||
|
||||
response, info = http_call(module, url, method='get', headers=headers)
|
||||
response, info = http_call(module, url, method="get", headers=headers)
|
||||
|
||||
if info['status'] != 200:
|
||||
if info["status"] != 200:
|
||||
module.fail_json(msg=f"failed to check current incident status.Reason: {info['msg']}")
|
||||
|
||||
incidents = json.loads(response.read())["incidents"]
|
||||
msg = "No corresponding incident"
|
||||
|
||||
if len(incidents) == 0:
|
||||
if state in ('acknowledged', 'resolved'):
|
||||
if state in ("acknowledged", "resolved"):
|
||||
return msg, False
|
||||
return msg, True
|
||||
elif state != incidents[0]["status"]:
|
||||
@@ -261,12 +257,9 @@ def check(module, name, state, service_id, integration_key, api_key, incident_ke
|
||||
return incidents[0], False
|
||||
|
||||
|
||||
def send_event_v1(module, service_key, event_type, desc,
|
||||
incident_key=None, client=None, client_url=None):
|
||||
def send_event_v1(module, service_key, event_type, desc, incident_key=None, client=None, client_url=None):
|
||||
url = "https://events.pagerduty.com/generic/2010-04-15/create_event.json"
|
||||
headers = {
|
||||
"Content-type": "application/json"
|
||||
}
|
||||
headers = {"Content-type": "application/json"}
|
||||
|
||||
data = {
|
||||
"service_key": service_key,
|
||||
@@ -274,23 +267,19 @@ def send_event_v1(module, service_key, event_type, desc,
|
||||
"incident_key": incident_key,
|
||||
"description": desc,
|
||||
"client": client,
|
||||
"client_url": client_url
|
||||
"client_url": client_url,
|
||||
}
|
||||
|
||||
response, info = fetch_url(module, url, method='post',
|
||||
headers=headers, data=json.dumps(data))
|
||||
if info['status'] != 200:
|
||||
response, info = fetch_url(module, url, method="post", headers=headers, data=json.dumps(data))
|
||||
if info["status"] != 200:
|
||||
module.fail_json(msg=f"failed to {event_type}. Reason: {info['msg']}")
|
||||
json_out = json.loads(response.read())
|
||||
return json_out
|
||||
|
||||
|
||||
def send_event_v2(module, service_key, event_type, payload, link,
|
||||
incident_key=None, client=None, client_url=None):
|
||||
def send_event_v2(module, service_key, event_type, payload, link, incident_key=None, client=None, client_url=None):
|
||||
url = "https://events.pagerduty.com/v2/enqueue"
|
||||
headers = {
|
||||
"Content-type": "application/json"
|
||||
}
|
||||
headers = {"Content-type": "application/json"}
|
||||
data = {
|
||||
"routing_key": service_key,
|
||||
"event_action": event_type,
|
||||
@@ -304,8 +293,7 @@ def send_event_v2(module, service_key, event_type, payload, link,
|
||||
data["dedup_key"] = incident_key
|
||||
if event_type != "trigger":
|
||||
data.pop("payload")
|
||||
response, info = fetch_url(module, url, method="post",
|
||||
headers=headers, data=json.dumps(data))
|
||||
response, info = fetch_url(module, url, method="post", headers=headers, data=json.dumps(data))
|
||||
if info["status"] != 202:
|
||||
module.fail_json(msg=f"failed to {event_type}. Reason: {info['msg']}")
|
||||
json_out = json.loads(response.read())
|
||||
@@ -320,80 +308,71 @@ def main():
|
||||
integration_key=dict(no_log=True),
|
||||
service_id=dict(),
|
||||
service_key=dict(no_log=True),
|
||||
state=dict(
|
||||
required=True, choices=['triggered', 'acknowledged', 'resolved']
|
||||
),
|
||||
api_version=dict(type='str', default='v1', choices=['v1', 'v2']),
|
||||
state=dict(required=True, choices=["triggered", "acknowledged", "resolved"]),
|
||||
api_version=dict(type="str", default="v1", choices=["v1", "v2"]),
|
||||
client=dict(),
|
||||
client_url=dict(),
|
||||
component=dict(),
|
||||
custom_details=dict(type='dict'),
|
||||
desc=dict(default='Created via Ansible'),
|
||||
custom_details=dict(type="dict"),
|
||||
desc=dict(default="Created via Ansible"),
|
||||
incident_class=dict(),
|
||||
incident_key=dict(no_log=False),
|
||||
link_url=dict(),
|
||||
link_text=dict(),
|
||||
source=dict(),
|
||||
severity=dict(
|
||||
default='critical', choices=['critical', 'warning', 'error', 'info']
|
||||
),
|
||||
severity=dict(default="critical", choices=["critical", "warning", "error", "info"]),
|
||||
),
|
||||
required_if=[
|
||||
('api_version', 'v1', ['service_id', 'api_key']),
|
||||
('state', 'acknowledged', ['incident_key']),
|
||||
('state', 'resolved', ['incident_key']),
|
||||
("api_version", "v1", ["service_id", "api_key"]),
|
||||
("state", "acknowledged", ["incident_key"]),
|
||||
("state", "resolved", ["incident_key"]),
|
||||
],
|
||||
required_one_of=[('service_key', 'integration_key')],
|
||||
required_one_of=[("service_key", "integration_key")],
|
||||
supports_check_mode=True,
|
||||
)
|
||||
|
||||
name = module.params['name']
|
||||
service_id = module.params.get('service_id')
|
||||
integration_key = module.params.get('integration_key')
|
||||
service_key = module.params.get('service_key')
|
||||
api_key = module.params.get('api_key')
|
||||
state = module.params.get('state')
|
||||
client = module.params.get('client')
|
||||
client_url = module.params.get('client_url')
|
||||
desc = module.params.get('desc')
|
||||
incident_key = module.params.get('incident_key')
|
||||
name = module.params["name"]
|
||||
service_id = module.params.get("service_id")
|
||||
integration_key = module.params.get("integration_key")
|
||||
service_key = module.params.get("service_key")
|
||||
api_key = module.params.get("api_key")
|
||||
state = module.params.get("state")
|
||||
client = module.params.get("client")
|
||||
client_url = module.params.get("client_url")
|
||||
desc = module.params.get("desc")
|
||||
incident_key = module.params.get("incident_key")
|
||||
payload = {
|
||||
'summary': desc,
|
||||
'source': module.params.get('source'),
|
||||
'timestamp': datetime.now().isoformat(),
|
||||
'severity': module.params.get('severity'),
|
||||
'component': module.params.get('component'),
|
||||
'class': module.params.get('incident_class'),
|
||||
'custom_details': module.params.get('custom_details'),
|
||||
"summary": desc,
|
||||
"source": module.params.get("source"),
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"severity": module.params.get("severity"),
|
||||
"component": module.params.get("component"),
|
||||
"class": module.params.get("incident_class"),
|
||||
"custom_details": module.params.get("custom_details"),
|
||||
}
|
||||
link = {}
|
||||
if module.params.get('link_url'):
|
||||
link['href'] = module.params.get('link_url')
|
||||
if module.params.get('link_text'):
|
||||
link['text'] = module.params.get('link_text')
|
||||
if module.params.get("link_url"):
|
||||
link["href"] = module.params.get("link_url")
|
||||
if module.params.get("link_text"):
|
||||
link["text"] = module.params.get("link_text")
|
||||
if integration_key is None:
|
||||
integration_key = service_key
|
||||
module.warn(
|
||||
'"service_key" is obsolete parameter and will be removed.'
|
||||
' Please, use "integration_key" instead'
|
||||
)
|
||||
module.warn('"service_key" is obsolete parameter and will be removed. Please, use "integration_key" instead')
|
||||
|
||||
state_event_dict = {
|
||||
'triggered': 'trigger',
|
||||
'acknowledged': 'acknowledge',
|
||||
'resolved': 'resolve',
|
||||
"triggered": "trigger",
|
||||
"acknowledged": "acknowledge",
|
||||
"resolved": "resolve",
|
||||
}
|
||||
|
||||
event_type = state_event_dict[state]
|
||||
if module.params.get('api_version') == 'v1':
|
||||
out, changed = check(module, name, state, service_id,
|
||||
integration_key, api_key, incident_key)
|
||||
if module.params.get("api_version") == "v1":
|
||||
out, changed = check(module, name, state, service_id, integration_key, api_key, incident_key)
|
||||
if not module.check_mode and changed is True:
|
||||
out = send_event_v1(module, integration_key, event_type, desc,
|
||||
incident_key, client, client_url)
|
||||
out = send_event_v1(module, integration_key, event_type, desc, incident_key, client, client_url)
|
||||
else:
|
||||
changed = True
|
||||
if event_type == 'trigger' and not payload['source']:
|
||||
if event_type == "trigger" and not payload["source"]:
|
||||
module.fail_json(msg='"service" is a required variable for v2 api endpoint.')
|
||||
out, changed = send_event_v2(
|
||||
module,
|
||||
@@ -409,5 +388,5 @@ def main():
|
||||
module.exit_json(result=out, changed=changed)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user