mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-18 20:17:04 +00:00
Feat: check addon dependencies when enable (#2741)
This commit is contained in:
+22
-8
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user