key := InstanceKey{
ID: id,
}
- value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
+ value, err := db.DBconn.Read(ctx, v.storeName, key, v.tagInst)
if err != nil {
return InstanceResponse{}, pkgerrors.Wrap(err, "Upgrade Instance")
}
if currentInstance.Request.CloudRegion != u.CloudRegion {
newInstance, err := v.Create(ctx, i, "")
if err == nil {
- err = v.Delete(context.TODO(), id)
+ err = v.Delete(ctx, id)
if err == nil {
newInstanceDb, _ := v.GetFull(ctx, newInstance.ID)
oldKey := InstanceKey{
ID: newInstance.ID,
}
- err2 := db.DBconn.Delete(context.TODO(), v.storeName, oldKey, v.tagInst)
+ err2 := db.DBconn.Delete(ctx, 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(context.TODO(), v.storeName, key, v.tagInst, newInstanceDb)
+ err = db.DBconn.Create(ctx, v.storeName, key, v.tagInst, newInstanceDb)
if err != nil {
return newInstance, pkgerrors.Wrap(err, "Create Instance DB Entry after update failed")
}
return newInstance, nil
} else {
- err2 := v.Delete(context.TODO(), newInstance.ID)
+ err2 := v.Delete(ctx, newInstance.ID)
if err2 != nil {
log.Printf("Delete of the instance from the new region failed with error %s", err2.Error())
}
return InstanceResponse{}, pkgerrors.Wrap(err, "Creating Namespace")
}
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, dbData)
if err != nil {
return InstanceResponse{}, pkgerrors.Wrap(err, "Updating Instance DB Entry")
}
}
dbData.Status = "UPGRADING"
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, dbData)
if err != nil {
return InstanceResponse{}, pkgerrors.Wrap(err, "Update Instance DB Entry")
}
dbData.Status = "UPGRADED"
dbData.Resources = upgradedResources
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, dbData)
if err != nil {
return InstanceResponse{}, pkgerrors.Wrap(err, "Update Instance DB Entry")
}
} else {
dbData.Status = "DONE"
}
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, dbData)
+ err = db.DBconn.Update(ctx, 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(context.TODO(), v.storeName, key, v.tagInst, dbData)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, dbData)
if err != nil {
log.Printf("Update Instance DB Entry for release %s has error.", releaseName)
}
key := InstanceKey{
ID: id,
}
- value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
+ value, err := db.DBconn.Read(ctx, v.storeName, key, v.tagInst)
if err != nil {
return InstanceDbData{}, pkgerrors.Wrap(err, "Get Instance")
}
key := InstanceKey{
ID: id,
}
- value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
+ value, err := db.DBconn.Read(ctx, v.storeName, key, v.tagInst)
if err != nil {
return InstanceResponse{}, pkgerrors.Wrap(err, "Get Instance")
}
key := InstanceKey{
ID: id,
}
- value, err := db.DBconn.Read(context.TODO(), v.storeName, key, v.tagInst)
+ value, err := db.DBconn.Read(ctx, v.storeName, key, v.tagInst)
if err != nil {
return InstanceStatus{}, pkgerrors.Wrap(err, "Get Instance")
}
labels = labels + labelValue
}
- resources, err := queryClient.Query(resResp.Namespace, resResp.Request.CloudRegion, apiVersion, kind, name, labels)
+ resources, err := queryClient.Query(ctx, resResp.Namespace, resResp.Request.CloudRegion, apiVersion, kind, name, labels)
if err != nil {
return InstanceStatus{}, pkgerrors.Wrap(err, "Querying Resources")
}
queryClient := NewQueryClient()
labelValue := config.GetConfiguration().KubernetesLabelName + "=" + id
for _, extraType := range profile.ExtraResourceTypes {
- queryStatus, err := queryClient.Query(resResp.Namespace, resResp.Request.CloudRegion, extraType.GroupVersion().Identifier(), extraType.Kind, "", labelValue)
+ queryStatus, err := queryClient.Query(ctx, resResp.Namespace, resResp.Request.CloudRegion, extraType.GroupVersion().Identifier(), extraType.Kind, "", labelValue)
if err != nil {
return InstanceStatus{}, pkgerrors.Wrap(err, "Querying Resources")
}
// Empty string returns all
func (v *InstanceClient) List(ctx context.Context, rbname, rbversion, profilename string) ([]InstanceMiniResponse, error) {
- dbres, err := db.DBconn.ReadAll(context.TODO(), v.storeName, v.tagInst)
+ dbres, err := db.DBconn.ReadAll(ctx, v.storeName, v.tagInst)
if err != nil || len(dbres) == 0 {
return []InstanceMiniResponse{}, pkgerrors.Wrap(err, "Listing Instances")
}
// Delete the Instance from database
func (v *InstanceClient) Delete(ctx context.Context, id string) error {
+ ctx, span := tracer.Start(ctx, "InstanceClient.Delete")
+ defer span.End()
inst, err := v.GetFull(ctx, id)
if err != nil {
return pkgerrors.Wrap(err, "Error getting Instance")
if len(hookClient.getHookByEvent(inst.Hooks, release.HookPostDelete)) != 0 {
go func() {
inst.HookProgress = ""
- if err := v.runPostDelete(k8sClient, hookClient, &inst, 0, true); err != nil {
+ if err := v.runPostDelete(ctx, k8sClient, hookClient, &inst, 0, true); err != nil {
log.Print(err.Error())
}
}()
// Continue the instantiation
func (v *InstanceClient) RecoverCreateOrDelete(ctx context.Context, id string) error {
+ ctx, span := tracer.Start(ctx, "InstanceClient.RecoverCreateOrDelete")
+ defer span.End()
instance, err := v.GetFull(ctx, id)
if err != nil {
return pkgerrors.Wrap(err, "Error getting instance "+id+", skip this instance. Error detail")
log.Printf(" Resolving template for release %s", instance.Request.ReleaseName)
_, _, hookList, _, _ := rb.NewProfileClient().Resolve(instance.Request.RBName, instance.Request.RBVersion, instance.Request.ProfileName, overrideValues, instance.Request.ReleaseName)
instance.Hooks = hookList
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, instance)
if err != nil {
return pkgerrors.Wrap(err, "Update Instance DB Entry")
}
} else {
instance.Status = "DONE"
}
- err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, instance)
if err != nil {
log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
}
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(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err = db.DBconn.Update(ctx, v.storeName, key, v.tagInst, instance)
if err != nil {
log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
}
//will not delete the instance in Db to avoid error when SO call delete again and there is not instance in DB
//the instance in DB will be deleted when SO call delete again.
instance.HookProgress = ""
- if err := v.runPostDelete(k8sClient, hookClient, &instance, 0, false); err != nil {
+ if err := v.runPostDelete(ctx, k8sClient, hookClient, &instance, 0, false); err != nil {
log.Print(err.Error())
}
}()
//Plugin quits during post-delete hooks -> continue
go func() {
log.Printf(" The plugin quits during post-delete hook of this instance, continue post-delete hook")
- if err := v.runPostDelete(k8sClient, hookClient, &instance, completedHooks, true); err != nil {
+ if err := v.runPostDelete(ctx, k8sClient, hookClient, &instance, completedHooks, true); err != nil {
log.Print(err.Error())
}
}()
return nil
}
-func (v *InstanceClient) runPostDelete(k8sClient KubernetesClient, hookClient *HookClient, instance *InstanceDbData, startIndex int, clearDb bool) error {
+func (v *InstanceClient) runPostDelete(ctx context.Context, k8sClient KubernetesClient, hookClient *HookClient, instance *InstanceDbData, startIndex int, clearDb bool) error {
+ ctx, span := tracer.Start(ctx, "InstanceClient.runPostDelete")
+ defer span.End()
key := InstanceKey{
ID: instance.ID,
}
instance.Status = "POST-DELETE"
- err := db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err := db.DBconn.Update(ctx, v.storeName, key, v.tagInst, instance)
if err != nil {
log.Printf("Update Instance DB Entry for release %s has error.", instance.ReleaseName)
}
//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(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err2 := db.DBconn.Update(ctx, 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")
if err != nil {
log.Print(err.Error())
}
- err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
+ err = db.DBconn.Delete(ctx, 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(context.TODO(), v.storeName, key, v.tagInst, instance)
+ err := db.DBconn.Update(ctx, 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")
GVK: h.KRT.GVK,
Name: h.Hook.Name,
}
- if _, err := k8sClient.GetResourceStatus(context.TODO(), res, hookClient.kubeNameSpace); err == nil {
+ if _, err := k8sClient.GetResourceStatus(ctx, res, hookClient.kubeNameSpace); err == nil {
remainHookRss = append(remainHookRss, res)
log.Printf(" Rss %s will be deleted.", res.Name)
}
}
if len(remainHookRss) > 0 {
- err = k8sClient.deleteResources(context.TODO(), remainHookRss, hookClient.kubeNameSpace)
+ err = k8sClient.deleteResources(ctx, remainHookRss, hookClient.kubeNameSpace)
if err != nil {
log.Printf("Error cleaning Hook Rss, please do it manually if needed. Error: %s", err.Error())
}