aboutsummaryrefslogtreecommitdiffstats
path: root/src/k8splugin/internal/app/instance.go
diff options
context:
space:
mode:
authorBin Yang <bin.yang@windriver.com>2019-05-16 01:24:11 +0000
committerGerrit Code Review <gerrit@onap.org>2019-05-16 01:24:11 +0000
commit458c676f883514c8eec57f23a88abc2e79fffa20 (patch)
tree0b60c278ee88e86a0488adbf5baa69f5c4772858 /src/k8splugin/internal/app/instance.go
parentf8f12a81729b812c6b07b55e07013f94e10a5828 (diff)
parent881bb510d7f0b7a3f1110589e8aa3596e655e38c (diff)
Merge "Add find method in instance"
Diffstat (limited to 'src/k8splugin/internal/app/instance.go')
-rw-r--r--src/k8splugin/internal/app/instance.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/k8splugin/internal/app/instance.go b/src/k8splugin/internal/app/instance.go
index 6d0910d0..41eca211 100644
--- a/src/k8splugin/internal/app/instance.go
+++ b/src/k8splugin/internal/app/instance.go
@@ -53,6 +53,7 @@ type InstanceResponse struct {
type InstanceManager interface {
Create(i InstanceRequest) (InstanceResponse, error)
Get(id string) (InstanceResponse, error)
+ Find(rbName string, ver string, profile string) ([]InstanceResponse, error)
Delete(id string) error
}
@@ -176,6 +177,48 @@ func (v *InstanceClient) Get(id string) (InstanceResponse, error) {
return InstanceResponse{}, pkgerrors.New("Error getting Instance")
}
+// Find returns the instances that match the given criteria
+// If version is empty, it will return all instances for a given rbName
+// If profile is empty, it will return all instances for a given rbName+version
+func (v *InstanceClient) Find(rbName string, version string, profile string) ([]InstanceResponse, error) {
+ if rbName == "" {
+ return []InstanceResponse{}, pkgerrors.New("rbName is required and cannot be empty")
+ }
+
+ values, err := db.DBconn.ReadAll(v.storeName, v.tagInst)
+ if err != nil || len(values) == 0 {
+ return []InstanceResponse{}, pkgerrors.Wrap(err, "Find Instance")
+ }
+
+ response := []InstanceResponse{}
+ //values is a map[string][]byte
+ for _, value := range values {
+ resp := InstanceResponse{}
+ db.DBconn.Unmarshal(value, &resp)
+ if err != nil {
+ return []InstanceResponse{}, pkgerrors.Wrap(err, "Unmarshaling Instance Value")
+ }
+
+ if resp.RBName == rbName {
+
+ //Check if a version is provided and if it matches
+ if version != "" {
+ if resp.RBVersion == version {
+ //Check if a profilename matches or if it is not provided
+ if profile == "" || resp.ProfileName == profile {
+ response = append(response, resp)
+ }
+ }
+ } else {
+ //Append all versions as version is not provided
+ response = append(response, resp)
+ }
+ }
+ }
+
+ return response, nil
+}
+
// Delete the Instance from database
func (v *InstanceClient) Delete(id string) error {
inst, err := v.Get(id)