|
@@ -60,6 +60,8 @@ func (r *LiteLLMReconciler) ReconcileComponent(ctx context.Context, tmpl *v1alph
|
|
|
deps := make([]client.Object, 0)
|
|
deps := make([]client.Object, 0)
|
|
|
emList := make([]*v1alpha1.ExternalModel, 0)
|
|
emList := make([]*v1alpha1.ExternalModel, 0)
|
|
|
mmList := make([]*v1alpha1.ManagedModel, 0)
|
|
mmList := make([]*v1alpha1.ManagedModel, 0)
|
|
|
|
|
+ etList := make([]*v1alpha1.ExternalTool, 0)
|
|
|
|
|
+ mtList := make([]*v1alpha1.ManagedTool, 0)
|
|
|
for _, dep := range r.component.Spec.Dependencies {
|
|
for _, dep := range r.component.Spec.Dependencies {
|
|
|
switch dep.Kind {
|
|
switch dep.Kind {
|
|
|
case "ExternalModel":
|
|
case "ExternalModel":
|
|
@@ -76,9 +78,23 @@ func (r *LiteLLMReconciler) ReconcileComponent(ctx context.Context, tmpl *v1alph
|
|
|
}
|
|
}
|
|
|
mmList = append(mmList, mm)
|
|
mmList = append(mmList, mm)
|
|
|
deps = append(deps, mm)
|
|
deps = append(deps, mm)
|
|
|
|
|
+ case "ExternalTool":
|
|
|
|
|
+ et := &v1alpha1.ExternalTool{}
|
|
|
|
|
+ if err := r.client.Get(ctx, client.ObjectKey{Name: dep.Name, Namespace: dep.Namespace}, et); err != nil {
|
|
|
|
|
+ return nil, fmt.Errorf("Failed to get ExternalTool %s/%s: %w", dep.Namespace, dep.Name, err)
|
|
|
|
|
+ }
|
|
|
|
|
+ etList = append(etList, et)
|
|
|
|
|
+ deps = append(deps, et)
|
|
|
|
|
+ case "ManagedTool":
|
|
|
|
|
+ mt := &v1alpha1.ManagedTool{}
|
|
|
|
|
+ if err := r.client.Get(ctx, client.ObjectKey{Name: dep.Name, Namespace: dep.Namespace}, mt); err != nil {
|
|
|
|
|
+ return nil, fmt.Errorf("Failed to get ManagedTool %s/%s: %w", dep.Namespace, dep.Name, err)
|
|
|
|
|
+ }
|
|
|
|
|
+ mtList = append(mtList, mt)
|
|
|
|
|
+ deps = append(deps, mt)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- configHash, err := r.reconcileConfigMap(ctx, emList, mmList)
|
|
|
|
|
|
|
+ configHash, err := r.reconcileConfigMap(ctx, emList, mmList, etList, mtList)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, fmt.Errorf("Failed to reconcile LiteLLM config: %w", err)
|
|
return nil, fmt.Errorf("Failed to reconcile LiteLLM config: %w", err)
|
|
|
}
|
|
}
|
|
@@ -91,6 +107,22 @@ func (r *LiteLLMReconciler) ReconcileComponent(ctx context.Context, tmpl *v1alph
|
|
|
authSpecs["ExternalModel"][em.Name] = em.Spec.Auth
|
|
authSpecs["ExternalModel"][em.Name] = em.Spec.Auth
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ for _, et := range etList {
|
|
|
|
|
+ if et.Spec.Auth != nil {
|
|
|
|
|
+ if _, ok := authSpecs["ExternalTool"]; !ok {
|
|
|
|
|
+ authSpecs["ExternalTool"] = make(map[string]*v1alpha1.AuthSpec)
|
|
|
|
|
+ }
|
|
|
|
|
+ authSpecs["ExternalTool"][et.Name] = et.Spec.Auth
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ for _, mt := range mtList {
|
|
|
|
|
+ if mt.Spec.Auth != nil {
|
|
|
|
|
+ if _, ok := authSpecs["ManagedTool"]; !ok {
|
|
|
|
|
+ authSpecs["ManagedTool"] = make(map[string]*v1alpha1.AuthSpec)
|
|
|
|
|
+ }
|
|
|
|
|
+ authSpecs["ManagedTool"][mt.Name] = mt.Spec.Auth
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
injectSecrets(tmpl, authSpecs)
|
|
injectSecrets(tmpl, authSpecs)
|
|
|
if tmpl.Metadata.Annotations == nil {
|
|
if tmpl.Metadata.Annotations == nil {
|
|
|
tmpl.Metadata.Annotations = make(map[string]string)
|
|
tmpl.Metadata.Annotations = make(map[string]string)
|
|
@@ -104,7 +136,7 @@ func (r *LiteLLMReconciler) ReconcileComponent(ctx context.Context, tmpl *v1alph
|
|
|
return deps, nil
|
|
return deps, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (r *LiteLLMReconciler) reconcileConfigMap(ctx context.Context, emList []*v1alpha1.ExternalModel, mmList []*v1alpha1.ManagedModel) (string, error) {
|
|
|
|
|
|
|
+func (r *LiteLLMReconciler) reconcileConfigMap(ctx context.Context, emList []*v1alpha1.ExternalModel, mmList []*v1alpha1.ManagedModel, etList []*v1alpha1.ExternalTool, mtList []*v1alpha1.ManagedTool) (string, error) {
|
|
|
var o11yComp *v1alpha1.Component
|
|
var o11yComp *v1alpha1.Component
|
|
|
if r.stack.Spec.Observability != nil && r.stack.Spec.Observability.Enabled {
|
|
if r.stack.Spec.Observability != nil && r.stack.Spec.Observability.Enabled {
|
|
|
o11yComp = &v1alpha1.Component{}
|
|
o11yComp = &v1alpha1.Component{}
|
|
@@ -118,6 +150,8 @@ func (r *LiteLLMReconciler) reconcileConfigMap(ctx context.Context, emList []*v1
|
|
|
ObservabilityComponent: o11yComp,
|
|
ObservabilityComponent: o11yComp,
|
|
|
ExternalModels: emList,
|
|
ExternalModels: emList,
|
|
|
ManagedModels: mmList,
|
|
ManagedModels: mmList,
|
|
|
|
|
+ ExternalTools: etList,
|
|
|
|
|
+ ManagedTools: mtList,
|
|
|
}
|
|
}
|
|
|
config, err := configBuilder.BuildLiteLLMConfig()
|
|
config, err := configBuilder.BuildLiteLLMConfig()
|
|
|
if err != nil {
|
|
if err != nil {
|