diff options
author | Victor Morales <victor.morales@intel.com> | 2019-01-24 17:46:43 -0800 |
---|---|---|
committer | Victor Morales <victor.morales@intel.com> | 2019-01-25 16:52:38 -0800 |
commit | 083465d10c8fdeaffa89aa7daa93def3eca77df1 (patch) | |
tree | 23135a724a1628e986f9c6748b82f275763cdf10 /src/k8splugin/db/consul.go | |
parent | 5c4e91705457dc4bdb5526e6f5210fa879ab659d (diff) |
Use a standard Go project layout
This project wasn't following some Standard Go Project Layout
guidelines(https://github.com/golang-standards/project-layout). This
change pretends to organize the source code and following those
guidelines.
Change-Id: I61085ac20f28069cede013f83034bed06892d87c
Signed-off-by: Victor Morales <victor.morales@intel.com>
Issue-ID: MULTICLOUD-301
Diffstat (limited to 'src/k8splugin/db/consul.go')
-rw-r--r-- | src/k8splugin/db/consul.go | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/src/k8splugin/db/consul.go b/src/k8splugin/db/consul.go deleted file mode 100644 index a61a4c10..00000000 --- a/src/k8splugin/db/consul.go +++ /dev/null @@ -1,118 +0,0 @@ -/* -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 ( - "os" - - "github.com/hashicorp/consul/api" - pkgerrors "github.com/pkg/errors" -) - -// ConsulKVStore defines the a subset of Consul DB operations -// Note: This interface is defined mainly for allowing mock testing -type ConsulKVStore interface { - List(prefix string, q *api.QueryOptions) (api.KVPairs, *api.QueryMeta, error) - Get(key string, q *api.QueryOptions) (*api.KVPair, *api.QueryMeta, error) - Put(p *api.KVPair, q *api.WriteOptions) (*api.WriteMeta, error) - Delete(key string, w *api.WriteOptions) (*api.WriteMeta, error) -} - -// ConsulStore is an implementation of the ConsulKVStore interface -type ConsulStore struct { - client ConsulKVStore -} - -// NewConsulStore initializes a Consul Store instance using the default values -func NewConsulStore(store ConsulKVStore) (Store, error) { - if store == nil { - config := api.DefaultConfig() - config.Address = os.Getenv("DATABASE_IP") + ":8500" - - consulClient, err := api.NewClient(config) - if err != nil { - return nil, err - } - store = consulClient.KV() - } - - return &ConsulStore{ - client: store, - }, nil -} - -// HealthCheck verifies if the database is up and running -func (c *ConsulStore) HealthCheck() error { - _, err := c.Read("test", "test", "test") - if err != nil { - return pkgerrors.New("[ERROR] Cannot talk to Datastore. Check if it is running/reachable.") - } - return nil -} - -// Unmarshal implements any unmarshaling that is needed when using consul -func (c *ConsulStore) Unmarshal(inp []byte, out interface{}) error { - return nil -} - -// Create is used to create a DB entry -func (c *ConsulStore) Create(root, key, tag string, data interface{}) error { - - value, err := Serialize(data) - if err != nil { - return pkgerrors.Wrap(err, "Serializing input data") - } - - p := &api.KVPair{ - Key: key, - Value: []byte(value), - } - _, err = c.client.Put(p, nil) - return err -} - -// Read method returns the internalID for a particular externalID -func (c *ConsulStore) Read(root, key, tag string) ([]byte, error) { - key = root + "/" + key + "/" + tag - pair, _, err := c.client.Get(key, nil) - if err != nil { - return nil, err - } - if pair == nil { - return nil, nil - } - return pair.Value, nil -} - -// Delete method removes an internalID from the Database -func (c *ConsulStore) Delete(root, key, tag string) error { - _, err := c.client.Delete(key, nil) - return err -} - -// ReadAll is used to get all ExternalIDs in a namespace -func (c *ConsulStore) ReadAll(root, tag string) (map[string][]byte, error) { - pairs, _, err := c.client.List(root, nil) - if err != nil { - return nil, err - } - - //TODO: Filter results by tag and return it - result := make(map[string][]byte) - for _, keypair := range pairs { - result[keypair.Key] = keypair.Value - } - - return result, nil -} |