mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
feat(api): export annotation settings in the API
This commit is contained in:
50
internal/mock/mock.py
Normal file
50
internal/mock/mock.py
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
|
||||
import random
|
||||
import time
|
||||
|
||||
|
||||
def send_alert(annotations, labels):
|
||||
data = {
|
||||
"annotations": annotations,
|
||||
"labels": data,
|
||||
"generatorURL": "http://localhost:9093"
|
||||
}
|
||||
req = urllib2.Request('http://localhost:9093/api/v1/alerts')
|
||||
req.add_header('Content-Type', 'application/json')
|
||||
response = urllib2.urlopen(req, json.dumps(data))
|
||||
print(response)
|
||||
|
||||
|
||||
class FlappingAlert(object):
|
||||
|
||||
annotations = {}
|
||||
labels = {}
|
||||
|
||||
def __init__(self, active_for, idle_for, splay):
|
||||
self._active_for = active_for
|
||||
self._idle_for = idle_for
|
||||
self._max_splay = splay
|
||||
|
||||
self.active = True
|
||||
self.last_change = time.time()
|
||||
self.splay = self.random_splay()
|
||||
|
||||
def random_splay(self):
|
||||
return random.randrange(0, self._max_splay)
|
||||
|
||||
def tick():
|
||||
if time.time() >= self.last_change + self.splay:
|
||||
self.active = !self.active
|
||||
self.last_change = time.time()
|
||||
self.splay = self.random_splay()
|
||||
|
||||
if self.active:
|
||||
send_alert(self.annotations, self.labels)
|
||||
|
||||
|
||||
def main():
|
||||
alerts = [
|
||||
|
||||
]
|
||||
@@ -160,7 +160,10 @@ func (ag *APIAlertGroup) DedupSharedMaps() {
|
||||
|
||||
// Settings is used to export unsee configuration that is used by UI
|
||||
type Settings struct {
|
||||
StaticColorLabels []string `json:"staticColorLabels"`
|
||||
StaticColorLabels []string `json:"staticColorLabels"`
|
||||
AnnotationsDefaultHidden bool `json:"annotationsDefaultHidden"`
|
||||
AnnotationsHidden []string `json:"annotationsHidden"`
|
||||
AnnotationsVisible []string `json:"annotationsVisible"`
|
||||
}
|
||||
|
||||
// AlertsResponse is the structure of JSON response UI will use to get alert data
|
||||
|
||||
5
views.go
5
views.go
@@ -63,7 +63,10 @@ func alerts(c *gin.Context) {
|
||||
resp.Version = version
|
||||
resp.Upstreams = getUpstreams()
|
||||
resp.Settings = models.Settings{
|
||||
StaticColorLabels: config.Config.Labels.Color.Static,
|
||||
StaticColorLabels: config.Config.Labels.Color.Static,
|
||||
AnnotationsDefaultHidden: config.Config.Annotations.Default.Hidden,
|
||||
AnnotationsHidden: config.Config.Annotations.Hidden,
|
||||
AnnotationsVisible: config.Config.Annotations.Visible,
|
||||
}
|
||||
|
||||
// use full URI (including query args) as cache key
|
||||
|
||||
Reference in New Issue
Block a user