Source code for sitchlib.alert_manager
"""Alert Manager."""
from utility import Utility
[docs]class AlertManager(object):
"""AlertManager is used to ensure alerts are consistently formatted."""
def __init__(self, device_id):
"""The device_id arg gets embedded into the alert."""
self.device_id = device_id
self.alert_map = {
100: "Tower out of range.",
110: "Primary BTS metadata change.",
120: "Tower not in feed DB.",
130: "Bad MCC (Mobile Country Code) detected.",
140: "Preferred neighbor outside of LAI.",
141: "Serving cell has no neighbor.",
200: "ARFCN FCCH detected above power threshold.",
300: "GPS geo drift over threshold.",
310: "GPS time delta over threshold.",
400: "Failed to locate a valid license for ARFCN in this area."
}
return
[docs] def get_alert_type(self, alert_id):
"""Return the alert description for alert_id."""
fixed_id = int(alert_id)
alert_text = self.alert_map[fixed_id]
return alert_text
[docs] def build_alert(self, alert_id, alert_message, location=None):
"""Build the actual alert and returns it, formatted.
DEPRECATION NOTICE: The 'alert_id' field has been introduced for
better readability. It's currently set to be the same as 'id'.
At some point in the future, the 'id' field will be removed.
Args:
alert_id (int): The ID of the alert you want to build
alert_message (str): The message to be embedded in the alert.
Returns:
tuple: Position 0 contains the string 'sitch_alert'. Position 1
contains the alert and metadata.
"""
if location is None:
print("AlertManager: No geo for alarm: %s" % str(alert_message))
location = {"type": "Point", "coordinates": [0, 0]}
elif Utility.validate_geojson(location) is False:
print("AlertManager: Invalid geojson %s for: %s" % (location,
alert_message))
location = {"type": "Point", "coordinates": [0, 0]}
lat = location["coordinates"][1]
lon = location["coordinates"][0]
gmaps_url = Utility.create_gmaps_link(lat, lon)
message = Utility.generate_base_event()
message["alert_id"] = alert_id
message["id"] = alert_id
message["alert_type"] = self.get_alert_type(alert_id)
message["event_type"] = "sitch_alert"
message["details"] = ("%s %s" % (alert_message, gmaps_url))
message["location"] = location
retval = ("sitch_alert", message)
return retval