def handler(self): # Get configured probes self.logger.info("Checking SLA Probes") new_probes = {} for p in self.object.scripts.get_sla_probes(): new_probes[p.get("group", ""), p["name"]] = p # Check existing probes for p in SLAProbe.objects.filter(managed_object=self.object.id): group = p.group or "" new_data = new_probes.get((group, p.name)) if not new_data: # Remove stale probe self.logger.info("[%s|%s] Removing probe", group, p.name) p.fire_event("missed") continue self.update_if_changed( p, { "description": new_data.get("description"), "type": new_data["type"], "target": new_data["target"], "hw_timestamp": new_data.get("hw_timestamp", False), "labels": [ ll for ll in new_data.get("tags", []) if Label.get_effective_setting(ll, "enable_slaprobe") ], }, ) p.fire_event("seen") if not new_data["status"]: p.fire_event("down") else: p.fire_event("up") p.touch() del new_probes[group, p.name] # Add remaining probes for group, name in new_probes: self.logger.info("[%s|%s] Creating probe", group, name) new_data = new_probes.get((group, name)) probe = SLAProbe( managed_object=self.object, name=name, profile=SLAProfile.get_default_profile(), group=group, description=new_data.get("description"), type=new_data["type"], target=new_data["target"], hw_timestamp=new_data.get("hw_timestamp", False), labels=new_data.get("tags", []), ) probe.save() if not new_data["status"]: probe.fire_event("down")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_sensor")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_subscriberprofile")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_commandsnippet")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_ipaddressrange")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_allocationgroup")
def can_set_label(cls, label): return Label.get_effective_setting(label, "enable_objectmodel")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_dnszonerecord")
def can_set_label(cls, label): return Label.get_effective_setting(label, "enable_vc")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_resourcegroup")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_prefixprofile")
def can_set_label(cls, label): return Label.get_effective_setting(label, setting="enable_administrativedomain")
def can_set_label(cls, label): return Label.get_effective_setting( label, setting="enable_managedobjectprofile")
def can_set_label(cls, label): return Label.get_effective_setting(label, "enable_serviceprofile")