aboutsummaryrefslogtreecommitdiffstats
path: root/src/k8splugin/db/store.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/k8splugin/db/store.go')
-rw-r--r--src/k8splugin/db/store.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/k8splugin/db/store.go b/src/k8splugin/db/store.go
new file mode 100644
index 00000000..c1a8b31f
--- /dev/null
+++ b/src/k8splugin/db/store.go
@@ -0,0 +1,66 @@
+/*
+Copyright 2018 Intel Corporation.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package db
+
+import (
+ "encoding/json"
+ "reflect"
+
+ pkgerrors "github.com/pkg/errors"
+)
+
+// DBconn interface used to talk a concrete Database connection
+var DBconn Store
+
+// Store is an interface for accessing a database
+type Store interface {
+ HealthCheck() error
+
+ Create(string, string) error
+ Read(string) (string, error)
+ // Update(string) (string, error)
+ Delete(string) error
+
+ ReadAll(string) ([]string, error)
+}
+
+// CreateDBClient creates the DB client
+func CreateDBClient(dbType string) error {
+ var err error
+ switch dbType {
+ case "consul":
+ DBconn, err = NewConsulStore(nil)
+ default:
+ return pkgerrors.New(dbType + "DB not supported")
+ }
+ return err
+}
+
+// Serialize converts given data into a JSON string
+func Serialize(v interface{}) (string, error) {
+ out, err := json.Marshal(v)
+ if err != nil {
+ return "", pkgerrors.Wrap(err, "Error serializing "+reflect.TypeOf(v).String())
+ }
+ return string(out), nil
+}
+
+// DeSerialize converts string to a json object specified by type
+func DeSerialize(str string, v interface{}) error {
+ err := json.Unmarshal([]byte(str), &v)
+ if err != nil {
+ return pkgerrors.Wrap(err, "Error deSerializing "+str)
+ }
+ return nil
+}