From d61931341176dad9ccff7c967a10d88fe54218fa Mon Sep 17 00:00:00 2001 From: Toshiaki Takahashi Date: Thu, 6 Sep 2018 09:04:29 +0000 Subject: src: Add DMA localagent Change-Id: Ibcee814fbc9a904448eeb368a1a26bbb69cf54aa Signed-off-by: Toshiaki Takahashi --- src/dma/pkg/common/redispool.go | 72 +++++++++++++++++++++++++++++++++++++++++ src/dma/pkg/common/types.go | 29 +++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 src/dma/pkg/common/redispool.go create mode 100644 src/dma/pkg/common/types.go (limited to 'src/dma/pkg') 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 , 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) +} -- cgit 1.2.3-korg