diff --git a/pkg/appinstaller/helm.go b/pkg/appinstaller/helm.go index 17c1c92..b803353 100644 --- a/pkg/appinstaller/helm.go +++ b/pkg/appinstaller/helm.go @@ -425,6 +425,7 @@ func (h *HelmOps) setValues() (values map[string]interface{}, err error) { } gpuType, err := utils.FindGpuTypeFromNodes(h.ctx, kClient) if err != nil { + klog.Errorf("Failed to get gpuType err=%v", err) return values, err } values["gpu"] = gpuType @@ -436,6 +437,11 @@ func (h *HelmOps) setValues() (values map[string]interface{}, err error) { sharedLibPath := os.Getenv("SHARED_LIB_PATH") values["sharedlib"] = sharedLibPath + admin, err := kubesphere.GetAdminUsername(context.TODO(), h.kubeConfig) + if err != nil { + return values, err + } + values["admin"] = admin return values, err } diff --git a/pkg/kubesphere/kubesphere.go b/pkg/kubesphere/kubesphere.go index 1043898..25b07b6 100644 --- a/pkg/kubesphere/kubesphere.go +++ b/pkg/kubesphere/kubesphere.go @@ -162,3 +162,35 @@ func GetUserCPULimit(ctx context.Context, kubeConfig *rest.Config, username stri func GetUserMemoryLimit(ctx context.Context, kubeConfig *rest.Config, username string) (string, error) { return GetUserAnnotation(ctx, kubeConfig, username, userAnnotationMemoryLimitKey) } + +// GetAdminUsername returns admin username, an error if there is any. +func GetAdminUsername(ctx context.Context, kubeConfig *rest.Config) (string, error) { + gvr := schema.GroupVersionResource{ + Group: "iam.kubesphere.io", + Version: "v1alpha2", + Resource: "users", + } + client, err := dynamic.NewForConfig(kubeConfig) + if err != nil { + return "", err + } + data, err := client.Resource(gvr).List(ctx, metav1.ListOptions{}) + if err != nil { + klog.Errorf("Failed to get user list err=%v", err) + return "", err + } + + var admin string + for _, u := range data.Items { + if u.Object == nil { + continue + } + annotations := u.GetAnnotations() + if annotations["bytetrade.io/owner-role"] == "platform-admin" { + admin = u.GetName() + break + } + } + + return admin, nil +}