-
Notifications
You must be signed in to change notification settings - Fork 7
/
cmStoreClient.go
87 lines (66 loc) · 1.87 KB
/
cmStoreClient.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"encoding/json"
libDatabox "github.com/me-box/lib-go-databox"
)
type CMStore struct {
Store *libDatabox.CoreStoreClient
}
const slaStoreID = "slaStore"
func NewCMStore(store *libDatabox.CoreStoreClient) *CMStore {
//setup SLAStore
store.RegisterDatasource(libDatabox.DataSourceMetadata{
Description: "Persistent SLA storage",
ContentType: "json",
Vendor: "databox",
DataSourceType: "databox:container-manager:SLA",
DataSourceID: slaStoreID,
StoreType: "kv",
IsActuator: false,
Location: "",
Unit: "",
})
return &CMStore{Store: store}
}
func (s CMStore) SaveSLA(sla libDatabox.SLA) error {
payload, err := json.Marshal(sla)
if err != nil {
return err
}
return s.Store.KVJSON.Write(slaStoreID, sla.Name, payload)
}
func (s CMStore) GetAllSLAs() ([]libDatabox.SLA, error) {
var slaList []libDatabox.SLA
keys, err := s.Store.KVJSON.ListKeys(slaStoreID)
if err != nil {
return nil, err
}
for _, k := range keys {
var sla libDatabox.SLA
payload, err := s.Store.KVJSON.Read(slaStoreID, k)
if err != nil {
libDatabox.Err("[GetAllSLAs] failed to get " + slaStoreID + ". " + err.Error())
continue
}
err = json.Unmarshal(payload, &sla)
if err != nil {
libDatabox.Err("[GetAllSLAs] failed decode SLA for " + slaStoreID + ". " + err.Error())
continue
}
slaList = append(slaList, sla)
}
return slaList, err
}
func (s CMStore) DeleteSLA(name string) error {
return s.Store.KVJSON.Delete(slaStoreID, name)
}
func (s CMStore) ClearSLADatabase() error {
return s.Store.KVJSON.DeleteAll(slaStoreID)
}
func (s CMStore) SavePassword(password string) error {
return s.Store.KVText.Write(slaStoreID, "CMPassword", []byte(password))
}
func (s CMStore) LoadPassword() (string, error) {
password, err := s.Store.KVText.Read(slaStoreID, "CMPassword")
return string(password), err
}