def notify(self, alert, query, user, new_state, app, host, options): try: data = { "event": "alert_state_change", "alert": serialize_alert(alert, full=False), "url_base": host, } data["alert"]["description"] = alert.custom_body data["alert"]["title"] = alert.custom_subject headers = {"Content-Type": "application/json"} auth = (HTTPBasicAuth(options.get("username"), options.get("password")) if options.get("username") else None) resp = requests.post( options.get("url"), data=json_dumps(data), auth=auth, headers=headers, timeout=5.0, ) if resp.status_code != 200: logging.error( "webhook send ERROR. status_code => {status}".format( status=resp.status_code)) except Exception: logging.exception("webhook send ERROR.")
def post(self): req = request.get_json(True) require_fields(req, ('options', 'name', 'query_id')) query = models.Query.get_by_id_and_org(req['query_id'], self.current_org) require_access(query.groups, self.current_user, view_only) alert = models.Alert( name=req['name'], query_rel=query, user=self.current_user, rearm=req.get('rearm'), options=req['options'] ) models.db.session.add(alert) models.db.session.flush() models.db.session.commit() self.record_event({ 'action': 'create', 'timestamp': int(time.time()), 'object_id': alert.id, 'object_type': 'alert' }) return serialize_alert(alert)
def post(self): req = request.get_json(True) require_fields(req, ('options', 'name', 'query_id')) query = models.Query.get_by_id_and_org(req['query_id'], self.current_org) require_access(query, self.current_user, view_only) alert = models.Alert( name=req['name'], query_rel=query, user=self.current_user, rearm=req.get('rearm'), options=req['options'], ) models.db.session.add(alert) models.db.session.flush() models.db.session.commit() self.record_event({ 'action': 'create', 'object_id': alert.id, 'object_type': 'alert' }) return serialize_alert(alert)
def post(self, alert_id): ## 获得参数 req = request.get_json(True) ## 提取参数 params = project(req, ('options', 'name', 'query_id', 'rearm')) ## 根据参数查询 alert = get_object_or_404(Alert.get_by_id_and_org, alert_id, self.current_org) ##判断权限 require_admin_or_owner(alert.user.id) ###### # for k, v in updates.items(): # setattr(model, k, v) # 进行更新 self.update_model(alert, params) ####### # 提交更新 session.commit() self.record_event({ 'action': 'edit', 'timestamp': int(time.time()), 'object_id': alert.id, 'object_type': 'alert' }) # serialize_alert 对返回的查询列,进行特定处理,转换为前端需要的json return serialize_alert(alert)
def post(self): # 忽视mimetype类型,强制为Json类型 req = request.get_json(True) # 判断请求参数 require_fields(req, ('options', 'name', 'query_id')) #### 根据哪个query_id创建的alert query = Query.get_by_id_and_org(req['query_id'], self.current_org) ## 权限系统?????????????? require_access(query.groups, self.current_user, view_only) # query_rel 是 relationShip, 传对方的行对象,需要提供 # 但是不用提供外键对应的列 alert = Alert(name=req['name'], query_rel=query, user=self.current_user, rearm=req.get('rearm'), options=req['options']) session.add(alert) session.flush() session.commit() self.record_event({ 'action': 'create', 'timestamp': int(time.time()), 'object_id': alert.id, 'object_type': 'alert' }) ### RESETFUL 规范, 不能只是响应个200,就完事了, 最好把创建好的东西返回给前端 return serialize_alert(alert)
def notify(self, alert, query, user, new_state, app, host, options): try: data = { 'event': 'alert_state_change', 'alert': serialize_alert(alert, full=False), 'url_base': host, } data['alert']['description'] = alert.render_template() data['alert']['title'] = alert.custom_subject headers = {'Content-Type': 'application/json'} auth = HTTPBasicAuth( options.get('username'), options.get('password')) if options.get('username') else None resp = requests.post(options.get('url'), data=json_dumps(data), auth=auth, headers=headers, timeout=5.0) if resp.status_code != 200: logging.error( "webhook send ERROR. status_code => {status}".format( status=resp.status_code)) except Exception: logging.exception("webhook send ERROR.")
def post(self): req = request.get_json(True) require_fields(req, ("options", "name", "query_id")) query = models.Query.get_by_id_and_org(req["query_id"], self.current_org) require_access(query, self.current_user, view_only) alert = models.Alert( name=req["name"], query_rel=query, user=self.current_user, rearm=req.get("rearm"), options=req["options"], ) models.db.session.add(alert) models.db.session.flush() models.db.session.commit() self.record_event({ "action": "create", "object_id": alert.id, "object_type": "alert" }) return serialize_alert(alert)
def get(self, alert_id): alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert, self.current_user, view_only) self.record_event({ 'action': 'view', 'object_id': alert.id, 'object_type': 'alert' }) return serialize_alert(alert)
def get(self, alert_id): alert = get_object_or_404(Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert.groups, self.current_user, view_only) # serialize_alert 对返回的查询列,进行特定处理,转换为前端需要的json return serialize_alert(alert)
def get(self, alert_id): alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert, self.current_user, view_only) self.record_event({ "action": "view", "object_id": alert.id, "object_type": "alert" }) return serialize_alert(alert)
def post(self, alert_id): req = request.get_json(True) params = project(req, ('options', 'name', 'query_id', 'rearm')) alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) self.update_model(alert, params) models.db.session.commit() return serialize_alert(alert)
def get(self, alert_id): alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert.groups, self.current_user, view_only) self.record_event({ 'action': 'view', 'timestamp': int(time.time()), 'object_id': alert.id, 'object_type': 'alert' }) return serialize_alert(alert) return alert.to_dict()
def notify(self, alert, query, user, new_state, app, host, options): try: data = { 'event': 'alert_state_change', 'alert': serialize_alert(alert, full=False), 'url_base': host } headers = {'Content-Type': 'application/json'} auth = HTTPBasicAuth(options.get('username'), options.get('password')) if options.get('username') else None resp = requests.post(options.get('url'), data=json_dumps(data), auth=auth, headers=headers, timeout=5.0) if resp.status_code != 200: logging.error("webhook send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("webhook send ERROR.")
def post(self, alert_id): req = request.get_json(True) params = project(req, ("options", "name", "query_id", "rearm")) alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) self.update_model(alert, params) models.db.session.commit() self.record_event({ "action": "edit", "object_id": alert.id, "object_type": "alert" }) return serialize_alert(alert)
def post(self, alert_id): req = request.get_json(True) params = project(req, ('options', 'name', 'query_id', 'rearm')) alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) self.update_model(alert, params) models.db.session.commit() self.record_event({ 'action': 'edit', 'timestamp': int(time.time()), 'object_id': alert.id, 'object_type': 'alert' }) return serialize_alert(alert)
def get(self): return [serialize_alert(alert) for alert in models.Alert.all(group_ids=self.current_user.group_ids)]
def get(self, alert_id): alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert, self.current_user, view_only) return serialize_alert(alert)
def get(self): self.record_event({"action": "list", "object_type": "alert"}) return [ serialize_alert(alert) for alert in models.Alert.all( group_ids=self.current_user.group_ids) ]
def get(self): return [ serialize_alert(alert) for alert in models.Alert.all( group_ids=self.current_user.group_ids) ]
def get(self, alert_id): alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert.groups, self.current_user, view_only) return serialize_alert(alert)
def get(self): self.record_event({ 'action': 'list', 'object_type': 'alert' }) return [serialize_alert(alert) for alert in models.Alert.all(group_ids=self.current_user.group_ids)]