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/modules/ |
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/modules/peeringdb.py |
""" PeeringDB Module ================ .. versionadded:: 2019.2.0 Execution module for the basic interaction with the `PeeringDB <https://www.peeringdb.com/>`_ API. While for GET operations (the functions prefixed by ``get_``) the credentials are optional, there are some specific details that are visible only to authenticated users. Moreover, the credentials are required when adding or updating information. That means, the module can equally work out of the box without any further configuration with the limitations imposed by the PeeringDB API. For complete API documentation, please refer to https://www.peeringdb.com/apidocs/. Configuration (in the opts or Pillar): .. code-block:: yaml peeringdb: username: salt password: 5@1t """ import logging # Import salt modules import salt.utils.http from salt.utils.args import clean_kwargs log = logging.getLogger(__name__) __virtualname__ = "peeringdb" __proxyenabled__ = ["*"] PEERINGDB_URL = "https://www.peeringdb.com/api" def __virtual__(): return __virtualname__ def _get_auth(username=None, password=None): peeringdb_cfg = __salt__["config.merge"]("peeringdb", default={}) if not username: username = peeringdb_cfg.get("username", username) if not password: password = peeringdb_cfg.get("password", password) return username, password def _build_url(endpoint, id=None): if id: return f"{PEERINGDB_URL}/{endpoint}/{id}" return f"{PEERINGDB_URL}/{endpoint}" def _get_endpoint(endpoint, id=None, **kwargs): username, password = _get_auth( kwargs.pop("username", None), kwargs.pop("password", None) ) kwargs = clean_kwargs(**kwargs) url = _build_url(endpoint, id=id) ret = {"comment": "", "result": True, "out": None} res = salt.utils.http.query( url, method="GET", decode=True, username=username, password=password, params=kwargs, ) if "error" in res: ret.update({"result": False, "comment": res["error"]}) return ret ret["out"] = res["dict"]["data"] return ret def get_net(**kwargs): """ Return the details of a network identified using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible networks registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/net/net_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_net id=4224 salt '*' peeringdb.get_net asn=13335 salt '*' peeringdb.get_net city='Salt Lake City' salt '*' peeringdb.get_net name__startswith=GTT """ return _get_endpoint("net", **kwargs) def get_fac(**kwargs): """ Return the details of the facility identified using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netfac/netfac_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_fac id=1774 salt '*' peeringdb.get_fac state=UT """ return _get_endpoint("fac", **kwargs) def get_ix(**kwargs): """ Return the details of an IX (Internet Exchange) using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible IXs registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ix/ix_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_ix id=1 salt '*' peeringdb.get_ix city='Milwaukee' """ return _get_endpoint("ix", **kwargs) def get_ixfac(**kwargs): """ Return the details of an IX (Internet Exchange) facility using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible IX facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixfac/ixfac_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_ixfac id=1 salt '*' peeringdb.get_ixfac city='Milwaukee' """ return _get_endpoint("ixfac", **kwargs) def get_ixlan(**kwargs): """ Return the details of an IX (Internet Exchange) together with the networks available in this location (and their details), using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible IX LAN facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixlan/ixlan_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_ixlan id=780 salt '*' peeringdb.get_ixlan city='Milwaukee' """ return _get_endpoint("ixlan", **kwargs) def get_ixpfx(**kwargs): """ Return the details of an IX (Internet Exchange) together with the PeeringDB IDs of the networks available in this location, using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible IX LAN facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixpfx/ixpfx_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_ixpfx id=780 salt '*' peeringdb.get_ixpfx city='Milwaukee' """ return _get_endpoint("ixpfx", **kwargs) def get_netfac(**kwargs): """ Return the list of facilities used by a particular network, given the ``id`` or other filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible network facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netfac/netfac_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_netfac id=780 salt '*' peeringdb.get_netfac city='Milwaukee' """ return _get_endpoint("netfac", **kwargs) def get_netixlan(**kwargs): """ Return the IP addresses used by a particular network at all the IXs where it is available. The network is selected either via the ``id`` argument or the other filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible IP addresses, of all networks, at all IXs, registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netixlan/netixlan_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_netixlan asn=13335 salt '*' peeringdb.get_netixlan ipaddr4=185.1.114.25 """ return _get_endpoint("netixlan", **kwargs) def get_org(**kwargs): """ Return the details of an organisation together with the networks available in this location, using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible organisations registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/org/org_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_org id=2 salt '*' peeringdb.get_org city=Duesseldorf """ return _get_endpoint("org", **kwargs) def get_poc(**kwargs): """ Return the details of a person of contact together using the search filters specified in the query. .. note:: If no ``id`` or filter arguments are specified, it will return all the possible contacts registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/poc/poc_list CLI Example: .. code-block:: bash salt '*' peeringdb.get_poc id=6721 salt '*' peeringdb.get_poc email__contains='@cloudflare.com' """ return _get_endpoint("poc", **kwargs)