Make now runs lint and any unit tests.
Also update vendored voltha-go to add new api updates
Change-Id: I08e11ae043b1db46fed4cc64fddc890a6729dedf
diff --git a/vendor/github.com/opencord/voltha-go/db/model/proxy.go b/vendor/github.com/opencord/voltha-go/db/model/proxy.go
index 86d426a..b45fb1d 100644
--- a/vendor/github.com/opencord/voltha-go/db/model/proxy.go
+++ b/vendor/github.com/opencord/voltha-go/db/model/proxy.go
@@ -147,6 +147,7 @@
PROXY_ADD
PROXY_UPDATE
PROXY_REMOVE
+ PROXY_CREATE
)
// parseForControlledPath verifies if a proxy path matches a pattern
@@ -243,8 +244,11 @@
p.Operation = PROXY_UPDATE
pac.SetProxy(p)
+ defer func(op ProxyOperation) {
+ pac.getProxy().Operation = op
+ }(PROXY_GET)
- log.Debugw("proxy-operation--update", log.Fields{"operation":p.Operation})
+ log.Debugw("proxy-operation--update", log.Fields{"operation": p.Operation})
return pac.Update(fullPath, data, strict, txid, controlled)
}
@@ -275,9 +279,13 @@
defer PAC().ReleasePath(pathLock)
p.Operation = PROXY_ADD
+ defer func() {
+ p.Operation = PROXY_GET
+ }()
+
pac.SetProxy(p)
- log.Debugw("proxy-operation--add", log.Fields{"operation":p.Operation})
+ log.Debugw("proxy-operation--add", log.Fields{"operation": p.Operation})
return pac.Add(fullPath, data, txid, controlled)
}
@@ -307,8 +315,11 @@
p.Operation = PROXY_ADD
pac.SetProxy(p)
+ defer func() {
+ p.Operation = PROXY_GET
+ }()
- log.Debugw("proxy-operation--add", log.Fields{"operation":p.Operation})
+ log.Debugw("proxy-operation--add", log.Fields{"operation": p.Operation})
return pac.Add(fullPath, data, txid, controlled)
}
@@ -338,12 +349,50 @@
p.Operation = PROXY_REMOVE
pac.SetProxy(p)
+ defer func() {
+ p.Operation = PROXY_GET
+ }()
- log.Debugw("proxy-operation--remove", log.Fields{"operation":p.Operation})
+ log.Debugw("proxy-operation--remove", log.Fields{"operation": p.Operation})
return pac.Remove(fullPath, txid, controlled)
}
+// CreateProxy to interact with specific path directly
+func (p *Proxy) CreateProxy(path string, exclusive bool) *Proxy {
+ if !strings.HasPrefix(path, "/") {
+ log.Errorf("invalid path: %s", path)
+ return nil
+ }
+
+ var fullPath string
+ var effectivePath string
+ if path == "/" {
+ fullPath = p.getPath()
+ effectivePath = p.getFullPath()
+ } else {
+ fullPath = p.getPath() + path
+ effectivePath = p.getFullPath() + path
+ }
+
+ pathLock, controlled := p.parseForControlledPath(effectivePath)
+
+ log.Debugf("Path: %s, Effective: %s, Full: %s, PathLock: %s", path, effectivePath, fullPath, pathLock)
+
+ pac := PAC().ReservePath(path, p, pathLock)
+ defer PAC().ReleasePath(pathLock)
+
+ p.Operation = PROXY_CREATE
+ pac.SetProxy(p)
+ defer func() {
+ p.Operation = PROXY_GET
+ }()
+
+ log.Debugw("proxy-operation--create-proxy", log.Fields{"operation": p.Operation})
+
+ return pac.CreateProxy(fullPath, exclusive, controlled)
+}
+
// OpenTransaction creates a new transaction branch to isolate operations made to the data model
func (p *Proxy) OpenTransaction() *Transaction {
txid := p.GetRoot().MakeTxBranch()