Skip to content

Commit

Permalink
Use addon info from AppBinding for KubeDB managed databases (#1325)
Browse files Browse the repository at this point in the history
Signed-off-by: Emruz Hossain <emruz@appscode.com>
  • Loading branch information
Emruz Hossain committed Mar 3, 2021
1 parent 99d6e16 commit 23c2532
Show file tree
Hide file tree
Showing 319 changed files with 1,913 additions and 58,677 deletions.
16 changes: 8 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@ require (
k8s.io/client-go v0.18.9
k8s.io/kube-aggregator v0.18.9
k8s.io/kubernetes v1.18.9
kmodules.xyz/client-go v0.0.0-20210213000708-f480974ce46d
kmodules.xyz/client-go v0.0.0-20210220080427-fd7308e30bb4
kmodules.xyz/constants v0.0.0-20200923054614-6b87dbbae4d6
kmodules.xyz/custom-resources v0.0.0-20210216191337-d890c51255a5
kmodules.xyz/objectstore-api v0.0.0-20201105133858-cbb2af88d50a
kmodules.xyz/offshoot-api v0.0.0-20201105074700-8675f5f686f2
kmodules.xyz/openshift v0.0.0-20201105073146-0da509a7d39f
kmodules.xyz/prober v0.0.0-20201105074402-a243b3a27fd8
kmodules.xyz/webhook-runtime v0.0.0-20201105073856-2dc7382b88c6
stash.appscode.dev/apimachinery v0.11.9
kmodules.xyz/custom-resources v0.0.0-20210222235834-b3f8dc56b6a3
kmodules.xyz/objectstore-api v0.0.0-20210220080829-026d708cd259
kmodules.xyz/offshoot-api v0.0.0-20210220080828-fae1f6c66a89
kmodules.xyz/openshift v0.0.0-20210220080857-5f0c2b113f42
kmodules.xyz/prober v0.0.0-20210220081020-e3067cdcc914
kmodules.xyz/webhook-runtime v0.0.0-20210220081624-75da115ae653
stash.appscode.dev/apimachinery v0.11.10-0.20210303055414-96a424812762
)

replace bitbucket.org/ww/goautoneg => gomodules.xyz/goautoneg v0.0.0-20120707110453-a547fc61f48d
Expand Down
96 changes: 35 additions & 61 deletions go.sum

Large diffs are not rendered by default.

22 changes: 16 additions & 6 deletions pkg/controller/backup_session.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"stash.appscode.dev/apimachinery/pkg/docker"
"stash.appscode.dev/apimachinery/pkg/invoker"
"stash.appscode.dev/apimachinery/pkg/restic"
api_util "stash.appscode.dev/apimachinery/pkg/util"
"stash.appscode.dev/stash/pkg/eventer"
stash_rbac "stash.appscode.dev/stash/pkg/rbac"
"stash.appscode.dev/stash/pkg/resolve"
Expand All @@ -56,6 +57,7 @@ import (
core_util "kmodules.xyz/client-go/core/v1"
"kmodules.xyz/client-go/meta"
"kmodules.xyz/client-go/tools/queue"
appcat "kmodules.xyz/custom-resources/apis/appcatalog/v1alpha1"
"kmodules.xyz/webhook-runtime/admission"
hooks "kmodules.xyz/webhook-runtime/admission/v1beta1"
webhook "kmodules.xyz/webhook-runtime/admission/v1beta1/generic"
Expand Down Expand Up @@ -330,10 +332,10 @@ func (c *StashController) ensureBackupJob(inv invoker.BackupInvoker, targetInfo
return err
}

// resolve task template
explicitInputs := make(map[string]string)
for _, param := range targetInfo.Task.Params {
explicitInputs[param.Name] = param.Value
// read the addon information
addon, err := api_util.ExtractAddonInfo(c.appCatalogClient, targetInfo.Task, targetInfo.Target.Ref, inv.ObjectMeta.Namespace)
if err != nil {
return err
}

repoInputs, err := c.inputsForRepository(repository)
Expand All @@ -359,8 +361,8 @@ func (c *StashController) ensureBackupJob(inv invoker.BackupInvoker, targetInfo

taskResolver := resolve.TaskResolver{
StashClient: c.stashClient,
TaskName: targetInfo.Task.Name,
Inputs: core_util.UpsertMap(explicitInputs, implicitInputs), // TODO: reverse priority ???
TaskName: addon.BackupTask.Name,
Inputs: core_util.UpsertMap(explicitInputs(addon.BackupTask.Params), implicitInputs), // TODO: reverse priority ???
RuntimeSettings: targetInfo.RuntimeSettings,
TempDir: targetInfo.TempDir,
}
Expand Down Expand Up @@ -973,3 +975,11 @@ func (c *StashController) getRunningBackupSessionForInvoker(inv invoker.BackupIn
}
return nil, nil
}

func explicitInputs(params []appcat.Param) map[string]string {
inputs := make(map[string]string)
for _, param := range params {
inputs[param.Name] = param.Value
}
return inputs
}
25 changes: 14 additions & 11 deletions pkg/controller/restore_session.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import (
"stash.appscode.dev/apimachinery/pkg/docker"
"stash.appscode.dev/apimachinery/pkg/invoker"
"stash.appscode.dev/apimachinery/pkg/restic"
api_util "stash.appscode.dev/apimachinery/pkg/util"
"stash.appscode.dev/stash/pkg/eventer"
stash_rbac "stash.appscode.dev/stash/pkg/rbac"
"stash.appscode.dev/stash/pkg/resolve"
Expand All @@ -52,6 +53,7 @@ import (
core_util "kmodules.xyz/client-go/core/v1"
"kmodules.xyz/client-go/meta"
"kmodules.xyz/client-go/tools/queue"
appcat "kmodules.xyz/custom-resources/apis/appcatalog/v1alpha1"
ofst "kmodules.xyz/offshoot-api/api/v1"
"kmodules.xyz/webhook-runtime/admission"
hooks "kmodules.xyz/webhook-runtime/admission/v1beta1"
Expand Down Expand Up @@ -512,15 +514,21 @@ func (c *StashController) ensureRestoreJob(inv invoker.RestoreInvoker, index int
return err
}

// read the addon information
addon, err := api_util.ExtractAddonInfo(c.appCatalogClient, targetInfo.Task, targetInfo.Target.Ref, inv.ObjectMeta.Namespace)
if err != nil {
return err
}

// Now, there could be two restore scenario for restoring through job.
// 1. Restore process follows Function-Task model. In this case, we have to resolve respective Functions and Task to get desired job definition.
// 2. Restore process does not follow Function-Task model. In this case, we have to generate simple volume restorer job definition.

var jobTemplate *core.PodTemplateSpec

if targetInfo.Task.Name != "" {
if addon.RestoreTask.Name != "" {
// Restore process follows Function-Task model. So, resolve Function and Task to get desired job definition.
jobTemplate, err = c.resolveRestoreTask(inv, repository, index)
jobTemplate, err = c.resolveRestoreTask(inv, repository, index, addon)
if err != nil {
return err
}
Expand Down Expand Up @@ -584,8 +592,8 @@ func (c *StashController) ensureRestoreJob(inv invoker.RestoreInvoker, index int
var restoreJobTemplate *core.PodTemplateSpec

// if restore process follows Function-Task model, then resolve the Functions and Task for this host
if targetInfo.Task.Name != "" {
restoreJobTemplate, err = c.resolveRestoreTask(inv, repository, index)
if addon.RestoreTask.Name != "" {
restoreJobTemplate, err = c.resolveRestoreTask(inv, repository, index, addon)

if err != nil {
return err
Expand Down Expand Up @@ -645,15 +653,10 @@ func (c *StashController) createRestoreJob(jobTemplate *core.PodTemplateSpec, me
}

// resolveRestoreTask resolves Functions and Tasks then returns a job definition to restore the target.
func (c *StashController) resolveRestoreTask(inv invoker.RestoreInvoker, repository *api_v1alpha1.Repository, index int) (*core.PodTemplateSpec, error) {
func (c *StashController) resolveRestoreTask(inv invoker.RestoreInvoker, repository *api_v1alpha1.Repository, index int, addon *appcat.StashTaskSpec) (*core.PodTemplateSpec, error) {

targetInfo := inv.TargetsInfo[index]
// resolve task template
explicitInputs := make(map[string]string)
for _, param := range targetInfo.Task.Params {
explicitInputs[param.Name] = param.Value
}

repoInputs, err := c.inputsForRepository(repository)
if err != nil {
return nil, fmt.Errorf("cannot resolve implicit inputs for Repository %s/%s, reason: %s", repository.Namespace, repository.Name, err)
Expand All @@ -674,7 +677,7 @@ func (c *StashController) resolveRestoreTask(inv invoker.RestoreInvoker, reposit
taskResolver := resolve.TaskResolver{
StashClient: c.stashClient,
TaskName: targetInfo.Task.Name,
Inputs: core_util.UpsertMap(explicitInputs, implicitInputs),
Inputs: core_util.UpsertMap(explicitInputs(addon.RestoreTask.Params), implicitInputs),
RuntimeSettings: targetInfo.RuntimeSettings,
TempDir: targetInfo.TempDir,
}
Expand Down
5 changes: 0 additions & 5 deletions vendor/github.com/BurntSushi/toml/.gitignore

This file was deleted.

15 changes: 0 additions & 15 deletions vendor/github.com/BurntSushi/toml/.travis.yml

This file was deleted.

3 changes: 0 additions & 3 deletions vendor/github.com/BurntSushi/toml/COMPATIBLE

This file was deleted.

21 changes: 0 additions & 21 deletions vendor/github.com/BurntSushi/toml/COPYING

This file was deleted.

19 changes: 0 additions & 19 deletions vendor/github.com/BurntSushi/toml/Makefile

This file was deleted.

Loading

0 comments on commit 23c2532

Please sign in to comment.