diff --git a/hyperglass/external/__init__.py b/hyperglass/external/__init__.py index 358b0d8..a8363e4 100644 --- a/hyperglass/external/__init__.py +++ b/hyperglass/external/__init__.py @@ -1,5 +1,19 @@ """Functions & handlers for external data.""" # Local -from .ripestat import RIPEStat # noqa: F401 -from .webhooks import Webhook # noqa: F401 +from .rpki import rpki_state +from .slack import SlackHook +from .generic import BaseExternal +from .msteams import MSTeams +from .bgptools import network_info, network_info_sync +from .webhooks import Webhook + +__all__ = ( + "BaseExternal", + "MSTeams", + "network_info_sync", + "network_info", + "rpki_state", + "SlackHook", + "Webhook", +) diff --git a/hyperglass/external/ripestat.py b/hyperglass/external/ripestat.py deleted file mode 100644 index fe8e6ae..0000000 --- a/hyperglass/external/ripestat.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Session handler for RIPEStat Data API.""" - -# Standard Library -from ipaddress import ip_address, ip_network - -# Project -from hyperglass.log import log -from hyperglass.external._base import BaseExternal - - -class RIPEStat(BaseExternal, name="RIPEStat"): - """RIPEStat session handler.""" - - def __init__(self): - """Initialize external base class with RIPEStat connection details.""" - - super().__init__( - base_url="https://stat.ripe.net", uri_prefix="/data", uri_suffix="data.json" - ) - - def network_info_sync(self, resource, serialize=False): - """Get network info via RIPE's Network Info API endpoint (synchronously). - - See: https://stat.ripe.net/docs/data_api#network-info - """ - try: - valid_ip = ip_address(resource) - - if not valid_ip.is_global: - log.debug("IP {ip} is not a global address", ip=str(valid_ip)) - return {"prefix": None, "asn": None} - - except ValueError: - log.debug("'{resource}' is not a valid IP address", resource=resource) - return {"prefix": None, "asn": None} - - raw = self._get(endpoint="network-info", params={"resource": valid_ip}) - - data = { - "asns": raw["data"]["asns"], - "prefix": ip_network(raw["data"]["prefix"]), - } - - if serialize: - data["prefix"] = str(data["prefix"]) - data["asns"] = data["asns"][0] - - log.debug("Collected network info from RIPEState: {i}", i=str(data)) - return data - - async def network_info(self, resource, serialize=False): - """Get network info via RIPE's Network Info API endpoint. - - See: https://stat.ripe.net/docs/data_api#network-info - """ - try: - valid_ip = ip_address(resource) - - if not valid_ip.is_global: - log.debug("IP {ip} is not a global address", ip=str(valid_ip)) - return {"prefix": None, "asn": None} - - except ValueError: - log.debug("'{resource}' is not a valid IP address", resource=resource) - return {"prefix": None, "asn": None} - - raw = await self._aget(endpoint="network-info", params={"resource": valid_ip}) - - data = { - "asns": raw["data"]["asns"], - "prefix": ip_network(raw["data"]["prefix"]), - } - - if serialize: - data["prefix"] = str(data["prefix"]) - data["asns"] = data["asns"][0] - - log.debug("Collected network info from RIPEState: {i}", i=str(data)) - return data