PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/pagerduty.py |
""" Library for interacting with PagerDuty API .. versionadded:: 2014.7.0 :configuration: This module can be used by specifying the name of a configuration profile in the minion config, minion pillar, or master config. For example: .. code-block:: yaml my-pagerduty-account: pagerduty.subdomain: mysubdomain pagerduty.api_key: F3Rbyjbve43rfFWf2214 """ import logging import salt.utils.http import salt.utils.json from salt.version import __version__ log = logging.getLogger(__name__) def query( method="GET", profile_dict=None, url=None, path="api/v1", action=None, api_key=None, service=None, params=None, data=None, subdomain=None, client_url=None, description=None, opts=None, verify_ssl=True, ): """ Query the PagerDuty API """ user_agent = f"SaltStack {__version__}" if opts is None: opts = {} if isinstance(profile_dict, dict): creds = profile_dict else: creds = {} if api_key is not None: creds["pagerduty.api_key"] = api_key if service is not None: creds["pagerduty.service"] = service if subdomain is not None: creds["pagerduty.subdomain"] = subdomain if client_url is None: client_url = "https://{}.pagerduty.com".format(creds["pagerduty.subdomain"]) if url is None: url = "https://{}.pagerduty.com/{}/{}".format( creds["pagerduty.subdomain"], path, action ) if params is None: params = {} if data is None: data = {} data["client"] = user_agent # pagerduty.service is not documented. While it makes sense to have in # some cases, don't force it when it is not defined. if "pagerduty.service" in creds and creds["pagerduty.service"] is not None: data["service_key"] = creds["pagerduty.service"] data["client_url"] = client_url if "event_type" not in data: data["event_type"] = "trigger" if "description" not in data: if not description: data["description"] = "SaltStack Event Triggered" else: data["description"] = description headers = { "User-Agent": user_agent, "Authorization": "Token token={}".format(creds["pagerduty.api_key"]), } if method == "GET": data = {} else: headers["Content-type"] = "application/json" result = salt.utils.http.query( url, method, params=params, header_dict=headers, data=salt.utils.json.dumps(data), decode=False, text=True, opts=opts, ) return result["text"] def list_items(action, key, profile_dict=None, api_key=None, opts=None): """ List items belonging to an API call. Used for list_services() and list_incidents() """ items = salt.utils.json.loads( query(profile_dict=profile_dict, api_key=api_key, action=action, opts=opts) ) ret = {} for item in items[action]: ret[item[key]] = item return ret