Pass context.Context to the store implementations 12/142712/2
authorFiete Ostkamp <fiete.ostkamp@telekom.de>
Tue, 9 Dec 2025 07:36:08 +0000 (08:36 +0100)
committerFiete Ostkamp <fiete.ostkamp@telekom.de>
Tue, 9 Dec 2025 08:42:09 +0000 (09:42 +0100)
- this service defines a Store interface with implementations
  for mongo and consul
- enhance the methods of this interface to require
  a context.Context parameter
- this is the first step in being able to pass the (request) context
  from the handler to the mongo driver
- the context propagation is needed for the tracing instrumenations
  to pick up the overall trace context
- bump snapshot version to 0.12.0-SNAPSHOT

Issue-ID: MULTICLOUD-1537
Change-Id: Ibfcdbab6b46bc18a425a8abb3835c35371044bbc
Signed-off-by: Fiete Ostkamp <fiete.ostkamp@telekom.de>
16 files changed:
deployments/build.sh
src/k8splugin/internal/app/hook.go
src/k8splugin/internal/app/instance.go
src/k8splugin/internal/app/subscription.go
src/k8splugin/internal/connection/connection.go
src/k8splugin/internal/db/consul.go
src/k8splugin/internal/db/consul_test.go
src/k8splugin/internal/db/mongo.go
src/k8splugin/internal/db/mongo_test.go
src/k8splugin/internal/db/store.go
src/k8splugin/internal/db/testing.go
src/k8splugin/internal/healthcheck/healthcheck.go
src/k8splugin/internal/namegenerator/namegenerator.go
src/k8splugin/internal/rb/config_template.go
src/k8splugin/internal/rb/definition.go
src/k8splugin/internal/rb/profile.go

index 88c34cc..d005777 100755 (executable)
@@ -13,7 +13,7 @@ set -o pipefail
 
 k8s_path="$(git rev-parse --show-toplevel)"
 
-VERSION="0.11.0-SNAPSHOT"
+VERSION="0.12.0-SNAPSHOT"
 GO_VERSION="1.16"
 export IMAGE_NAME="nexus3.onap.org:10003/onap/multicloud/k8s"
 
index 3a4af8a..9645adc 100644 (file)
@@ -14,6 +14,7 @@ limitations under the License.
 package app
 
 import (
+       "context"
        "fmt"
        "log"
        "strings"
@@ -98,7 +99,7 @@ func (hc *HookClient) ExecHook(
                //-> when it comes back, it will continue from next hook and consider that this one is done
                if dbData != nil {
                        dbData.HookProgress = fmt.Sprintf("%d/%d", index+1, len(executingHooks))
-                       err := db.DBconn.Update(hc.dbStoreName, key, hc.dbTagInst, dbData)
+                       err := db.DBconn.Update(context.TODO(), hc.dbStoreName, key, hc.dbTagInst, dbData)
                        if err != nil {
                                return err
                        }
index 9aab4a5..9455e23 100644 (file)
@@ -335,7 +335,7 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
        key := InstanceKey{
                ID: finalId,
        }
-       err = db.DBconn.Create(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
                namegenerator.Release(generatedId)
                return InstanceResponse{}, pkgerrors.Wrap(err, "Creating Instance DB Entry")
@@ -355,7 +355,7 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
                err = hookClient.ExecHook(k8sClient, hookList, release.HookPreInstall, hookTimeoutInfo.preInstallTimeOut, 0, &dbData)
                if err != nil {
                        log.Printf("Error running preinstall hooks for release %s, Error: %s. Stop here", releaseName, err)
-                       err2 := db.DBconn.Delete(v.storeName, key, v.tagInst)
+                       err2 := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                        if err2 != nil {
                                log.Printf("Error cleaning failed instance in DB, please check DB.")
                        } else {
@@ -366,9 +366,9 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
        }
 
        dbData.Status = "CREATING"
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
-               err2 := db.DBconn.Delete(v.storeName, key, v.tagInst)
+               err2 := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                if err2 != nil {
                        log.Printf("Delete Instance DB Entry for release %s has error.", releaseName)
                } else {
@@ -386,7 +386,7 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
                }
                log.Printf("  Instance: %s, Main rss are failed, skip post-install and remove instance in DB", finalId)
                //main rss creation failed -> remove instance in DB
-               err2 := db.DBconn.Delete(v.storeName, key, v.tagInst)
+               err2 := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                if err2 != nil {
                        log.Printf("Delete Instance DB Entry for release %s has error.", releaseName)
                } else {
@@ -397,7 +397,7 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
 
        dbData.Status = "CREATED"
        dbData.Resources = createdResources
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Update Instance DB Entry")
        }
@@ -423,14 +423,14 @@ func (v *InstanceClient) Create(i InstanceRequest, newId string) (InstanceRespon
                        } else {
                                dbData.Status = "DONE"
                        }
-                       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+                       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
                        if err != nil {
                                log.Printf("Update Instance DB Entry for release %s has error.", releaseName)
                        }
                }()
        } else {
                dbData.Status = "DONE"
-               err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+               err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
                if err != nil {
                        log.Printf("Update Instance DB Entry for release %s has error.", releaseName)
                }
@@ -458,7 +458,7 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
        key := InstanceKey{
                ID: id,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagInst)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Upgrade Instance")
        }
@@ -497,14 +497,14 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
                                oldKey := InstanceKey{
                                        ID: newInstance.ID,
                                }
-                               err2 := db.DBconn.Delete(v.storeName, oldKey, v.tagInst)
+                               err2 := db.DBconn.Delete(context.TODO(), v.storeName, oldKey, v.tagInst)
                                if err2 != nil {
                                        log.Printf("Delete of the temporal instance from the DB has failed %s", err2.Error())
                                }
                                namegenerator.Release(newInstance.ID)
                                newInstanceDb.ID = id
                                newInstance.ID = id
-                               err = db.DBconn.Create(v.storeName, key, v.tagInst, newInstanceDb)
+                               err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagInst, newInstanceDb)
                                if err != nil {
                                        return newInstance, pkgerrors.Wrap(err, "Create Instance DB Entry after update failed")
                                }
@@ -584,7 +584,7 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
                return InstanceResponse{}, pkgerrors.Wrap(err, "Creating Namespace")
        }
 
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Updating Instance DB Entry")
        }
@@ -608,7 +608,7 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
        }
 
        dbData.Status = "UPGRADING"
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Update Instance DB Entry")
        }
@@ -659,7 +659,7 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
 
        dbData.Status = "UPGRADED"
        dbData.Resources = upgradedResources
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Update Instance DB Entry")
        }
@@ -685,14 +685,14 @@ func (v *InstanceClient) Upgrade(id string, u UpgradeRequest) (InstanceResponse,
                        } else {
                                dbData.Status = "DONE"
                        }
-                       err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+                       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
                        if err != nil {
                                log.Printf("Update Instance DB Entry for release %s has error.", releaseName)
                        }
                }()
        } else {
                dbData.Status = "DONE"
-               err = db.DBconn.Update(v.storeName, key, v.tagInst, dbData)
+               err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
                if err != nil {
                        log.Printf("Update Instance DB Entry for release %s has error.", releaseName)
                }
@@ -706,7 +706,7 @@ func (v *InstanceClient) GetFull(id string) (InstanceDbData, error) {
        key := InstanceKey{
                ID: id,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagInst)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
        if err != nil {
                return InstanceDbData{}, pkgerrors.Wrap(err, "Get Instance")
        }
@@ -752,7 +752,7 @@ func (v *InstanceClient) Get(id string) (InstanceResponse, error) {
        key := InstanceKey{
                ID: id,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagInst)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
        if err != nil {
                return InstanceResponse{}, pkgerrors.Wrap(err, "Get Instance")
        }
@@ -778,7 +778,7 @@ func (v *InstanceClient) Query(id, apiVersion, kind, name, labels string) (Insta
        key := InstanceKey{
                ID: id,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagInst)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
        if err != nil {
                return InstanceStatus{}, pkgerrors.Wrap(err, "Get Instance")
        }
@@ -819,7 +819,7 @@ func (v *InstanceClient) Status(id string, checkReady bool) (InstanceStatus, err
                ID: id,
        }
 
-       value, err := db.DBconn.Read(v.storeName, key, v.tagInst)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
        if err != nil {
                return InstanceStatus{}, pkgerrors.Wrap(err, "Get Instance")
        }
@@ -985,7 +985,7 @@ func (v *InstanceClient) checkRssStatus(rss helm.KubernetesResource, k8sClient K
 // Empty string returns all
 func (v *InstanceClient) List(rbname, rbversion, profilename string) ([]InstanceMiniResponse, error) {
 
-       dbres, err := db.DBconn.ReadAll(v.storeName, v.tagInst)
+       dbres, err := db.DBconn.ReadAll(context.TODO(), v.storeName, v.tagInst)
        if err != nil || len(dbres) == 0 {
                return []InstanceMiniResponse{}, pkgerrors.Wrap(err, "Listing Instances")
        }
@@ -1081,7 +1081,7 @@ func (v *InstanceClient) Delete(id string) error {
        }
        if inst.Status == "DELETED" {
                //The instance is deleted when the plugin comes back -> just remove from Db
-               err = db.DBconn.Delete(v.storeName, key, v.tagInst)
+               err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                if err != nil {
                        log.Printf("Delete Instance DB Entry for release %s has error.", inst.ReleaseName)
                }
@@ -1100,7 +1100,7 @@ func (v *InstanceClient) Delete(id string) error {
 
        inst.Status = "PRE-DELETE"
        inst.HookProgress = ""
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, inst)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, inst)
        if err != nil {
                log.Printf("Update Instance DB Entry for release %s has error.", inst.ReleaseName)
        }
@@ -1111,7 +1111,7 @@ func (v *InstanceClient) Delete(id string) error {
                if err != nil {
                        log.Printf("  Instance: %s, Error running pre-delete hooks error: %s", id, err)
                        inst.Status = "PRE-DELETE-FAILED"
-                       err2 := db.DBconn.Update(v.storeName, key, v.tagInst, inst)
+                       err2 := db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, inst)
                        if err2 != nil {
                                log.Printf("Update Instance DB Entry for release %s has error.", inst.ReleaseName)
                        }
@@ -1120,7 +1120,7 @@ func (v *InstanceClient) Delete(id string) error {
        }
 
        inst.Status = "DELETING"
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, inst)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, inst)
        if err != nil {
                log.Printf("Update Instance DB Entry for release %s has error.", inst.ReleaseName)
        }
@@ -1149,7 +1149,7 @@ func (v *InstanceClient) Delete(id string) error {
                        log.Printf(err.Error())
                }
 
-               err = db.DBconn.Delete(v.storeName, key, v.tagInst)
+               err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                if err != nil {
                        return pkgerrors.Wrap(err, "Delete Instance")
                }
@@ -1178,7 +1178,7 @@ func (v *InstanceClient) RecoverCreateOrDelete(id string) error {
        log.Printf("  Resolving template for release %s", instance.Request.ReleaseName)
        _, _, hookList, _, err := rb.NewProfileClient().Resolve(instance.Request.RBName, instance.Request.RBVersion, instance.Request.ProfileName, overrideValues, instance.Request.ReleaseName)
        instance.Hooks = hookList
-       err = db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
        if err != nil {
                return pkgerrors.Wrap(err, "Update Instance DB Entry")
        }
@@ -1225,7 +1225,7 @@ func (v *InstanceClient) RecoverCreateOrDelete(id string) error {
                        } else {
                                instance.Status = "DONE"
                        }
-                       err = db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+                       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
                        if err != nil {
                                log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
                        }
@@ -1238,7 +1238,7 @@ func (v *InstanceClient) RecoverCreateOrDelete(id string) error {
                        if err != nil {
                                log.Printf("  Instance: %s, Error running pre-delete hooks error: %s", id, err)
                                instance.Status = "PRE-DELETE-FAILED"
-                               err = db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+                               err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
                                if err != nil {
                                        log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
                                }
@@ -1277,7 +1277,7 @@ func (v *InstanceClient) runPostDelete(k8sClient KubernetesClient, hookClient *H
                ID: instance.ID,
        }
        instance.Status = "POST-DELETE"
-       err := db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+       err := db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
        if err != nil {
                log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
        }
@@ -1286,7 +1286,7 @@ func (v *InstanceClient) runPostDelete(k8sClient KubernetesClient, hookClient *H
                //If this case happen, user should clean the cluster
                log.Printf("  Instance: %s, Error running post-delete hooks error: %s", instance.ID, err)
                instance.Status = "POST-DELETE-FAILED"
-               err2 := db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+               err2 := db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
                if err2 != nil {
                        log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
                        return pkgerrors.Wrap(err2, "Delete Instance DB Entry")
@@ -1299,14 +1299,14 @@ func (v *InstanceClient) runPostDelete(k8sClient KubernetesClient, hookClient *H
                if err != nil {
                        log.Printf(err.Error())
                }
-               err = db.DBconn.Delete(v.storeName, key, v.tagInst)
+               err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
                if err != nil {
                        log.Printf("Delete Instance DB Entry for release %s has error.", instance.ReleaseName)
                        return pkgerrors.Wrap(err, "Delete Instance DB Entry")
                }
        } else {
                instance.Status = "DELETED"
-               err := db.DBconn.Update(v.storeName, key, v.tagInst, instance)
+               err := db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
                if err != nil {
                        log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
                        return pkgerrors.Wrap(err, "Update Instance DB Entry")
index 9b4a1aa..ff2cec4 100644 (file)
@@ -18,6 +18,7 @@ package app
 
 import (
        "bytes"
+       "context"
        "encoding/json"
        "io/ioutil"
        "net"
@@ -181,7 +182,7 @@ func (iss *InstanceStatusSubClient) Create(instanceId string, subDetails Subscri
        lock.Lock()
        defer lock.Unlock()
 
-       err = db.DBconn.Create(iss.storeName, key, iss.tagInst, sub)
+       err = db.DBconn.Create(context.TODO(), iss.storeName, key, iss.tagInst, sub)
        if err != nil {
                return sub, pkgerrors.Wrap(err, "Creating Status Subscription DB Entry")
        }
@@ -205,7 +206,7 @@ func (iss *InstanceStatusSubClient) Get(instanceId, subId string) (StatusSubscri
                InstanceId:       instanceId,
                SubscriptionName: subId,
        }
-       DBResp, err := db.DBconn.Read(iss.storeName, key, iss.tagInst)
+       DBResp, err := db.DBconn.Read(context.TODO(), iss.storeName, key, iss.tagInst)
        if err != nil || DBResp == nil {
                return StatusSubscription{}, pkgerrors.Wrap(err, "Error retrieving Subscription data")
        }
@@ -247,7 +248,7 @@ func (iss *InstanceStatusSubClient) Update(instanceId, subId string, subDetails
        lock.Lock()
        defer lock.Unlock()
 
-       err = db.DBconn.Update(iss.storeName, key, iss.tagInst, sub)
+       err = db.DBconn.Update(context.TODO(), iss.storeName, key, iss.tagInst, sub)
        if err != nil {
                return sub, pkgerrors.Wrap(err, "Updating Status Subscription DB Entry")
        }
@@ -267,7 +268,7 @@ func (iss *InstanceStatusSubClient) List(instanceId string) ([]StatusSubscriptio
        lock.Lock()
        defer lock.Unlock()
        // Retrieve info about created status subscriptions
-       dbResp, err := db.DBconn.ReadAll(iss.storeName, iss.tagInst)
+       dbResp, err := db.DBconn.ReadAll(context.TODO(), iss.storeName, iss.tagInst)
        if err != nil {
                if !strings.Contains(err.Error(), "Did not find any objects with tag") {
                        return []StatusSubscription{}, pkgerrors.Wrap(err, "Getting Status Subscription data")
@@ -322,7 +323,7 @@ func (iss *InstanceStatusSubClient) Delete(instanceId, subId string) error {
                InstanceId:       instanceId,
                SubscriptionName: subId,
        }
-       err = db.DBconn.Delete(iss.storeName, key, iss.tagInst)
+       err = db.DBconn.Delete(context.TODO(), iss.storeName, key, iss.tagInst)
        if err != nil {
                return pkgerrors.Wrap(err, "Removing Status Subscription in DB")
        }
@@ -704,7 +705,7 @@ func runNotifyThread(instanceId, subName string) {
                                                })
                                                currentSub.LastNotifyStatus = notifyResult.result
                                                currentSub.LastNotifyTime = notifyResult.time
-                                               err = db.DBconn.Update(iss.storeName, key, iss.tagInst, currentSub)
+                                               err = db.DBconn.Update(context.TODO(), iss.storeName, key, iss.tagInst, currentSub)
                                                if err != nil {
                                                        log.Error("Error updating subscription status", log.Fields{
                                                                "error":    err.Error(),
index df1400b..a3cee20 100644 (file)
@@ -17,6 +17,7 @@
 package connection
 
 import (
+       "context"
        "encoding/base64"
        "encoding/json"
        "io/ioutil"
@@ -92,7 +93,7 @@ func (v *ConnectionClient) Create(c Connection) (Connection, error) {
                return Connection{}, pkgerrors.New("Connection already exists")
        }
 
-       err = db.DBconn.Create(v.storeName, key, v.tagMeta, c)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, c)
        if err != nil {
                return Connection{}, pkgerrors.Wrap(err, "Creating DB Entry")
        }
@@ -105,7 +106,7 @@ func (v *ConnectionClient) Get(name string) (Connection, error) {
 
        //Construct the composite key to select the entry
        key := ConnectionKey{CloudRegion: name}
-       value, err := db.DBconn.Read(v.storeName, key, v.tagMeta)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return Connection{}, pkgerrors.Wrap(err, "Get Connection")
        }
@@ -126,18 +127,19 @@ func (v *ConnectionClient) Get(name string) (Connection, error) {
 // GetConnectivityRecordByName returns Connection for corresponding to name
 // JSON example:
 // "connectivity-records" :
-//     [
-//             {
-//                     “connectivity-record-name” : “<name>”,   // example: OVN
-//                     “FQDN-or-ip” : “<fqdn>”,
-//                     “ca-cert-to-verify-server” : “<contents of CA certificate to validate the OVN server>”,
-//                     “ssl-initiator” : “<true/false”>,
-//                     “user-name”:  “<user name>”,   //valid if ssl-initator is false
-//                     “password” : “<password>”,      // valid if ssl-initiator is false
-//                     “private-key” :  “<contents of private key in PEM>”, // valid if ssl-initiator is true
-//                     “cert-to-present” :  “<contents of certificate to present to server>” , //valid if ssl-initiator is true
-//             },
-//     ]
+//
+//     [
+//             {
+//                     “connectivity-record-name” : “<name>”,   // example: OVN
+//                     “FQDN-or-ip” : “<fqdn>”,
+//                     “ca-cert-to-verify-server” : “<contents of CA certificate to validate the OVN server>”,
+//                     “ssl-initiator” : “<true/false”>,
+//                     “user-name”:  “<user name>”,   //valid if ssl-initator is false
+//                     “password” : “<password>”,      // valid if ssl-initiator is false
+//                     “private-key” :  “<contents of private key in PEM>”, // valid if ssl-initiator is true
+//                     “cert-to-present” :  “<contents of certificate to present to server>” , //valid if ssl-initiator is true
+//             },
+//     ]
 func (v *ConnectionClient) GetConnectivityRecordByName(connectionName string,
        connectivityRecordName string) (map[string]string, error) {
 
@@ -160,7 +162,7 @@ func (v *ConnectionClient) Delete(name string) error {
 
        //Construct the composite key to select the entry
        key := ConnectionKey{CloudRegion: name}
-       err := db.DBconn.Delete(v.storeName, key, v.tagMeta)
+       err := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete Connection")
        }
index 40978b6..6c1367a 100644 (file)
@@ -14,6 +14,8 @@ limitations under the License.
 package db
 
 import (
+       "context"
+
        k8sconfig "github.com/onap/multicloud-k8s/src/k8splugin/internal/config"
 
        "github.com/hashicorp/consul/api"
@@ -67,7 +69,7 @@ func (c *ConsulStore) Unmarshal(inp []byte, out interface{}) error {
 }
 
 // Create is used to create a DB entry
-func (c *ConsulStore) Create(root string, key Key, tag string, data interface{}) error {
+func (c *ConsulStore) Create(ctx context.Context, root string, key Key, tag string, data interface{}) error {
 
        //Convert to string as Consul only supports string based keys
        k := key.String()
@@ -89,12 +91,12 @@ func (c *ConsulStore) Create(root string, key Key, tag string, data interface{})
 }
 
 // Update is used to update a DB entry
-func (c *ConsulStore) Update(root string, key Key, tag string, data interface{}) error {
-       return c.Create(root, key, tag, data)
+func (c *ConsulStore) Update(ctx context.Context, root string, key Key, tag string, data interface{}) error {
+       return c.Create(ctx, root, key, tag, data)
 }
 
 // Read method returns the internalID for a particular externalID
-func (c *ConsulStore) Read(root string, key Key, tag string) ([]byte, error) {
+func (c *ConsulStore) Read(ctx context.Context, root string, key Key, tag string) ([]byte, error) {
 
        //Convert to string as Consul only supports string based keys
        k := key.String()
@@ -114,7 +116,7 @@ func (c *ConsulStore) Read(root string, key Key, tag string) ([]byte, error) {
 }
 
 // Delete method removes an internalID from the Database
-func (c *ConsulStore) Delete(root string, key Key, tag string) error {
+func (c *ConsulStore) Delete(ctx context.Context, root string, key Key, tag string) error {
 
        //Convert to string as Consul only supports string based keys
        k := key.String()
@@ -126,7 +128,7 @@ func (c *ConsulStore) Delete(root string, key Key, tag string) error {
 }
 
 // ReadAll is used to get all ExternalIDs in a namespace
-func (c *ConsulStore) ReadAll(root string, tag string) (map[string][]byte, error) {
+func (c *ConsulStore) ReadAll(ctx context.Context, root string, tag string) (map[string][]byte, error) {
        pairs, _, err := c.client.List(root, nil)
        if err != nil {
                return nil, err
index 139d4f8..ec7078f 100644 (file)
@@ -14,6 +14,7 @@ limitations under the License.
 package db
 
 import (
+       "context"
        "reflect"
        "strings"
        "testing"
@@ -124,7 +125,7 @@ func TestConsulCreate(t *testing.T) {
        for _, testCase := range testCases {
                t.Run(testCase.label, func(t *testing.T) {
                        client, _ := NewConsulStore(testCase.mock)
-                       err := client.Create(testCase.input["root"], testCase.key,
+                       err := client.Create(context.TODO(), testCase.input["root"], testCase.key,
                                testCase.input["tag"], testCase.input["value"])
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -181,7 +182,7 @@ func TestConsulRead(t *testing.T) {
        for _, testCase := range testCases {
                t.Run(testCase.label, func(t *testing.T) {
                        client, _ := NewConsulStore(testCase.mock)
-                       result, err := client.Read(testCase.input["root"], testCase.key,
+                       result, err := client.Read(context.TODO(), testCase.input["root"], testCase.key,
                                testCase.input["tag"])
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -230,7 +231,7 @@ func TestConsulDelete(t *testing.T) {
        for _, testCase := range testCases {
                t.Run(testCase.label, func(t *testing.T) {
                        client, _ := NewConsulStore(testCase.mock)
-                       err := client.Delete(testCase.input["root"], testCase.key,
+                       err := client.Delete(context.TODO(), testCase.input["root"], testCase.key,
                                testCase.input["tag"])
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -292,7 +293,7 @@ func TestConsulReadAll(t *testing.T) {
        for _, testCase := range testCases {
                t.Run(testCase.label, func(t *testing.T) {
                        client, _ := NewConsulStore(testCase.mock)
-                       result, err := client.ReadAll(testCase.input["root"],
+                       result, err := client.ReadAll(context.TODO(), testCase.input["root"],
                                testCase.input["tag"])
                        if err != nil {
                                if testCase.expectedError == "" {
index db326bb..cf78fe0 100644 (file)
@@ -130,13 +130,12 @@ func (m *MongoStore) validateParams(args ...interface{}) bool {
 }
 
 // Create is used to create a DB entry
-func (m *MongoStore) Create(coll string, key Key, tag string, data interface{}) error {
+func (m *MongoStore) Create(ctx context.Context, coll string, key Key, tag string, data interface{}) error {
        if data == nil || !m.validateParams(coll, key, tag) {
                return pkgerrors.New("No Data to store")
        }
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        //Insert the data and then add the objectID to the masterTable
        res, err := c.InsertOne(ctx, bson.D{
@@ -169,17 +168,16 @@ func (m *MongoStore) Create(coll string, key Key, tag string, data interface{})
 }
 
 // Update is used to update a DB entry
-func (m *MongoStore) Update(coll string, key Key, tag string, data interface{}) error {
+func (m *MongoStore) Update(ctx context.Context, coll string, key Key, tag string, data interface{}) error {
        if data == nil || !m.validateParams(coll, key, tag) {
                return pkgerrors.New("No Data to update")
        }
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        //Get the masterkey document based on given key
        filter := bson.D{{"key", key}}
-       keydata, err := decodeBytes(c.FindOne(context.Background(), filter))
+       keydata, err := decodeBytes(c.FindOne(ctx, filter))
        if err != nil {
                return pkgerrors.Errorf("Error finding master table: %s", err.Error())
        }
@@ -222,17 +220,16 @@ func (m *MongoStore) Unmarshal(inp []byte, out interface{}) error {
 }
 
 // Read method returns the data stored for this key and for this particular tag
-func (m *MongoStore) Read(coll string, key Key, tag string) ([]byte, error) {
+func (m *MongoStore) Read(ctx context.Context, coll string, key Key, tag string) ([]byte, error) {
        if !m.validateParams(coll, key, tag) {
                return nil, pkgerrors.New("Mandatory fields are missing")
        }
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        //Get the masterkey document based on given key
        filter := bson.D{{"key", key}}
-       keydata, err := decodeBytes(c.FindOne(context.Background(), filter))
+       keydata, err := decodeBytes(c.FindOne(ctx, filter))
        if err != nil {
                return nil, pkgerrors.Errorf("Error finding master table: %s", err.Error())
        }
@@ -261,10 +258,9 @@ func (m *MongoStore) Read(coll string, key Key, tag string) ([]byte, error) {
 }
 
 // Helper function that deletes an object by its ID
-func (m *MongoStore) deleteObjectByID(coll string, objID primitive.ObjectID) error {
+func (m *MongoStore) deleteObjectByID(ctx context.Context, coll string, objID primitive.ObjectID) error {
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        _, err := c.DeleteOne(ctx, bson.D{{"_id", objID}})
        if err != nil {
@@ -277,13 +273,12 @@ func (m *MongoStore) deleteObjectByID(coll string, objID primitive.ObjectID) err
 
 // Delete method removes a document from the Database that matches key
 // TODO: delete all referenced docs if tag is empty string
-func (m *MongoStore) Delete(coll string, key Key, tag string) error {
+func (m *MongoStore) Delete(ctx context.Context, coll string, key Key, tag string) error {
        if !m.validateParams(coll, key, tag) {
                return pkgerrors.New("Mandatory fields are missing")
        }
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        //Get the masterkey document based on given key
        filter := bson.D{{"key", key}}
@@ -319,7 +314,7 @@ func (m *MongoStore) Delete(coll string, key Key, tag string) error {
        }
 
        //Use tag objectID to read the data from store
-       err = m.deleteObjectByID(coll, tagoid)
+       err = m.deleteObjectByID(ctx, coll, tagoid)
        if err != nil {
                return pkgerrors.Errorf("Error deleting from database: %s", err.Error())
        }
@@ -332,7 +327,7 @@ func (m *MongoStore) Delete(coll string, key Key, tag string) error {
                if !ok {
                        return pkgerrors.Errorf("Error finding objectID for key %s", key)
                }
-               err = m.deleteObjectByID(coll, keyid)
+               err = m.deleteObjectByID(ctx, coll, keyid)
                if err != nil {
                        return pkgerrors.Errorf("Error deleting master table from database: %s", err.Error())
                }
@@ -342,13 +337,12 @@ func (m *MongoStore) Delete(coll string, key Key, tag string) error {
 }
 
 // ReadAll is used to get all documents in db of a particular tag
-func (m *MongoStore) ReadAll(coll, tag string) (map[string][]byte, error) {
+func (m *MongoStore) ReadAll(ctx context.Context, coll, tag string) (map[string][]byte, error) {
        if !m.validateParams(coll, tag) {
                return nil, pkgerrors.New("Missing collection or tag name")
        }
 
        c := getCollection(coll, m)
-       ctx := context.Background()
 
        //Get all master tables in this collection
        filter := bson.D{
index 171c908..27b7e85 100644 (file)
@@ -29,7 +29,7 @@ import (
        "go.mongodb.org/mongo-driver/mongo/options"
 )
 
-//Implements the functions used currently in mongo.go
+// Implements the functions used currently in mongo.go
 type mockCollection struct {
        Err          error
        mCursor      *mongo.Cursor
@@ -127,7 +127,7 @@ func TestCreate(t *testing.T) {
                                return testCase.bson, testCase.mockColl.Err
                        }
 
-                       err := m.Create(testCase.input["coll"].(string), testCase.input["key"].(Key),
+                       err := m.Create(context.TODO(), testCase.input["coll"].(string), testCase.input["key"].(Key),
                                testCase.input["tag"].(string), testCase.input["data"])
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -205,7 +205,7 @@ func TestUpdate(t *testing.T) {
                                return testCase.bson, testCase.mockColl.Err
                        }
 
-                       err := m.Update(testCase.input["coll"].(string), testCase.input["key"].(Key),
+                       err := m.Update(context.TODO(), testCase.input["coll"].(string), testCase.input["key"].(Key),
                                testCase.input["tag"].(string), testCase.input["data"])
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -322,7 +322,7 @@ func TestRead(t *testing.T) {
                        decodeBytes = func(sr *mongo.SingleResult) (bson.Raw, error) {
                                return testCase.bson, testCase.mockColl.Err
                        }
-                       got, err := m.Read(testCase.input["coll"].(string), testCase.input["key"].(Key),
+                       got, err := m.Read(context.TODO(), testCase.input["coll"].(string), testCase.input["key"].(Key),
                                testCase.input["tag"].(string))
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -441,7 +441,7 @@ func TestDelete(t *testing.T) {
                        decodeBytes = func(sr *mongo.SingleResult) (bson.Raw, error) {
                                return testCase.bson, testCase.mockColl.Err
                        }
-                       err := m.Delete(testCase.input["coll"].(string), testCase.input["key"].(Key),
+                       err := m.Delete(context.TODO(), testCase.input["coll"].(string), testCase.input["key"].(Key),
                                testCase.input["tag"].(string))
                        if err != nil {
                                if testCase.expectedError == "" {
@@ -578,7 +578,7 @@ func TestReadAll(t *testing.T) {
                                return nil
                        }
 
-                       got, err := m.ReadAll(testCase.input["coll"].(string), testCase.input["tag"].(string))
+                       got, err := m.ReadAll(context.TODO(), testCase.input["coll"].(string), testCase.input["tag"].(string))
                        if err != nil {
                                if testCase.expectedError == "" {
                                        t.Fatalf("Readall method returned an un-expected (%s)", err)
index 0b869c0..325d489 100644 (file)
@@ -14,6 +14,7 @@ limitations under the License.
 package db
 
 import (
+       "context"
        "encoding/json"
        "reflect"
 
@@ -40,20 +41,20 @@ type Store interface {
 
        // Creates a new master table with key and links data with tag and
        // creates a pointer to the newly added data in the master table
-       Create(table string, key Key, tag string, data interface{}) error
+       Create(ctx context.Context, table string, key Key, tag string, data interface{}) error
 
        // Reads data for a particular key with specific tag.
-       Read(table string, key Key, tag string) ([]byte, error)
+       Read(ctx context.Context, table string, key Key, tag string) ([]byte, error)
 
        // Update data for particular key with specific tag
-       Update(table string, key Key, tag string, data interface{}) error
+       Update(ctx context.Context, table string, key Key, tag string, data interface{}) error
 
        // Deletes a specific tag data for key.
        // TODO: If tag is empty, it will delete all tags under key.
-       Delete(table string, key Key, tag string) error
+       Delete(ctx context.Context, table string, key Key, tag string) error
 
        // Reads all master tables and data from the specified tag in table
-       ReadAll(table string, tag string) (map[string][]byte, error)
+       ReadAll(ctx context.Context, table string, tag string) (map[string][]byte, error)
 }
 
 // CreateDBClient creates the DB client
index 9a427e0..4c719cd 100644 (file)
@@ -14,6 +14,7 @@ limitations under the License.
 package db
 
 import (
+       "context"
        "encoding/json"
 
        pkgerrors "github.com/pkg/errors"
@@ -27,9 +28,9 @@ func (m MockKey) String() string {
        return m.Key
 }
 
-//Creating an embedded interface via anonymous variable
-//This allows us to make mockDB satisfy the DatabaseConnection
-//interface even if we are not implementing all the methods in it
+// Creating an embedded interface via anonymous variable
+// This allows us to make mockDB satisfy the DatabaseConnection
+// interface even if we are not implementing all the methods in it
 type MockDB struct {
        Store
        Items map[string]map[string][]byte
@@ -40,7 +41,7 @@ func (m *MockDB) HealthCheck() error {
        return m.Err
 }
 
-func (m *MockDB) Create(table string, key Key, tag string, data interface{}) error {
+func (m *MockDB) Create(ctx context.Context, table string, key Key, tag string, data interface{}) error {
        djs, err := json.Marshal(data)
        if err != nil {
                return err
@@ -57,7 +58,7 @@ func (m *MockDB) Create(table string, key Key, tag string, data interface{}) err
        return m.Err
 }
 
-func (m *MockDB) Update(table string, key Key, tag string, data interface{}) error {
+func (m *MockDB) Update(ctx context.Context, table string, key Key, tag string, data interface{}) error {
        return m.Err
 }
 
@@ -70,7 +71,7 @@ func (m *MockDB) Unmarshal(inp []byte, out interface{}) error {
        return nil
 }
 
-func (m *MockDB) Read(table string, key Key, tag string) ([]byte, error) {
+func (m *MockDB) Read(ctx context.Context, table string, key Key, tag string) ([]byte, error) {
        if m.Err != nil {
                return nil, m.Err
        }
@@ -84,11 +85,11 @@ func (m *MockDB) Read(table string, key Key, tag string) ([]byte, error) {
        return nil, m.Err
 }
 
-func (m *MockDB) Delete(table string, key Key, tag string) error {
+func (m *MockDB) Delete(ctx context.Context, table string, key Key, tag string) error {
        return m.Err
 }
 
-func (m *MockDB) ReadAll(table string, tag string) (map[string][]byte, error) {
+func (m *MockDB) ReadAll(ctx context.Context, table string, tag string) (map[string][]byte, error) {
        if m.Err != nil {
                return nil, m.Err
        }
index 70f5bec..328bdca 100644 (file)
@@ -14,6 +14,7 @@ limitations under the License.
 package healthcheck
 
 import (
+       "context"
        "encoding/json"
        "strings"
        "sync"
@@ -162,7 +163,7 @@ func (ihc InstanceHCClient) Create(instanceId string) (InstanceMiniHCStatus, err
                        retErr := "Starting hook " + h.Status.Name
 
                        // Dump to DB
-                       err = db.DBconn.Create(ihc.storeName, key, ihc.tagInst, ihcs)
+                       err = db.DBconn.Create(context.TODO(), ihc.storeName, key, ihc.tagInst, ihcs)
                        if err != nil {
                                retErr = retErr + " and couldn't save to DB"
                        }
@@ -174,7 +175,7 @@ func (ihc InstanceHCClient) Create(instanceId string) (InstanceMiniHCStatus, err
                        h.Status.KR = kr
                }
        }
-       err = db.DBconn.Create(ihc.storeName, key, ihc.tagInst, ihcs)
+       err = db.DBconn.Create(context.TODO(), ihc.storeName, key, ihc.tagInst, ihcs)
        if err != nil {
                return instanceMiniHCStatusFromStatus(ihcs),
                        pkgerrors.Wrap(err, "Creating Instance DB Entry")
@@ -221,7 +222,7 @@ func (ihc InstanceHCClient) Create(instanceId string) (InstanceMiniHCStatus, err
                                        "Reason":        map[bool]string{true: "Hook finished", false: "All hooks finished"}[b],
                                })
                                if b { //Some hook finished - need to update DB
-                                       err = db.DBconn.Update(ihc.storeName, key, ihc.tagInst, ihcs)
+                                       err = db.DBconn.Update(context.TODO(), ihc.storeName, key, ihc.tagInst, ihcs)
                                        if err != nil {
                                                log.Error("Couldn't update database", log.Fields{
                                                        "Store":   ihc.storeName,
@@ -248,7 +249,7 @@ func (ihc InstanceHCClient) Create(instanceId string) (InstanceMiniHCStatus, err
                                                }
                                        }
                                        ihcs.Status = finalResult
-                                       err = db.DBconn.Update(ihc.storeName, key, ihc.tagInst, ihcs)
+                                       err = db.DBconn.Update(context.TODO(), ihc.storeName, key, ihc.tagInst, ihcs)
                                        if err != nil {
                                                log.Error("Couldn't update database", log.Fields{
                                                        "Store":   ihc.storeName,
@@ -269,7 +270,7 @@ func (ihc InstanceHCClient) Get(instanceId, healthcheckId string) (InstanceHCSta
                InstanceId:    instanceId,
                HealthcheckId: healthcheckId,
        }
-       DBResp, err := db.DBconn.Read(ihc.storeName, key, ihc.tagInst)
+       DBResp, err := db.DBconn.Read(context.TODO(), ihc.storeName, key, ihc.tagInst)
        if err != nil || DBResp == nil {
                return InstanceHCStatus{}, pkgerrors.Wrap(err, "Error retrieving Healthcheck data")
        }
@@ -309,7 +310,7 @@ func (ihc InstanceHCClient) Delete(instanceId, healthcheckId string) error {
        if cumulatedErr != "" {
                return pkgerrors.New("Removing hooks failed with errors:\n" + cumulatedErr)
        }
-       err = db.DBconn.Delete(ihc.storeName, key, ihc.tagInst)
+       err = db.DBconn.Delete(context.TODO(), ihc.storeName, key, ihc.tagInst)
        if err != nil {
                return pkgerrors.Wrap(err, "Removing Healthcheck in DB")
        }
@@ -330,7 +331,7 @@ func (ihc InstanceHCClient) List(instanceId string) (InstanceHCOverview, error)
        ihco.Hooks = instance.Hooks
 
        // Retrieve info about running/completed healthchecks
-       dbResp, err := db.DBconn.ReadAll(ihc.storeName, ihc.tagInst)
+       dbResp, err := db.DBconn.ReadAll(context.TODO(), ihc.storeName, ihc.tagInst)
        if err != nil {
                if !strings.Contains(err.Error(), "Did not find any objects with tag") {
                        return ihco, pkgerrors.Wrap(err, "Getting Healthcheck data")
index 8eb8954..856a60f 100644 (file)
@@ -17,6 +17,7 @@
 package namegenerator
 
 import (
+       "context"
        "encoding/json"
        "log"
        "strings"
@@ -83,7 +84,7 @@ func (c *cache) isAlreadyUsed(name string) bool {
 func (c *cache) readCacheFromDB() error {
 
        // Read the latest from cache
-       data, err := db.DBconn.Read(storeName, cacheKeyGlobal, tag)
+       data, err := db.DBconn.Read(context.TODO(), storeName, cacheKeyGlobal, tag)
        if err != nil {
                log.Println("Error reading name cache from Database: ", err)
                return pkgerrors.Wrap(err, "Reading cache from DB")
@@ -102,11 +103,11 @@ func (c *cache) readCacheFromDB() error {
 func (c *cache) writeCacheToDB() {
 
        //Update the database as well
-       err := db.DBconn.Update(storeName, cacheKeyGlobal, tag, c.cache)
+       err := db.DBconn.Update(context.TODO(), storeName, cacheKeyGlobal, tag, c.cache)
        if err != nil {
                // TODO: Replace with DBconn variable
                if strings.Contains(err.Error(), "Error finding master table") {
-                       err = db.DBconn.Create(storeName, cacheKeyGlobal, tag, c.cache)
+                       err = db.DBconn.Create(context.TODO(), storeName, cacheKeyGlobal, tag, c.cache)
                        if err != nil {
                                log.Println("Error creating the entry in DB. Will try later...")
                                return
index 06576e5..225f256 100644 (file)
@@ -18,17 +18,16 @@ package rb
 
 import (
        "bytes"
+       "context"
+       "encoding/base64"
        "encoding/json"
        "io/ioutil"
+       "log"
        "os"
        "path/filepath"
 
        "github.com/onap/multicloud-k8s/src/k8splugin/internal/db"
 
-       "encoding/base64"
-
-       "log"
-
        pkgerrors "github.com/pkg/errors"
 )
 
@@ -123,14 +122,14 @@ func (v *ConfigTemplateClient) CreateOrUpdate(rbName, rbVersion string, p Config
        if update {
                p.ChartName = prev.ChartName
                p.HasContent = prev.HasContent
-               err = db.DBconn.Update(v.storeName, key, v.tagMeta, p)
+               err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagMeta, p)
                if err != nil {
                        return pkgerrors.Wrap(err, "Updating  ConfigTemplate DB Entry")
                }
        } else {
                p.ChartName = rbDef.ChartName
                p.HasContent = false
-               err = db.DBconn.Create(v.storeName, key, v.tagMeta, p)
+               err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, p)
                if err != nil {
                        return pkgerrors.Wrap(err, "Creating  ConfigTemplate DB Entry")
                }
@@ -146,7 +145,7 @@ func (v *ConfigTemplateClient) Get(rbName, rbVersion, templateName string) (Conf
                RBVersion:    rbVersion,
                TemplateName: templateName,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagMeta)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return ConfigTemplate{}, pkgerrors.Wrap(err, "Get ConfigTemplate")
        }
@@ -168,7 +167,7 @@ func (v *ConfigTemplateClient) Get(rbName, rbVersion, templateName string) (Conf
 func (v *ConfigTemplateClient) List(rbName, rbVersion string) ([]ConfigTemplateList, error) {
 
        //Get all config templates
-       dbres, err := db.DBconn.ReadAll(v.storeName, v.tagMeta)
+       dbres, err := db.DBconn.ReadAll(context.TODO(), v.storeName, v.tagMeta)
        if err != nil || len(dbres) == 0 {
                return []ConfigTemplateList{}, pkgerrors.Wrap(err, "No Config Templates Found")
        }
@@ -188,7 +187,7 @@ func (v *ConfigTemplateClient) List(rbName, rbVersion string) ([]ConfigTemplateL
                                RBVersion:    rbVersion,
                                TemplateName: tmp.TemplateName,
                        }
-                       _, err := db.DBconn.Read(v.storeName, keyTmp, v.tagMeta)
+                       _, err := db.DBconn.Read(context.TODO(), v.storeName, keyTmp, v.tagMeta)
                        if err == nil && keyTmp.RBName == rbName && keyTmp.RBVersion == rbVersion {
                                results = append(results, tmp)
                        }
@@ -209,12 +208,12 @@ func (v *ConfigTemplateClient) Delete(rbName, rbVersion, templateName string) er
                RBVersion:    rbVersion,
                TemplateName: templateName,
        }
-       err := db.DBconn.Delete(v.storeName, key, v.tagMeta)
+       err := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete ConfigTemplate")
        }
 
-       err = db.DBconn.Delete(v.storeName, key, v.tagContent)
+       err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete  ConfigTemplate Content")
        }
@@ -266,19 +265,19 @@ func (v *ConfigTemplateClient) Upload(rbName, rbVersion, templateName string, in
                return pkgerrors.New("Invalid template no Chart.yaml file found")
        }
 
-       err = db.DBconn.Create(v.storeName, key, v.tagMeta, t)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, t)
        if err != nil {
                return pkgerrors.Wrap(err, "Creating  ConfigTemplate DB Entry")
        }
 
        //Encode given byte stream to text for storage
        encodedStr := base64.StdEncoding.EncodeToString(inp)
-       err = db.DBconn.Create(v.storeName, key, v.tagContent, encodedStr)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagContent, encodedStr)
        if err != nil {
                return pkgerrors.Errorf("Error uploading data to db %s", err.Error())
        }
        t.HasContent = true
-       err = db.DBconn.Update(v.storeName, key, v.tagMeta, t)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagMeta, t)
        if err != nil {
                return pkgerrors.Wrap(err, "Updating  ConfigTemplate DB Entry")
        }
@@ -303,7 +302,7 @@ func (v *ConfigTemplateClient) Download(rbName, rbVersion, templateName string)
                RBVersion:    rbVersion,
                TemplateName: templateName,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagContent)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return nil, pkgerrors.Wrap(err, "Get Resource ConfigTemplate content")
        }
index aa76afa..7e8d8db 100644 (file)
@@ -18,6 +18,7 @@ package rb
 
 import (
        "bytes"
+       "context"
        "encoding/base64"
        "encoding/json"
        "io/ioutil"
@@ -98,7 +99,7 @@ func (v *DefinitionClient) Create(def Definition) (Definition, error) {
                return Definition{}, pkgerrors.New("Definition already exists")
        }
 
-       err = db.DBconn.Create(v.storeName, key, v.tagMeta, def)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, def)
        if err != nil {
                return Definition{}, pkgerrors.Wrap(err, "Creating DB Entry")
        }
@@ -152,7 +153,7 @@ func (v *DefinitionClient) Update(def Definition) (Definition, error) {
                return Definition{}, pkgerrors.New("Definition does not exists")
        }
 
-       err = db.DBconn.Update(v.storeName, key, v.tagMeta, def)
+       err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagMeta, def)
        if err != nil {
                return Definition{}, pkgerrors.Wrap(err, "Updating DB Entry")
        }
@@ -162,7 +163,7 @@ func (v *DefinitionClient) Update(def Definition) (Definition, error) {
 
 // List all resource entry's versions in the database
 func (v *DefinitionClient) List(name string) ([]Definition, error) {
-       res, err := db.DBconn.ReadAll(v.storeName, v.tagMeta)
+       res, err := db.DBconn.ReadAll(context.TODO(), v.storeName, v.tagMeta)
        if err != nil || len(res) == 0 {
                return []Definition{}, pkgerrors.Wrap(err, "Listing Resource Bundle Definitions")
        }
@@ -195,7 +196,7 @@ func (v *DefinitionClient) Get(name string, version string) (Definition, error)
 
        //Construct the composite key to select the entry
        key := DefinitionKey{RBName: name, RBVersion: version}
-       value, err := db.DBconn.Read(v.storeName, key, v.tagMeta)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return Definition{}, pkgerrors.Wrap(err, "Get Resource Bundle definition")
        }
@@ -218,13 +219,13 @@ func (v *DefinitionClient) Delete(name string, version string) error {
 
        //Construct the composite key to select the entry
        key := DefinitionKey{RBName: name, RBVersion: version}
-       err := db.DBconn.Delete(v.storeName, key, v.tagMeta)
+       err := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete Resource Bundle Definition")
        }
 
        //Delete the content when the delete operation happens
-       err = db.DBconn.Delete(v.storeName, key, v.tagContent)
+       err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete Resource Bundle Definition Content")
        }
@@ -290,7 +291,7 @@ func (v *DefinitionClient) Upload(name string, version string, inp []byte) error
                }
 
                //TODO: Use db update api once db supports it.
-               err = db.DBconn.Create(v.storeName, key, v.tagMeta, def)
+               err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, def)
                if err != nil {
                        return pkgerrors.Wrap(err, "Storing updated chart metadata")
                }
@@ -298,7 +299,7 @@ func (v *DefinitionClient) Upload(name string, version string, inp []byte) error
 
        //Encode given byte stream to text for storage
        encodedStr := base64.StdEncoding.EncodeToString(inp)
-       err = db.DBconn.Create(v.storeName, key, v.tagContent, encodedStr)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagContent, encodedStr)
        if err != nil {
                return pkgerrors.Errorf("Error uploading data to db: %s", err.Error())
        }
@@ -320,7 +321,7 @@ func (v *DefinitionClient) Download(name string, version string) ([]byte, error)
 
        //Construct the composite key to select the entry
        key := DefinitionKey{RBName: name, RBVersion: version}
-       value, err := db.DBconn.Read(v.storeName, key, v.tagContent)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return nil, pkgerrors.Wrap(err, "Get Resource Bundle definition content")
        }
index ac90a63..2723ba4 100644 (file)
@@ -19,6 +19,7 @@ package rb
 
 import (
        "bytes"
+       "context"
        "encoding/base64"
        "encoding/json"
        "log"
@@ -123,12 +124,12 @@ func (v *ProfileClient) CreateOrUpdate(p Profile, update bool) (Profile, error)
        }
 
        if update {
-               err = db.DBconn.Update(v.storeName, key, v.tagMeta, p)
+               err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagMeta, p)
                if err != nil {
                        return Profile{}, pkgerrors.Wrap(err, "Updating Profile DB Entry")
                }
        } else {
-               err = db.DBconn.Create(v.storeName, key, v.tagMeta, p)
+               err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagMeta, p)
                if err != nil {
                        return Profile{}, pkgerrors.Wrap(err, "Creating Profile DB Entry")
                }
@@ -144,7 +145,7 @@ func (v *ProfileClient) Get(rbName, rbVersion, prName string) (Profile, error) {
                RBVersion:   rbVersion,
                ProfileName: prName,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagMeta)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return Profile{}, pkgerrors.Wrap(err, "Get Resource Bundle Profile")
        }
@@ -166,7 +167,7 @@ func (v *ProfileClient) Get(rbName, rbVersion, prName string) (Profile, error) {
 func (v *ProfileClient) List(rbName, rbVersion string) ([]Profile, error) {
 
        //Get all profiles
-       dbres, err := db.DBconn.ReadAll(v.storeName, v.tagMeta)
+       dbres, err := db.DBconn.ReadAll(context.TODO(), v.storeName, v.tagMeta)
        if err != nil || len(dbres) == 0 {
                return []Profile{}, pkgerrors.Wrap(err, "No Profiles Found")
        }
@@ -201,12 +202,12 @@ func (v *ProfileClient) Delete(rbName, rbVersion, prName string) error {
                RBVersion:   rbVersion,
                ProfileName: prName,
        }
-       err := db.DBconn.Delete(v.storeName, key, v.tagMeta)
+       err := db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagMeta)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete Resource Bundle Profile")
        }
 
-       err = db.DBconn.Delete(v.storeName, key, v.tagContent)
+       err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return pkgerrors.Wrap(err, "Delete Resource Bundle Profile Content")
        }
@@ -235,7 +236,7 @@ func (v *ProfileClient) Upload(rbName, rbVersion, prName string, inp []byte) err
        }
        //Encode given byte stream to text for storage
        encodedStr := base64.StdEncoding.EncodeToString(inp)
-       err = db.DBconn.Create(v.storeName, key, v.tagContent, encodedStr)
+       err = db.DBconn.Create(context.TODO(), v.storeName, key, v.tagContent, encodedStr)
        if err != nil {
                return pkgerrors.Errorf("Error uploading data to db %s", err.Error())
        }
@@ -260,7 +261,7 @@ func (v *ProfileClient) Download(rbName, rbVersion, prName string) ([]byte, erro
                RBVersion:   rbVersion,
                ProfileName: prName,
        }
-       value, err := db.DBconn.Read(v.storeName, key, v.tagContent)
+       value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagContent)
        if err != nil {
                return nil, pkgerrors.Wrap(err, "Get Resource Bundle Profile content")
        }
@@ -279,7 +280,7 @@ func (v *ProfileClient) Download(rbName, rbVersion, prName string) ([]byte, erro
        return nil, pkgerrors.New("Error downloading Profile content")
 }
 
-//GetYamlClient GEt Yaml Files client for profile
+// GetYamlClient GEt Yaml Files client for profile
 func (v *ProfileClient) GetYamlClient(rbName string, rbVersion string, profileName string) (ProfileYamlClient, error) {
        prData, err := v.Download(rbName, rbVersion, profileName)
        if err != nil {
@@ -298,8 +299,8 @@ func (v *ProfileClient) GetYamlClient(rbName string, rbVersion string, profileNa
        return prYamlClient, nil
 }
 
-//Resolve returns the path where the helm chart merged with
-//configuration overrides resides and final ReleaseName picked for instantiation
+// Resolve returns the path where the helm chart merged with
+// configuration overrides resides and final ReleaseName picked for instantiation
 func (v *ProfileClient) Resolve(rbName string, rbVersion string,
        profileName string, values []string, overrideReleaseName string) ([]helm.KubernetesResourceTemplate, []helm.KubernetesResourceTemplate, []*helm.Hook, string, error) {