aboutsummaryrefslogtreecommitdiffstats
path: root/src/dma/pkg
diff options
context:
space:
mode:
authorToshiaki Takahashi <takahashi.tsc@ncos.nec.co.jp>2018-09-06 09:04:29 +0000
committerToshiaki Takahashi <takahashi.tsc@ncos.nec.co.jp>2018-09-07 06:03:01 +0000
commitd61931341176dad9ccff7c967a10d88fe54218fa (patch)
tree526457882d4abe0c38d2242d6daa311bf8ef51cf /src/dma/pkg
parent73abc060f31a6bf866fa1dad0a1a6efdfd94d775 (diff)
src: Add DMA localagent
Change-Id: Ibcee814fbc9a904448eeb368a1a26bbb69cf54aa Signed-off-by: Toshiaki Takahashi <takahashi.tsc@ncos.nec.co.jp>
Diffstat (limited to 'src/dma/pkg')
-rw-r--r--src/dma/pkg/common/redispool.go72
-rw-r--r--src/dma/pkg/common/types.go29
2 files changed, 101 insertions, 0 deletions
diff --git a/src/dma/pkg/common/redispool.go b/src/dma/pkg/common/redispool.go
new file mode 100644
index 00000000..3c19a195
--- /dev/null
+++ b/src/dma/pkg/common/redispool.go
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2018 NEC 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 common
+
+import (
+ "github.com/go-redis/redis"
+ "log"
+)
+
+// RedisPool is an implementation of Pool by redis.
+type RedisPool struct {
+ Client *redis.Client
+}
+
+// Set is to set data in redis.
+func (thisPool RedisPool) Set(key string, data string) error {
+ key = redisLabel + "/" + key
+ err := thisPool.Client.Set(key, data, 0).Err()
+ if err != nil {
+ log.Printf("redis Set error: %s", err)
+ }
+ return err
+}
+
+// Get is to get data in redis.
+func (thisPool RedisPool) Get(key string) (string, error) {
+ key = redisLabel + "/" + key
+ value, err := thisPool.Client.Get(key).Result()
+ if err != nil {
+ log.Printf("redis Get error: %s", err)
+ }
+ return value, err
+}
+
+// Del is to delete data in redis.
+func (thisPool RedisPool) Del(key string) error {
+ key = redisLabel + "/" + key
+ err := thisPool.Client.Del(key).Err()
+ if err != nil {
+ log.Printf("redis Del error: %s", err)
+ }
+ return err
+}
+
+// DelAll is to delete all data, begins with <redisLabel>, in redis.
+func (thisPool RedisPool) DelAll() error {
+ pattern := redisLabel + "/*"
+
+ keys, err := thisPool.Client.Keys(pattern).Result()
+ if err != nil {
+ log.Printf("redis Keys error :%s", err)
+ }
+
+ for _, v := range keys {
+ thisPool.Client.Del(v)
+ }
+ return err
+}
diff --git a/src/dma/pkg/common/types.go b/src/dma/pkg/common/types.go
new file mode 100644
index 00000000..98f605e9
--- /dev/null
+++ b/src/dma/pkg/common/types.go
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2018 NEC 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 common
+
+// redisLabel is prefix of local-agent for redis
+const redisLabel = "barometer-dma"
+
+// Pool is an interface of DB pool to annotate.
+// e.g. Set("virt_name/instance-00000001", "{"OS-name": "testvm1"}")
+// e.g. Set("virt_if/tap1e793b2b-8e", "{"OS-uuid": "df846647-c16a-4d8a-842a-ac39bd4a971e"}")
+type Pool interface {
+ Set(string, string) error // (key, JsonData)
+ Get(string) (string, error) // (key, infoName)
+ Del(string) error // (key)
+}