VOL-2112 move to voltha-lib-go

Change-Id: I3435b8acb982deeab6b6ac28e798d7722ad01d0a
diff --git a/vendor/github.com/opencord/voltha-go/adapters/README.md b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/README.md
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/README.md
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/README.md
diff --git a/vendor/github.com/opencord/voltha-go/adapters/adapterif/adapter_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/adapter_proxy_if.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/adapterif/adapter_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/adapter_proxy_if.go
diff --git a/vendor/github.com/opencord/voltha-go/adapters/adapterif/core_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/core_proxy_if.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/adapterif/core_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/core_proxy_if.go
diff --git a/vendor/github.com/opencord/voltha-go/adapters/adapterif/events_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/events_proxy_if.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/adapterif/events_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/adapterif/events_proxy_if.go
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/adapter_proxy.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/adapter_proxy.go
similarity index 96%
rename from vendor/github.com/opencord/voltha-go/adapters/common/adapter_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/adapter_proxy.go
index 6c32422..fee70c8 100644
--- a/vendor/github.com/opencord/voltha-go/adapters/common/adapter_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/adapter_proxy.go
@@ -21,8 +21,8 @@
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/any"
 	"github.com/google/uuid"
-	"github.com/opencord/voltha-go/common/log"
-	"github.com/opencord/voltha-go/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	ic "github.com/opencord/voltha-protos/go/inter_container"
 	"time"
 )
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/core_proxy.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/core_proxy.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-go/adapters/common/core_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/core_proxy.go
index c9f332c..30117ca 100644
--- a/vendor/github.com/opencord/voltha-go/adapters/common/core_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/core_proxy.go
@@ -19,8 +19,8 @@
 	"context"
 	"github.com/golang/protobuf/ptypes"
 	a "github.com/golang/protobuf/ptypes/any"
-	"github.com/opencord/voltha-go/common/log"
-	"github.com/opencord/voltha-go/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	ic "github.com/opencord/voltha-protos/go/inter_container"
 	"github.com/opencord/voltha-protos/go/voltha"
 	"google.golang.org/grpc/codes"
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/events_proxy.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/events_proxy.go
similarity index 95%
rename from vendor/github.com/opencord/voltha-go/adapters/common/events_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/events_proxy.go
index 34fcde7..25b1be4 100644
--- a/vendor/github.com/opencord/voltha-go/adapters/common/events_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/events_proxy.go
@@ -23,9 +23,9 @@
 	"strings"
 	"time"
 
-	"github.com/opencord/voltha-go/adapters/adapterif"
-	"github.com/opencord/voltha-go/common/log"
-	"github.com/opencord/voltha-go/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/adapters/adapterif"
+	"github.com/opencord/voltha-lib-go/pkg/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	"github.com/opencord/voltha-protos/go/voltha"
 )
 
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/performance_metrics.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/performance_metrics.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/common/performance_metrics.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/performance_metrics.go
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/request_handler.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/request_handler.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-go/adapters/common/request_handler.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/request_handler.go
index 55e04d7..27f9846 100644
--- a/vendor/github.com/opencord/voltha-go/adapters/common/request_handler.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/request_handler.go
@@ -19,10 +19,10 @@
 	"errors"
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/empty"
-	"github.com/opencord/voltha-go/adapters"
-	"github.com/opencord/voltha-go/adapters/adapterif"
-	"github.com/opencord/voltha-go/common/log"
-	"github.com/opencord/voltha-go/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/adapters"
+	"github.com/opencord/voltha-lib-go/pkg/adapters/adapterif"
+	"github.com/opencord/voltha-lib-go/pkg/kafka"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	ic "github.com/opencord/voltha-protos/go/inter_container"
 	"github.com/opencord/voltha-protos/go/openflow_13"
 	"github.com/opencord/voltha-protos/go/voltha"
diff --git a/vendor/github.com/opencord/voltha-go/adapters/common/utils.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/utils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/common/utils.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/common/utils.go
diff --git a/vendor/github.com/opencord/voltha-go/adapters/iAdapter.go b/vendor/github.com/opencord/voltha-lib-go/pkg/adapters/iAdapter.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/adapters/iAdapter.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/adapters/iAdapter.go
diff --git a/vendor/github.com/opencord/voltha-go/db/kvstore/client.go b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/client.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-go/db/kvstore/client.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/client.go
index 67c9219..f40d10e 100644
--- a/vendor/github.com/opencord/voltha-go/db/kvstore/client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/client.go
@@ -16,7 +16,7 @@
 package kvstore
 
 import (
-	"github.com/opencord/voltha-go/common/log"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 )
 
 const (
diff --git a/vendor/github.com/opencord/voltha-go/db/kvstore/consulclient.go b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/consulclient.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-go/db/kvstore/consulclient.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/consulclient.go
index c4fa0af..c3e3999 100644
--- a/vendor/github.com/opencord/voltha-go/db/kvstore/consulclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/consulclient.go
@@ -19,7 +19,7 @@
 	"bytes"
 	"context"
 	"errors"
-	log "github.com/opencord/voltha-go/common/log"
+	log "github.com/opencord/voltha-lib-go/pkg/log"
 	"sync"
 	"time"
 	//log "ciena.com/coordinator/common"
diff --git a/vendor/github.com/opencord/voltha-go/db/kvstore/etcdclient.go b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/etcdclient.go
similarity index 96%
rename from vendor/github.com/opencord/voltha-go/db/kvstore/etcdclient.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/etcdclient.go
index 88c13ae..beac4e0 100644
--- a/vendor/github.com/opencord/voltha-go/db/kvstore/etcdclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/etcdclient.go
@@ -19,7 +19,7 @@
 	"context"
 	"errors"
 	"fmt"
-	"github.com/opencord/voltha-go/common/log"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	v3Client "go.etcd.io/etcd/clientv3"
 	v3Concurrency "go.etcd.io/etcd/clientv3/concurrency"
 	v3rpcTypes "go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes"
@@ -127,7 +127,15 @@
 
 	c.writeLock.Lock()
 	defer c.writeLock.Unlock()
-	_, err := c.ectdAPI.Put(ctx, key, val)
+
+	var err error
+	// Check if there is already a lease for this key - if there is then use it, otherwise a PUT will make
+	// that KV key permanent instead of automatically removing it after a lease expiration
+	if leaseID, ok := c.keyReservations[key]; ok {
+		_, err = c.ectdAPI.Put(ctx, key, val, v3Client.WithLease(*leaseID))
+	} else {
+		_, err = c.ectdAPI.Put(ctx, key, val)
+	}
 	cancel()
 	if err != nil {
 		switch err {
@@ -158,8 +166,8 @@
 	c.writeLock.Lock()
 	defer c.writeLock.Unlock()
 
-	// delete the keys
-	if _, err := c.ectdAPI.Delete(ctx, key, v3Client.WithPrefix()); err != nil {
+	// delete the key
+	if _, err := c.ectdAPI.Delete(ctx, key); err != nil {
 		log.Errorw("failed-to-delete-key", log.Fields{"key": key, "error": err})
 		return err
 	}
@@ -309,7 +317,7 @@
 func (c *EtcdClient) Watch(key string) chan *Event {
 	w := v3Client.NewWatcher(c.ectdAPI)
 	ctx, cancel := context.WithCancel(context.Background())
-	channel := w.Watch(ctx, key, v3Client.WithPrefix())
+	channel := w.Watch(ctx, key)
 
 	// Create a new channel
 	ch := make(chan *Event, maxClientChannelBufferSize)
@@ -317,8 +325,6 @@
 	// Keep track of the created channels so they can be closed when required
 	channelMap := make(map[chan *Event]v3Client.Watcher)
 	channelMap[ch] = w
-	//c.writeLock.Lock()
-	//defer c.writeLock.Unlock()
 
 	channelMaps := c.addChannelMap(key, channelMap)
 
@@ -412,7 +418,6 @@
 	defer close(ch)
 	for resp := range channel {
 		for _, ev := range resp.Events {
-			//log.Debugf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
 			ch <- NewEvent(getEventType(ev), ev.Kv.Key, ev.Kv.Value, ev.Kv.Version)
 		}
 	}
diff --git a/vendor/github.com/opencord/voltha-go/db/kvstore/kvutils.go b/vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/kvutils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/db/kvstore/kvutils.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/db/kvstore/kvutils.go
diff --git a/vendor/github.com/opencord/voltha-go/kafka/client.go b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/client.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/kafka/client.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/kafka/client.go
diff --git a/vendor/github.com/opencord/voltha-go/kafka/kafka_inter_container_library.go b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/kafka_inter_container_library.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-go/kafka/kafka_inter_container_library.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/kafka/kafka_inter_container_library.go
index 56b5fa1..d2e0702 100644
--- a/vendor/github.com/opencord/voltha-go/kafka/kafka_inter_container_library.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/kafka_inter_container_library.go
@@ -23,7 +23,7 @@
 	"github.com/golang/protobuf/ptypes"
 	"github.com/golang/protobuf/ptypes/any"
 	"github.com/google/uuid"
-	"github.com/opencord/voltha-go/common/log"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	ic "github.com/opencord/voltha-protos/go/inter_container"
 	"reflect"
 	"strings"
@@ -46,6 +46,9 @@
 	FromTopic      = "fromTopic"
 )
 
+var ErrorTransactionNotAcquired = errors.New("transaction-not-acquired")
+var ErrorTransactionInvalidId = errors.New("transaction-invalid-id")
+
 // requestHandlerChannel represents an interface associated with a channel.  Whenever, an event is
 // obtained from that channel, this interface is invoked.   This is used to handle
 // async requests into the Core via the kafka messaging bus
@@ -674,15 +677,20 @@
 				// Check for errors first
 				lastIndex := len(out) - 1
 				if out[lastIndex].Interface() != nil { // Error
-					if goError, ok := out[lastIndex].Interface().(error); ok {
-						returnError = &ic.Error{Reason: goError.Error()}
+					if retError, ok := out[lastIndex].Interface().(error); ok {
+						if retError.Error() == ErrorTransactionNotAcquired.Error() {
+							log.Debugw("Ignoring request", log.Fields{"error": retError, "txId": msg.Header.Id})
+							return // Ignore - process is in competing mode and ignored transaction
+						}
+						returnError = &ic.Error{Reason: retError.Error()}
 						returnedValues = append(returnedValues, returnError)
 					} else { // Should never happen
 						returnError = &ic.Error{Reason: "incorrect-error-returns"}
 						returnedValues = append(returnedValues, returnError)
 					}
 				} else if len(out) == 2 && reflect.ValueOf(out[0].Interface()).IsValid() && reflect.ValueOf(out[0].Interface()).IsNil() {
-					return // Ignore case - when core is in competing mode
+					log.Warnw("Unexpected response of (nil,nil)", log.Fields{"txId": msg.Header.Id})
+					return // Ignore - should not happen
 				} else { // Non-error case
 					success = true
 					for idx, val := range out {
diff --git a/vendor/github.com/opencord/voltha-go/kafka/sarama_client.go b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/sarama_client.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-go/kafka/sarama_client.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/kafka/sarama_client.go
index 9e3ce0c..cec18ec 100644
--- a/vendor/github.com/opencord/voltha-go/kafka/sarama_client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/sarama_client.go
@@ -22,7 +22,7 @@
 	scc "github.com/bsm/sarama-cluster"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/uuid"
-	"github.com/opencord/voltha-go/common/log"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	ic "github.com/opencord/voltha-protos/go/inter_container"
 	"strings"
 	"sync"
diff --git a/vendor/github.com/opencord/voltha-go/kafka/utils.go b/vendor/github.com/opencord/voltha-lib-go/pkg/kafka/utils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/kafka/utils.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/kafka/utils.go
diff --git a/vendor/github.com/opencord/voltha-go/common/log/log.go b/vendor/github.com/opencord/voltha-lib-go/pkg/log/log.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/common/log/log.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/log/log.go
diff --git a/vendor/github.com/opencord/voltha-go/common/probe/probe.go b/vendor/github.com/opencord/voltha-lib-go/pkg/probe/probe.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-go/common/probe/probe.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/probe/probe.go
index 8a8e485..192c7ca 100644
--- a/vendor/github.com/opencord/voltha-go/common/probe/probe.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/probe/probe.go
@@ -18,7 +18,7 @@
 import (
 	"context"
 	"fmt"
-	"github.com/opencord/voltha-go/common/log"
+	"github.com/opencord/voltha-lib-go/pkg/log"
 	"net/http"
 	"sync"
 )
diff --git a/vendor/github.com/opencord/voltha-go/common/version/version.go b/vendor/github.com/opencord/voltha-lib-go/pkg/version/version.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-go/common/version/version.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/version/version.go