Replace deprecated SDL APIs

Replace deprecated SDL SdlInstance usage with xapp-frame's SdlStorage
APIs, which have been built on top of the valid SDL SyncStorage APIs.
Upgrade SDL version to v0.8.0.

Issue-Id: RIC-805

Signed-off-by: Timo Tietavainen <timo.tietavainen@nokia.com>
Change-Id: I04142853f74775ae40b71a0bef5431508acbb61a
diff --git a/RELNOTES b/RELNOTES
index 7aef394..5ca454a 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,3 +1,6 @@
+### v0.10.8
+* Replacing deprecated SDL APIs
+
 ### v0.10.7
 * Xapp-frame version update
 * Dockerfile correction for test applications
diff --git a/go.mod b/go.mod
index a53afa1..62a10a5 100644
--- a/go.mod
+++ b/go.mod
@@ -2,7 +2,7 @@
 
 go 1.12
 
-replace gerrit.o-ran-sc.org/r/ric-plt/sdlgo => gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.7.0
+replace gerrit.o-ran-sc.org/r/ric-plt/sdlgo => gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.8.0
 
 replace gerrit.o-ran-sc.org/r/ric-plt/xapp-frame => gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.9.3
 
@@ -12,10 +12,13 @@
 
 require (
 	gerrit.o-ran-sc.org/r/ric-plt/e2ap v0.0.0-00010101000000-000000000000
-	gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.7.0
+	gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.8.0
 	gerrit.o-ran-sc.org/r/ric-plt/xapp-frame v0.0.0-00010101000000-000000000000
+	github.com/go-openapi/errors v0.19.3
 	github.com/go-openapi/runtime v0.19.4
 	github.com/go-openapi/strfmt v0.19.4
+	github.com/go-openapi/swag v0.19.7
+	github.com/go-openapi/validate v0.19.6
 	github.com/gorilla/mux v1.7.1
 	github.com/segmentio/ksuid v1.0.3
 	github.com/spf13/viper v1.4.0
diff --git a/go.sum b/go.sum
index 6f01e50..a0fa7a9 100644
--- a/go.sum
+++ b/go.sum
@@ -4,24 +4,16 @@
 gerrit.o-ran-sc.org/r/com/golog.git v0.0.2/go.mod h1:A7hUL52YQSO4dFIZNcj76XQ09C9PftAe3LyL7kqBnok=
 gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm v0.5.0 h1:OKDsIDlttbaoHwleyjflIWVZPgPvYbDhim6gWF0zf5E=
 gerrit.o-ran-sc.org/r/ric-plt/alarm-go.git/alarm v0.5.0/go.mod h1:AdEWKtERGvOQy9ybLhyhrb9w9LLVn8i9xzTwoR5n4BY=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35 h1:TGXHb4DNY8on+ej4S9VUnk2HibIC/5chDy64OE+bQBQ=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.2.1 h1:3FFbXx55BODThXfyWAiz6cPXVELXFICDQUmJi13EoxM=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.2.1/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35 h1:tkM3yE8UzmuH4nf9TqAmiNBSuIZ2CtcMRH2eBIYIzpQ=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35/go.mod h1:G+4sUBMbLfQ+RrGS65U15tKmbnP+/1b5oLTPmMfyfT4=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.2.1 h1:8Z60JRsPgcS1Ona4fEh6d0/03nLq1WHoZcNnBsni5+g=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.2.1/go.mod h1:YaQ+XEI4PcAoISxp9wUpUr2TP0J7JihpQTD0G1Lpd4A=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35 h1:LcxnUUDwsCzYEISKmkjkyYfg/lnLt8ofkPiGK69vNIA=
-gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35/go.mod h1:2bSaXTpECbZieB8bMnubTqMwF3n+mMBxlTaAXvcduNg=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.2.1 h1:BG3kste8PLVTG0m8CRB/VP2tAV5JImKueBGuOsUNcR8=
 gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.2.1/go.mod h1:zX8rW6YEsagHrRGVW5YO50Ku/Csrpzsuvblhr4DbYi4=
-gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.7.0 h1:mxlBo54jxwHHFmGYzFI+fBIkOGwarQP4dx2KBxQ8ln8=
-gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.7.0/go.mod h1:KCHu4JkWnw2Ro6P747wU9S2t7zxFLmBNCiYvGZo3CHo=
-gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.8.3 h1:C5nhnmSZLdysSiQ7vMkpNaKrooPwiBZ79dcXWRVtZTU=
-gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.8.3/go.mod h1:MRTeTBLROgTA2t91SXYjTbRsxoOhMMvvkK/ChLVRZUU=
-gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.8.5 h1:PEc4Lv6cn8hQM1Ak3wE3MwhCa4v7triRjdhXwsTUMUw=
-gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.8.5/go.mod h1:Z9SajRPqZ7N1/y+Lzp5lUzq24fvrcjQg3cMBXRQVkiM=
+gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.8.0 h1:H7GtCRC+pGn6oOxYalUZr7LinQX5jQCVa+ConX7PB5Q=
+gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.8.0/go.mod h1:KCHu4JkWnw2Ro6P747wU9S2t7zxFLmBNCiYvGZo3CHo=
+gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.9.3 h1:JokT2aaJkKjYFMayvZHvGb+/IhkqZdnxEdwOZVfzIpg=
+gerrit.o-ran-sc.org/r/ric-plt/xapp-frame.git v0.9.3/go.mod h1:foKMPQZ+RlM0Pos2GlEPAg6ux7Y9PRQmCUglYM7/Qt8=
 github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
@@ -155,8 +147,6 @@
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.4 h1:87PNWwrRvUSnqS4dlcBU/ftvOIBep4sYuBLlh6rX2wk=
-github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
 github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
 github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
 github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
@@ -172,6 +162,7 @@
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0=
 github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
diff --git a/pkg/control/sdl_e2SubsDb.go b/pkg/control/sdl_e2SubsDb.go
index 2afa36e..3305e41 100644
--- a/pkg/control/sdl_e2SubsDb.go
+++ b/pkg/control/sdl_e2SubsDb.go
@@ -29,6 +29,8 @@
 	"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
 )
 
+const e2SubSdlNs = "submgr_e2SubsDb"
+
 type SubscriptionInfo struct {
 	Valid        bool
 	ReqId        RequestId
@@ -41,7 +43,7 @@
 }
 
 func CreateSdl() Sdlnterface {
-	return sdl.NewSdlInstance("submgr_e2SubsDb", sdl.NewDatabase())
+	return sdl.NewSyncStorage()
 }
 
 func (c *Control) WriteSubscriptionToSdl(subId uint32, subs *Subscription) error {
@@ -66,7 +68,7 @@
 		return fmt.Errorf("SDL: WriteSubscriptionToSdl() json.Marshal error: %s", err.Error())
 	}
 
-	if err = c.e2SubsDb.Set(strconv.FormatUint(uint64(subId), 10), jsonData); err != nil {
+	if err = c.e2SubsDb.Set(e2SubSdlNs, strconv.FormatUint(uint64(subId), 10), jsonData); err != nil {
 		c.UpdateCounter(cSDLWriteFailure)
 		return fmt.Errorf("SDL: WriteSubscriptionToSdl(): %s", err.Error())
 	} else {
@@ -79,7 +81,7 @@
 
 	// This function is now just for testing purpose
 	key := strconv.FormatUint(uint64(subId), 10)
-	retMap, err := c.e2SubsDb.Get([]string{key})
+	retMap, err := c.e2SubsDb.Get(e2SubSdlNs, []string{key})
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, fmt.Errorf("SDL: ReadSubscriptionFromSdl(): %s", err.Error())
@@ -138,7 +140,7 @@
 func (c *Control) RemoveSubscriptionFromSdl(subId uint32) error {
 
 	key := strconv.FormatUint(uint64(subId), 10)
-	if err := c.e2SubsDb.Remove([]string{key}); err != nil {
+	if err := c.e2SubsDb.Remove(e2SubSdlNs, []string{key}); err != nil {
 		return fmt.Errorf("SDL: RemoveSubscriptionfromSdl(): %s\n", err.Error())
 	} else {
 		xapp.Logger.Debug("SDL: Subscription removed from e2SubsDb. subId = %v", subId)
@@ -157,7 +159,7 @@
 
 	retMap := make(map[uint32]*Subscription)
 	// Get all keys
-	keys, err := c.e2SubsDb.GetAll()
+	keys, err := c.e2SubsDb.GetAll(e2SubSdlNs)
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, nil, fmt.Errorf("SDL: ReadAllSubscriptionsFromSdl(), GetAll(). Error while reading E2 subscriptions  keys from DBAAS %s\n", err.Error())
@@ -168,7 +170,7 @@
 	}
 
 	// Get all subscriptionInfos
-	iSubscriptionMap, err := c.e2SubsDb.Get(keys)
+	iSubscriptionMap, err := c.e2SubsDb.Get(e2SubSdlNs, keys)
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, nil, fmt.Errorf("SDL: ReadAllSubscriptionsFromSdl(), Get():  Error while reading E2 subscriptions from DBAAS %s\n", err.Error())
@@ -213,7 +215,7 @@
 }
 func (c *Control) RemoveAllSubscriptionsFromSdl() error {
 
-	if err := c.e2SubsDb.RemoveAll(); err != nil {
+	if err := c.e2SubsDb.RemoveAll(e2SubSdlNs); err != nil {
 		c.UpdateCounter(cSDLRemoveFailure)
 		return fmt.Errorf("SDL: RemoveAllSubscriptionsFromSdl(): %s\n", err.Error())
 	} else {
diff --git a/pkg/control/sdl_e2SubsDb_test.go b/pkg/control/sdl_e2SubsDb_test.go
index 2deb4b5..3175cc9 100644
--- a/pkg/control/sdl_e2SubsDb_test.go
+++ b/pkg/control/sdl_e2SubsDb_test.go
@@ -463,13 +463,17 @@
 	t.Log("TEST: All subscription removed from db")
 }
 
-func (m *Mock) Set(pairs ...interface{}) error {
+func (m *Mock) Set(ns string, pairs ...interface{}) error {
 	var key string
 	var val string
 
 	m.marshalLock.Lock()
 	defer m.marshalLock.Unlock()
 
+	if ns != e2SubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if sdlShouldReturnError == true {
 		return GetSdlError()
 	}
@@ -507,8 +511,13 @@
 	return nil
 }
 
-func (m *Mock) Get(keys []string) (map[string]interface{}, error) {
+func (m *Mock) Get(ns string, keys []string) (map[string]interface{}, error) {
 	retMap := make(map[string]interface{})
+
+	if ns != e2SubSdlNs {
+		return nil, fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if len(keys) == 0 {
 		return nil, fmt.Errorf("Get() error: len(key) == 0\n")
 	}
@@ -527,7 +536,11 @@
 	return retMap, nil
 }
 
-func (m *Mock) GetAll() ([]string, error) {
+func (m *Mock) GetAll(ns string) ([]string, error) {
+
+	if ns != e2SubSdlNs {
+		return nil, fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
 
 	if sdlShouldReturnError == true {
 		return nil, GetSdlError()
@@ -540,7 +553,12 @@
 	return keys, nil
 }
 
-func (m *Mock) Remove(keys []string) error {
+func (m *Mock) Remove(ns string, keys []string) error {
+
+	if ns != e2SubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if len(keys) == 0 {
 		return fmt.Errorf("Remove() error: len(key) == 0\n")
 	}
@@ -560,7 +578,11 @@
 	return nil
 }
 
-func (m *Mock) RemoveAll() error {
+func (m *Mock) RemoveAll(ns string) error {
+
+	if ns != e2SubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
 
 	for key := range m.e2SubsDb {
 		subId64, err := strconv.ParseUint(key, 10, 64)
diff --git a/pkg/control/sdl_restSubsDb.go b/pkg/control/sdl_restSubsDb.go
index f9d837b..e9a7d2f 100644
--- a/pkg/control/sdl_restSubsDb.go
+++ b/pkg/control/sdl_restSubsDb.go
@@ -27,6 +27,8 @@
 	"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
 )
 
+const restSubSdlNs = "submgr_restSubsDb"
+
 type RESTSubscriptionInfo struct {
 	XAppRmrEndPoint  string
 	Meid             string
@@ -38,7 +40,7 @@
 }
 
 func CreateRESTSdl() Sdlnterface {
-	return sdl.NewSdlInstance("submgr_restSubsDb", sdl.NewDatabase())
+	return sdl.NewSyncStorage()
 }
 
 func (c *Control) WriteRESTSubscriptionToSdl(restSubId string, restSubs *RESTSubscription) error {
@@ -57,7 +59,7 @@
 		return fmt.Errorf("SDL: WriteSubscriptionToSdl() json.Marshal error: %s", err.Error())
 	}
 
-	if err = c.restSubsDb.Set(restSubId, jsonData); err != nil {
+	if err = c.restSubsDb.Set(restSubSdlNs, restSubId, jsonData); err != nil {
 		c.UpdateCounter(cSDLWriteFailure)
 		return fmt.Errorf("SDL: WriteSubscriptionToSdl(): %s", err.Error())
 	} else {
@@ -70,7 +72,7 @@
 
 	// This function is now just for testing purpose
 	key := restSubId
-	retMap, err := c.restSubsDb.Get([]string{key})
+	retMap, err := c.restSubsDb.Get(restSubSdlNs, []string{key})
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, fmt.Errorf("SDL: ReadSubscriptionFromSdl(): %s", err.Error())
@@ -116,7 +118,7 @@
 func (c *Control) RemoveRESTSubscriptionFromSdl(restSubId string) error {
 
 	key := restSubId
-	if err := c.restSubsDb.Remove([]string{key}); err != nil {
+	if err := c.restSubsDb.Remove(restSubSdlNs, []string{key}); err != nil {
 		return fmt.Errorf("SDL: RemoveSubscriptionfromSdl(): %s\n", err.Error())
 	} else {
 		xapp.Logger.Debug("SDL: Subscription removed from restSubsDb. restSubId = %v", restSubId)
@@ -128,7 +130,7 @@
 
 	retMap := make(map[string]*RESTSubscription)
 	// Get all keys
-	keys, err := c.restSubsDb.GetAll()
+	keys, err := c.restSubsDb.GetAll(restSubSdlNs)
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, fmt.Errorf("SDL: ReadAllSubscriptionsFromSdl(), GetAll(). Error while reading REST subscriptions keys from DBAAS %s\n", err.Error())
@@ -139,7 +141,7 @@
 	}
 
 	// Get all subscriptionInfos
-	iRESTSubscriptionMap, err := c.restSubsDb.Get(keys)
+	iRESTSubscriptionMap, err := c.restSubsDb.Get(restSubSdlNs, keys)
 	if err != nil {
 		c.UpdateCounter(cSDLReadFailure)
 		return nil, fmt.Errorf("SDL: ReadAllSubscriptionsFromSdl(), Get():  Error while reading REST subscriptions from DBAAS %s\n", err.Error())
@@ -166,11 +168,11 @@
 
 func (c *Control) RemoveAllRESTSubscriptionsFromSdl() error {
 
-	if err := c.restSubsDb.RemoveAll(); err != nil {
+	if err := c.restSubsDb.RemoveAll(restSubSdlNs); err != nil {
 		c.UpdateCounter(cSDLRemoveFailure)
 		return fmt.Errorf("SDL: RemoveAllSubscriptionsFromSdl(): %s\n", err.Error())
 	} else {
-		xapp.Logger.Debug("SDL: All subscriptions removed from e2SubsDb")
+		xapp.Logger.Debug("SDL: All subscriptions removed from restSubsDb")
 	}
 	return nil
 }
diff --git a/pkg/control/sdl_restSubsDb_test.go b/pkg/control/sdl_restSubsDb_test.go
index 12bf1eb..273a15e 100644
--- a/pkg/control/sdl_restSubsDb_test.go
+++ b/pkg/control/sdl_restSubsDb_test.go
@@ -369,13 +369,17 @@
 	t.Log("TEST: All subscription removed from db")
 }
 
-func (m *RestSubsDbMock) Set(pairs ...interface{}) error {
+func (m *RestSubsDbMock) Set(ns string, pairs ...interface{}) error {
 	var key string
 	var val string
 
 	m.marshalLock.Lock()
 	defer m.marshalLock.Unlock()
 
+	if ns != restSubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if sdlRestShouldReturnError == true {
 		return GetSdlRestError()
 	}
@@ -412,8 +416,13 @@
 	return nil
 }
 
-func (m *RestSubsDbMock) Get(keys []string) (map[string]interface{}, error) {
+func (m *RestSubsDbMock) Get(ns string, keys []string) (map[string]interface{}, error) {
 	retMap := make(map[string]interface{})
+
+	if ns != restSubSdlNs {
+		return nil, fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if len(keys) == 0 {
 		return nil, fmt.Errorf("Get() error: len(key) == 0\n")
 	}
@@ -432,7 +441,11 @@
 	return retMap, nil
 }
 
-func (m *RestSubsDbMock) GetAll() ([]string, error) {
+func (m *RestSubsDbMock) GetAll(ns string) ([]string, error) {
+
+	if ns != restSubSdlNs {
+		return nil, fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
 
 	if sdlRestShouldReturnError == true {
 		return nil, GetSdlRestError()
@@ -445,7 +458,12 @@
 	return keys, nil
 }
 
-func (m *RestSubsDbMock) Remove(keys []string) error {
+func (m *RestSubsDbMock) Remove(ns string, keys []string) error {
+
+	if ns != restSubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
+
 	if len(keys) == 0 {
 		return fmt.Errorf("Remove() error: len(key) == 0\n")
 	}
@@ -460,7 +478,11 @@
 	return nil
 }
 
-func (m *RestSubsDbMock) RemoveAll() error {
+func (m *RestSubsDbMock) RemoveAll(ns string) error {
+
+	if ns != restSubSdlNs {
+		return fmt.Errorf("Unexpected namespace '%s' error\n", ns)
+	}
 
 	for key := range m.restSubsDb {
 
diff --git a/pkg/control/types.go b/pkg/control/types.go
index 0123357..93cddb0 100644
--- a/pkg/control/types.go
+++ b/pkg/control/types.go
@@ -37,11 +37,11 @@
 }
 
 type Sdlnterface interface {
-	Set(pairs ...interface{}) error
-	Get(keys []string) (map[string]interface{}, error)
-	GetAll() ([]string, error)
-	Remove(keys []string) error
-	RemoveAll() error
+	Set(ns string, pairs ...interface{}) error
+	Get(ns string, keys []string) (map[string]interface{}, error)
+	GetAll(ns string) ([]string, error)
+	Remove(ns string, keys []string) error
+	RemoveAll(ns string) error
 }
 
 type E2SubscriptionDirectives struct {