Feat: check addon dependencies when enable (#2741)

This commit is contained in:
qiaozp
2021-11-22 17:12:55 +08:00
committed by GitHub
parent 5b7b7138e2
commit 58293dcf20
3 changed files with 29 additions and 8 deletions
+22 -8
View File
@@ -13,17 +13,9 @@ import (
v1 "k8s.io/api/core/v1"
"sigs.k8s.io/yaml"
"cuelang.org/go/cue"
cueyaml "cuelang.org/go/encoding/yaml"
"github.com/google/go-github/v32/github"
"github.com/pkg/errors"
"golang.org/x/oauth2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
k8syaml "k8s.io/apimachinery/pkg/runtime/serializer/yaml"
common2 "github.com/oam-dev/kubevela/apis/core.oam.dev/common"
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
"github.com/oam-dev/kubevela/apis/types"
@@ -34,6 +26,13 @@ import (
"github.com/oam-dev/kubevela/pkg/oam/util"
"github.com/oam-dev/kubevela/pkg/utils"
"github.com/oam-dev/kubevela/pkg/utils/common"
"github.com/pkg/errors"
"golang.org/x/oauth2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
k8syaml "k8s.io/apimachinery/pkg/runtime/serializer/yaml"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/yaml"
)
const (
@@ -635,3 +634,18 @@ func RenderArgsSecret(addon *types.Addon, args map[string]string) *v1.Secret {
func Convert2SecName(name string) string {
return addonSecPrefix + name
}
// CheckDependencies checks if addon's dependent addons is enabled
func CheckDependencies(ctx context.Context, clt client.Client, addon *types.Addon) bool {
var app v1beta1.Application
for _, dep := range addon.Dependencies {
err := clt.Get(ctx, client.ObjectKey{
Namespace: types.DefaultKubeVelaNS,
Name: Convert2AppName(dep.Name),
}, &app)
if err != nil {
return false
}
}
return true
}
+4
View File
@@ -337,6 +337,10 @@ func (u *addonUsecaseImpl) EnableAddon(ctx context.Context, name string, args ap
continue
}
if !pkgaddon.CheckDependencies(ctx, u.kubeClient, addon) {
return bcode.ErrAddonDependencyNotSatisfy
}
app, defs, err := pkgaddon.RenderApplication(addon, args.Args)
if err != nil {
return bcode.ErrAddonRender
+3
View File
@@ -58,6 +58,9 @@ var (
// ErrAddonSecretGet means fail to get addon argument secret
ErrAddonSecretGet = NewBcode(500, 50016, "fail to get addon argument secret")
// ErrAddonDependencyNotSatisfy means addon's dependencies is not enabled
ErrAddonDependencyNotSatisfy = NewBcode(500, 50017, "addon's dependencies is not enabled")
)
// isGithubRateLimit check if error is github rate limit