Skip to content

Commit b780f8e

Browse files
committed
fix: use system client to get config
Signed-off-by: Abirdcfly <[email protected]>
1 parent 5525fc8 commit b780f8e

File tree

29 files changed

+138
-65
lines changed

29 files changed

+138
-65
lines changed

Dockerfile

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ COPY go.sum go.sum
99
# cache deps before building and copying source so that we don't need to re-download as much
1010
# and so that source changes don't invalidate our downloaded layer
1111
RUN go env -w GOPROXY=${GOPROXY}
12-
RUN go mod download
12+
RUN go mod download -x
1313

1414
# Copy the go source
1515
COPY main.go main.go
@@ -19,8 +19,8 @@ COPY pkg/ pkg/
1919
COPY apiserver/ apiserver/
2020

2121
# Build
22-
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go
23-
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o apiserver-bin apiserver/main.go
22+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -a -o manager main.go
23+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o apiserver-bin apiserver/main.go
2424

2525
# Use alpine as minimal base image to package the manager binary
2626
FROM alpine:3.19.1

apiserver/pkg/application/application.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ func UploadIcon(ctx context.Context, client client.Client, icon, appName, namesp
987987
return "", err
988988
}
989989

990-
system, err := config.GetSystemDatasource(ctx, client)
990+
system, err := config.GetSystemDatasource(ctx)
991991
if err != nil {
992992
return "", err
993993
}

apiserver/pkg/chat/chat_docs.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func (cs *ChatServer) BuildConversationKnowledgeBase(ctx context.Context, req Co
206206
return err
207207
}
208208
// systemDatasource which stores the document
209-
systemDatasource, err := config.GetSystemDatasource(ctx, cs.cli)
209+
systemDatasource, err := config.GetSystemDatasource(ctx)
210210
if err != nil {
211211
return err
212212
}

apiserver/pkg/chat/chat_server.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,21 @@ type ChatServer struct {
5656
cli runtimeclient.Client
5757
storage storage.Storage
5858
once sync.Once
59+
isGpts bool
5960
}
6061

61-
func NewChatServer(cli runtimeclient.Client) *ChatServer {
62+
func NewChatServer(cli runtimeclient.Client, isGpts bool) *ChatServer {
6263
return &ChatServer{
63-
cli: cli,
64+
cli: cli,
65+
isGpts: isGpts,
6466
}
6567
}
6668

6769
func (cs *ChatServer) Storage() storage.Storage {
6870
if cs.storage == nil {
6971
cs.once.Do(func() {
7072
ctx := context.TODO()
71-
ds, err := pkgconfig.GetRelationalDatasource(ctx, cs.cli)
73+
ds, err := pkgconfig.GetRelationalDatasource(ctx)
7274
if err != nil || ds == nil {
7375
if err != nil {
7476
klog.Infof("get relational datasource failed: %s, use memory storage for chat", err.Error())
@@ -183,7 +185,7 @@ func (cs *ChatServer) AppRun(ctx context.Context, req ChatReqBody, respStream ch
183185

184186
func (cs *ChatServer) ListConversations(ctx context.Context, req APPMetadata) ([]storage.Conversation, error) {
185187
currentUser, _ := ctx.Value(auth.UserNameContextKey).(string)
186-
return cs.Storage().ListConversations(storage.WithAppNamespace(req.AppNamespace), storage.WithAppName(req.APPName), storage.WithUser(currentUser), storage.WithUser(currentUser))
188+
return cs.Storage().ListConversations(storage.WithAppNamespace(req.AppNamespace), storage.WithAppName(req.APPName), storage.WithUser(currentUser))
187189
}
188190

189191
func (cs *ChatServer) DeleteConversation(ctx context.Context, conversationID string) error {
@@ -390,7 +392,13 @@ The question you asked is:`
390392

391393
func (cs *ChatServer) GetApp(ctx context.Context, appName, appNamespace string) (*v1alpha1.Application, runtimeclient.Client, error) {
392394
token := auth.ForOIDCToken(ctx)
393-
c, err := client.GetClient(token)
395+
var c runtimeclient.Client
396+
var err error
397+
if !cs.isGpts {
398+
c, err = client.GetClient(token)
399+
} else {
400+
c = cs.cli
401+
}
394402
if err != nil {
395403
return nil, nil, fmt.Errorf("failed to get a client: %w", err)
396404
}

apiserver/pkg/common/common.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ var (
6262
)
6363

6464
func SystemDatasourceOSS(ctx context.Context, mgrClient client.Client) (*datasource.OSS, error) {
65-
systemDatasource, err := config.GetSystemDatasource(ctx, mgrClient)
65+
systemDatasource, err := config.GetSystemDatasource(ctx)
6666
if err != nil {
6767
return nil, err
6868
}
@@ -77,7 +77,7 @@ func SystemDatasourceOSS(ctx context.Context, mgrClient client.Client) (*datasou
7777
// Embedder and vectorstore are both required when generating a new embedding.That's why we call it a `EmbeddingSuit`
7878
func SystemEmbeddingSuite(ctx context.Context, cli client.Client) (*v1alpha1.Embedder, *v1alpha1.VectorStore, error) {
7979
// get the built-in system embedder
80-
emd, err := config.GetEmbedder(ctx, cli)
80+
emd, err := config.GetEmbedder(ctx)
8181
if err != nil {
8282
return nil, nil, err
8383
}
@@ -86,7 +86,7 @@ func SystemEmbeddingSuite(ctx context.Context, cli client.Client) (*v1alpha1.Emb
8686
return nil, nil, err
8787
}
8888
// get the built-in system vectorstore
89-
vs, err := config.GetVectorStore(ctx, cli)
89+
vs, err := config.GetVectorStore(ctx)
9090
if err != nil {
9191
return nil, nil, err
9292
}
@@ -100,7 +100,7 @@ func SystemEmbeddingSuite(ctx context.Context, cli client.Client) (*v1alpha1.Emb
100100
// GetAPIServer returns the api server url to access arcadia's worker
101101
// if external is true,then this func will return the external api server
102102
func GetAPIServer(ctx context.Context, cli client.Client, external bool) (string, error) {
103-
gateway, err := config.GetGateway(ctx, cli)
103+
gateway, err := config.GetGateway(ctx)
104104
if err != nil {
105105
return "", err
106106
}

apiserver/pkg/gpt/gpt.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func getHot(app *v1alpha1.Application, cli client.Client) int64 {
118118
if chatStorage == nil {
119119
once.Do(
120120
func() {
121-
chatStorage = chat.NewChatServer(cli).Storage()
121+
chatStorage = chat.NewChatServer(cli, true).Storage()
122122
})
123123
}
124124
if chatStorage == nil {

apiserver/pkg/knowledgebase/knowledgebase.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func knowledgebase2model(ctx context.Context, c client.Client, knowledgebase *v1
179179
func CreateKnowledgeBase(ctx context.Context, c client.Client, input generated.CreateKnowledgeBaseInput) (*generated.KnowledgeBase, error) {
180180
var filegroups []v1alpha1.FileGroup
181181
var vectorstore v1alpha1.TypedObjectReference
182-
vector, _ := config.GetVectorStore(ctx, c)
182+
vector, _ := config.GetVectorStore(ctx)
183183
displayname, description, embedder := "", "", ""
184184
if input.DisplayName != nil {
185185
displayname = *input.DisplayName

apiserver/pkg/ray/raycluster.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
)
2828

2929
func ListRayClusters(ctx context.Context, c client.Client, input generated.ListCommonInput) (*generated.PaginatedResult, error) {
30-
clusters, err := config.GetRayClusters(ctx, c)
30+
clusters, err := config.GetRayClusters(ctx)
3131
if err != nil {
3232
return nil, err
3333
}

apiserver/service/chat.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ type ChatService struct {
5151
server *chat.ChatServer
5252
}
5353

54-
func NewChatService(cli runtimeclient.Client) (*ChatService, error) {
55-
return &ChatService{chat.NewChatServer(cli)}, nil
54+
func NewChatService(cli runtimeclient.Client, isGpts bool) (*ChatService, error) {
55+
return &ChatService{chat.NewChatServer(cli, isGpts)}, nil
5656
}
5757

5858
// @Summary chat with application
@@ -450,7 +450,7 @@ func registerChat(g *gin.RouterGroup, conf config.ServerConfig) {
450450
panic(err)
451451
}
452452

453-
chatService, err := NewChatService(c)
453+
chatService, err := NewChatService(c, false)
454454
if err != nil {
455455
panic(err)
456456
}

apiserver/service/gpts.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func registerGptsChat(g *gin.RouterGroup, conf config.ServerConfig) {
3232
panic(err)
3333
}
3434

35-
chatService, err := NewChatService(c)
35+
chatService, err := NewChatService(c, true)
3636
if err != nil {
3737
panic(err)
3838
}

apiserver/service/router.go

+4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ import (
2525

2626
"github.com/kubeagi/arcadia/apiserver/config"
2727
"github.com/kubeagi/arcadia/apiserver/docs"
28+
"github.com/kubeagi/arcadia/apiserver/pkg/client"
2829
"github.com/kubeagi/arcadia/apiserver/pkg/oidc"
30+
pkgconfig "github.com/kubeagi/arcadia/pkg/config"
2931
)
3032

3133
func Cors() gin.HandlerFunc {
@@ -55,6 +57,8 @@ func NewServerAndRun(conf config.ServerConfig) {
5557
if conf.EnableOIDC {
5658
oidc.InitOIDCArgs(conf.IssuerURL, conf.MasterURL, conf.ClientSecret, conf.ClientID)
5759
}
60+
systemcli, _ := client.GetClient(nil)
61+
pkgconfig.InitSystemClient(systemcli)
5862

5963
bffGroup := r.Group("/bff")
6064

controllers/app-node/retriever/rerank_retriever_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (r *RerankRetrieverReconciler) reconcile(ctx context.Context, log logr.Logg
111111
}
112112
}
113113
if instance.Spec.Model == nil {
114-
model, err := config.GetDefaultRerankModel(ctx, r.Client)
114+
model, err := config.GetDefaultRerankModel(ctx)
115115
if err != nil {
116116
instance.Status.SetConditions(instance.Status.ErrorCondition(fmt.Sprintf("no model provided. please set model in reranker or set system default reranking model in config :%s", err))...)
117117
return instance, ctrl.Result{RequeueAfter: 30 * time.Second}, err

controllers/base/knowledgebase_controller.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,8 @@ func (r *KnowledgeBaseReconciler) reconcileFileGroup(
403403
kb *arcadiav1alpha1.KnowledgeBase,
404404
vectorStore *arcadiav1alpha1.VectorStore,
405405
embedder *arcadiav1alpha1.Embedder,
406-
groupIndex, fileIndex int) (err error) {
406+
groupIndex, fileIndex int,
407+
) (err error) {
407408
defer func() {
408409
if err != nil {
409410
err = fmt.Errorf("failed to reconcile FileGroup: %w", err)
@@ -436,7 +437,7 @@ func (r *KnowledgeBaseReconciler) reconcileFileGroup(
436437
if !versionedDataset.Status.IsReady() {
437438
return errDataSourceNotReady
438439
}
439-
system, err := config.GetSystemDatasource(ctx, r.Client)
440+
system, err := config.GetSystemDatasource(ctx)
440441
if err != nil {
441442
return err
442443
}

controllers/base/model_controller.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ func (r *ModelReconciler) CheckModel(ctx context.Context, logger logr.Logger, in
188188
// otherwise we consider the model file for the trans-core service to be ready.
189189
if instance.Spec.Source == nil && (instance.Spec.HuggingFaceRepo == "" && instance.Spec.ModelScopeRepo == "") {
190190
logger.V(5).Info(fmt.Sprintf("model %s source is empty, check minio status.", instance.Name))
191-
system, err := config.GetSystemDatasource(ctx, r.Client)
191+
system, err := config.GetSystemDatasource(ctx)
192192
if err != nil {
193193
return r.UpdateStatus(ctx, instance, err)
194194
}
@@ -223,7 +223,7 @@ func (r *ModelReconciler) RemoveModel(ctx context.Context, logger logr.Logger, i
223223
var ds datasource.Datasource
224224
var info any
225225

226-
system, err := config.GetSystemDatasource(ctx, r.Client)
226+
system, err := config.GetSystemDatasource(ctx)
227227
if err != nil {
228228
return r.UpdateStatus(ctx, instance, err)
229229
}

controllers/base/namespace_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func (r *NamespaceReconciler) SetupWithManager(mgr ctrl.Manager) error {
140140
}
141141

142142
func (r *NamespaceReconciler) ossClient(ctx context.Context) (*datasource.OSS, error) {
143-
systemDatasource, err := config.GetSystemDatasource(ctx, r.Client)
143+
systemDatasource, err := config.GetSystemDatasource(ctx)
144144
if err != nil {
145145
klog.Errorf("get system datasource error %s", err)
146146
return nil, err

controllers/base/versioneddataset_controller.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ func (r *VersionedDatasetReconciler) preUpdate(ctx context.Context, logger logr.
213213
func (r *VersionedDatasetReconciler) checkStatus(ctx context.Context, logger logr.Logger, instance *v1alpha1.VersionedDataset) (bool, []v1alpha1.FileStatus, error) {
214214
// TODO: Currently, we think there is only one default minio environment,
215215
// so we get the minio client directly through the configuration.
216-
systemDatasource, err := config.GetSystemDatasource(ctx, r.Client)
216+
systemDatasource, err := config.GetSystemDatasource(ctx)
217217
if err != nil {
218218
logger.Error(err, "Failed to get system datasource")
219219
return false, nil, err
@@ -233,7 +233,7 @@ func (r *VersionedDatasetReconciler) checkStatus(ctx context.Context, logger log
233233
}
234234

235235
func (r *VersionedDatasetReconciler) removeBucketFiles(ctx context.Context, logger logr.Logger, instance *v1alpha1.VersionedDataset) error {
236-
systemDatasource, err := config.GetSystemDatasource(ctx, r.Client)
236+
systemDatasource, err := config.GetSystemDatasource(ctx)
237237
if err != nil {
238238
logger.Error(err, "Failed to get system datasource")
239239
return err

controllers/base/worker_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func (r *WorkerReconciler) reconcile(ctx context.Context, logger logr.Logger, wo
202202
return worker, errors.Wrap(err, "model config datasource, but get it failed.")
203203
}
204204
} else {
205-
datasource, err = config.GetSystemDatasource(ctx, r.Client)
205+
datasource, err = config.GetSystemDatasource(ctx)
206206
if err != nil {
207207
return worker, errors.Wrap(err, "Failed to get system datasource")
208208
}

controllers/evaluation/rag_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ func (r *RAGReconciler) WhenJobChanged(job *batchv1.Job) {
468468

469469
func (r *RAGReconciler) RemoveRAGFiles(ctx context.Context, rag *evaluationarcadiav1alpha1.RAG) {
470470
logger := log.FromContext(ctx, "RAG", rag.Name, "Namespace", rag.Namespace, "Action", "DeleteRAGFiles")
471-
systemDatasource, err := config.GetSystemDatasource(ctx, r.Client)
471+
systemDatasource, err := config.GetSystemDatasource(ctx)
472472
if err != nil {
473473
logger.Error(err, "failed to get system datasource")
474474
return

deploy/charts/arcadia/templates/role-templates.yaml

+50
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,54 @@ spec:
186186
- get
187187
- patch
188188
- update
189+
- category: 智能体管理
190+
displayName: Prompt 权限
191+
rules:
192+
- apiGroups:
193+
- prompt.arcadia.kubeagi.k8s.com.cn
194+
resources:
195+
- prompts
196+
verbs:
197+
- create
198+
- delete
199+
- get
200+
- list
201+
- patch
202+
- update
203+
- category: 智能体管理
204+
displayName: Prompt 状态权限
205+
rules:
206+
- apiGroups:
207+
- prompt.arcadia.kubeagi.k8s.com.cn
208+
resources:
209+
- prompts/status
210+
verbs:
211+
- get
212+
- patch
213+
- update
214+
- category: 智能体管理
215+
displayName: 向量数据库权限
216+
rules:
217+
- apiGroups:
218+
- arcadia.kubeagi.k8s.com.cn
219+
resources:
220+
- vectorstores
221+
verbs:
222+
- create
223+
- delete
224+
- get
225+
- list
226+
- patch
227+
- update
228+
- category: 智能体管理
229+
displayName: 向量数据库状态权限
230+
rules:
231+
- apiGroups:
232+
- arcadia.kubeagi.k8s.com.cn
233+
resources:
234+
- vectorstores/status
235+
verbs:
236+
- get
237+
- patch
238+
- update
189239
{{- end }}

main.go

+1
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ func main() {
325325
_ = mgr.AddMetricsExtraHandler("/debug/pprof/trace", http.HandlerFunc(pprof.Trace))
326326
}
327327

328+
config.InitSystemClient(mgr.GetClient())
328329
setupLog.Info("starting manager")
329330
if err := mgr.Start(ctx); err != nil {
330331
setupLog.Error(err, "problem running manager")

pkg/appruntime/documentloader/documentloader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func (dl *DocumentLoader) Run(ctx context.Context, cli client.Client, args map[s
7575
if err := cli.Get(ctx, types.NamespacedName{Namespace: dl.RefNamespace(), Name: dl.Ref.Name}, dl.Instance); err != nil {
7676
return args, fmt.Errorf("can't find the documentloader in cluster: %w", err)
7777
}
78-
system, err := config.GetSystemDatasource(ctx, cli)
78+
system, err := config.GetSystemDatasource(ctx)
7979
if err != nil {
8080
return nil, err
8181
}

pkg/arctl/eval.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ var (
259259

260260
func SysatemDatasource(ctx context.Context, kubeClient client.Client) (*basev1alpha1.Datasource, error) {
261261
once.Do(func() {
262-
systemDatasource, systemError = config.GetSystemDatasource(ctx, kubeClient)
262+
systemDatasource, systemError = config.GetSystemDatasource(ctx)
263263
})
264264
return systemDatasource, systemError
265265
}

0 commit comments

Comments
 (0)