summaryrefslogtreecommitdiffstats
path: root/src/orchestrator/pkg/rtcontext
diff options
context:
space:
mode:
authorRajamohan Raj <rajamohan.raj@intel.com>2020-05-11 22:09:18 +0000
committerRajamohan Raj <rajamohan.raj@intel.com>2020-05-15 23:01:17 +0000
commitdbc92bae58ffbeb38f5c3e5c58a1da2fb3b349f4 (patch)
tree57fce86658311cf0109659446271fdc74db449e3 /src/orchestrator/pkg/rtcontext
parentc77850a75eee9f3df2e194521e59728572bc47c2 (diff)
Adding meta data for app in appContext
In this patch, modified the appContext and rtc lib by adding functions for setting and getting the meta data associated with the apps. Issue-ID: MULTICLOUD-1064 Signed-off-by: Rajamohan Raj <rajamohan.raj@intel.com> Change-Id: I08f91ddda3044f172caf7b2673c069fed16c32c4
Diffstat (limited to 'src/orchestrator/pkg/rtcontext')
-rw-r--r--src/orchestrator/pkg/rtcontext/rtcontext.go45
-rw-r--r--src/orchestrator/pkg/rtcontext/rtcontext_test.go22
2 files changed, 52 insertions, 15 deletions
diff --git a/src/orchestrator/pkg/rtcontext/rtcontext.go b/src/orchestrator/pkg/rtcontext/rtcontext.go
index 1835251a..5610ea58 100644
--- a/src/orchestrator/pkg/rtcontext/rtcontext.go
+++ b/src/orchestrator/pkg/rtcontext/rtcontext.go
@@ -29,13 +29,15 @@ const maxrand = 0x7fffffffffffffff
const prefix string = "/context/"
type RunTimeContext struct {
- cid interface{}
+ cid interface{}
+ meta interface{}
}
type Rtcontext interface {
RtcInit() (interface{}, error)
RtcLoad(interface{}) (interface{}, error)
RtcCreate() (interface{}, error)
+ RtcAddMeta(meta interface{}) error
RtcGet() (interface{}, error)
RtcAddLevel(handle interface{}, level string, value string) (interface{}, error)
RtcAddResource(handle interface{}, resname string, value interface{}) (interface{}, error)
@@ -45,6 +47,7 @@ type Rtcontext interface {
RtcGetHandles(handle interface{}) ([]interface{}, error)
RtcGetValue(handle interface{}, value interface{}) error
RtcUpdateValue(handle interface{}, value interface{}) error
+ RtcGetMeta() (interface{}, error)
}
//Intialize context by assiging a new id
@@ -76,7 +79,6 @@ func (rtc *RunTimeContext) RtcLoad(id interface{}) (interface{}, error) {
return handle, nil
}
-//Create context using the id and prefix
func (rtc *RunTimeContext) RtcCreate() (interface{}, error) {
cid := fmt.Sprintf("%v", rtc.cid)
if cid == "" {
@@ -94,6 +96,26 @@ func (rtc *RunTimeContext) RtcCreate() (interface{}, error) {
return rtc.cid, nil
}
+//RtcAddMeta is used for saving meta data of appContext into ETCD.
+func (rtc *RunTimeContext) RtcAddMeta(meta interface{}) error {
+ cid := fmt.Sprintf("%v", rtc.cid)
+ if cid == "" {
+ return pkgerrors.Errorf("Error, context not intialized")
+ }
+ if !strings.HasPrefix(cid, prefix) {
+ return pkgerrors.Errorf("Not a valid run time context prefix")
+ }
+
+ rtc.meta = meta
+ k := cid + "meta" + "/"
+ err := contextdb.Db.Put(k, rtc.meta)
+ if err != nil {
+ return pkgerrors.Errorf("Error saving metadata in run time context: %s", err.Error())
+ }
+
+ return nil
+}
+
//Get the root handle
func (rtc *RunTimeContext) RtcGet() (interface{}, error) {
str := fmt.Sprintf("%v", rtc.cid)
@@ -113,6 +135,23 @@ func (rtc *RunTimeContext) RtcGet() (interface{}, error) {
return rtc.cid, nil
}
+// RtcGetMeta method fetches the meta data of the rtc object and returns it.
+func (rtc *RunTimeContext) RtcGetMeta() (interface{}, error) {
+ str := fmt.Sprintf("%v", rtc.cid)
+ if !strings.HasPrefix(str, prefix) {
+ return nil, pkgerrors.Errorf("Not a valid run time context")
+ }
+
+ var value interface{}
+ k := str + "meta" + "/"
+ err := contextdb.Db.Get(k, &value)
+ if err != nil {
+ return nil, pkgerrors.Errorf("Error getting run time context metadata: %s", err.Error())
+ }
+ return value, nil
+
+}
+
//Add a new level at a given handle and return the new handle
func (rtc *RunTimeContext) RtcAddLevel(handle interface{}, level string, value string) (interface{}, error) {
str := fmt.Sprintf("%v", handle)
@@ -177,7 +216,6 @@ func (rtc *RunTimeContext) RtcAddInstruction(handle interface{}, level string, i
if value == nil {
return nil, pkgerrors.Errorf("Not a valid run time context instruction value")
}
-
k := str + level + "/" + "instruction" + "/" + insttype + "/"
err := contextdb.Db.Put(k, fmt.Sprintf("%v", value))
if err != nil {
@@ -194,7 +232,6 @@ func (rtc *RunTimeContext) RtcDeletePair(handle interface{}) error {
if !strings.HasPrefix(str, sid) {
return pkgerrors.Errorf("Not a valid run time context handle")
}
-
err := contextdb.Db.Delete(str)
if err != nil {
return pkgerrors.Errorf("Error deleting run time context pair: %s", err.Error())
diff --git a/src/orchestrator/pkg/rtcontext/rtcontext_test.go b/src/orchestrator/pkg/rtcontext/rtcontext_test.go
index eedbeb82..49e83748 100644
--- a/src/orchestrator/pkg/rtcontext/rtcontext_test.go
+++ b/src/orchestrator/pkg/rtcontext/rtcontext_test.go
@@ -112,7 +112,7 @@ func TestRtcInit(t *testing.T) {
}
func TestRtcLoad(t *testing.T) {
- var rtc = RunTimeContext{""}
+ var rtc = RunTimeContext{"", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -147,7 +147,7 @@ func TestRtcLoad(t *testing.T) {
}
func TestRtcCreate(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -179,7 +179,7 @@ func TestRtcCreate(t *testing.T) {
}
func TestRtcGet(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -240,7 +240,7 @@ func TestRtcGet(t *testing.T) {
}
func TestRtcAddLevel(t *testing.T) {
- var rtc = RunTimeContext{"/context/3528435435454354/"}
+ var rtc = RunTimeContext{"/context/3528435435454354/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -304,7 +304,7 @@ func TestRtcAddLevel(t *testing.T) {
}
func TestRtcAddResource(t *testing.T) {
- var rtc = RunTimeContext{"/context/3528435435454354/"}
+ var rtc = RunTimeContext{"/context/3528435435454354/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -368,7 +368,7 @@ func TestRtcAddResource(t *testing.T) {
}
func TestRtcAddInstruction(t *testing.T) {
- var rtc = RunTimeContext{"/context/3528435435454354/"}
+ var rtc = RunTimeContext{"/context/3528435435454354/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -447,7 +447,7 @@ func TestRtcAddInstruction(t *testing.T) {
}
func TestRtcGetHandles(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -490,7 +490,7 @@ func TestRtcGetHandles(t *testing.T) {
}
func TestRtcGetValue(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -534,7 +534,7 @@ func TestRtcGetValue(t *testing.T) {
}
func TestRtcUpdateValue(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -581,7 +581,7 @@ func TestRtcUpdateValue(t *testing.T) {
}
func TestRtcDeletePair(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb
@@ -621,7 +621,7 @@ func TestRtcDeletePair(t *testing.T) {
}
func TestRtcDeletePrefix(t *testing.T) {
- var rtc = RunTimeContext{"/context/5345674458787728/"}
+ var rtc = RunTimeContext{"/context/5345674458787728/", ""}
testCases := []struct {
label string
mockContextDb *MockContextDb