Unverified Commit 26fe79dc authored by julienmancuso's avatar julienmancuso Committed by GitHub
Browse files

feat: rename operator CRDs (#795)

parent a03fd307
...@@ -19,6 +19,7 @@ package controller ...@@ -19,6 +19,7 @@ package controller
import ( import (
"fmt" "fmt"
"strings"
"github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/v1alpha1" "github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/v1alpha1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
...@@ -90,3 +91,7 @@ func getIngressHost(ingressSpec v1alpha1.IngressSpec) string { ...@@ -90,3 +91,7 @@ func getIngressHost(ingressSpec v1alpha1.IngressSpec) string {
} }
return fmt.Sprintf("%s.%s", host, ingressSuffix) return fmt.Sprintf("%s.%s", host, ingressSuffix)
} }
func getK8sName(value string) string {
return strings.ReplaceAll(value, ":", "--")
}
...@@ -160,13 +160,13 @@ func (m *mockEtcdStorage) DeleteKeys(ctx context.Context, prefix string) error { ...@@ -160,13 +160,13 @@ func (m *mockEtcdStorage) DeleteKeys(ctx context.Context, prefix string) error {
return m.deleteKeysFunc(ctx, prefix) return m.deleteKeysFunc(ctx, prefix)
} }
func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) { func TestDynamoComponentDeploymentReconciler_FinalizeResource(t *testing.T) {
type fields struct { type fields struct {
EtcdStorage etcdStorage EtcdStorage etcdStorage
} }
type args struct { type args struct {
ctx context.Context ctx context.Context
dynamoNimDeployment *v1alpha1.DynamoNimDeployment dynamoComponentDeployment *v1alpha1.DynamoComponentDeployment
} }
tests := []struct { tests := []struct {
name string name string
...@@ -188,9 +188,9 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) { ...@@ -188,9 +188,9 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) {
}, },
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
}, },
...@@ -210,9 +210,9 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) { ...@@ -210,9 +210,9 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) {
}, },
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
}, },
...@@ -224,17 +224,17 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) { ...@@ -224,17 +224,17 @@ func TestDynamoNimDeploymentReconciler_FinalizeResource(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
r := &DynamoNimDeploymentReconciler{ r := &DynamoComponentDeploymentReconciler{
EtcdStorage: tt.fields.EtcdStorage, EtcdStorage: tt.fields.EtcdStorage,
} }
if err := r.FinalizeResource(tt.args.ctx, tt.args.dynamoNimDeployment); (err != nil) != tt.wantErr { if err := r.FinalizeResource(tt.args.ctx, tt.args.dynamoComponentDeployment); (err != nil) != tt.wantErr {
t.Errorf("DynamoNimDeploymentReconciler.FinalizeResource() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("DynamoComponentDeploymentReconciler.FinalizeResource() error = %v, wantErr %v", err, tt.wantErr)
} }
}) })
} }
} }
func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) { func TestDynamoComponentDeploymentReconciler_generateIngress(t *testing.T) {
type fields struct { type fields struct {
} }
type args struct { type args struct {
...@@ -255,13 +255,13 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) { ...@@ -255,13 +255,13 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) {
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
opt: generateResourceOption{ opt: generateResourceOption{
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "service1", Name: "service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Ingress: v1alpha1.IngressSpec{ Ingress: v1alpha1.IngressSpec{
...@@ -314,13 +314,13 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) { ...@@ -314,13 +314,13 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) {
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
opt: generateResourceOption{ opt: generateResourceOption{
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "service1", Name: "service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Ingress: v1alpha1.IngressSpec{ Ingress: v1alpha1.IngressSpec{
...@@ -344,10 +344,10 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) { ...@@ -344,10 +344,10 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
g := gomega.NewGomegaWithT(t) g := gomega.NewGomegaWithT(t)
r := &DynamoNimDeploymentReconciler{} r := &DynamoComponentDeploymentReconciler{}
got, got1, err := r.generateIngress(tt.args.ctx, tt.args.opt) got, got1, err := r.generateIngress(tt.args.ctx, tt.args.opt)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
t.Errorf("DynamoNimDeploymentReconciler.generateIngress() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("DynamoComponentDeploymentReconciler.generateIngress() error = %v, wantErr %v", err, tt.wantErr)
return return
} }
g.Expect(got).To(gomega.Equal(tt.want)) g.Expect(got).To(gomega.Equal(tt.want))
...@@ -356,7 +356,7 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) { ...@@ -356,7 +356,7 @@ func TestDynamoNimDeploymentReconciler_generateIngress(t *testing.T) {
} }
} }
func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) { func TestDynamoComponentDeploymentReconciler_generateVirtualService(t *testing.T) {
type fields struct { type fields struct {
} }
type args struct { type args struct {
...@@ -377,13 +377,13 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) { ...@@ -377,13 +377,13 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) {
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
opt: generateResourceOption{ opt: generateResourceOption{
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "service1", Name: "service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Ingress: v1alpha1.IngressSpec{ Ingress: v1alpha1.IngressSpec{
...@@ -409,13 +409,13 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) { ...@@ -409,13 +409,13 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) {
args: args{ args: args{
ctx: context.Background(), ctx: context.Background(),
opt: generateResourceOption{ opt: generateResourceOption{
dynamoNimDeployment: &v1alpha1.DynamoNimDeployment{ dynamoComponentDeployment: &v1alpha1.DynamoComponentDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "service1", Name: "service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Ingress: v1alpha1.IngressSpec{ Ingress: v1alpha1.IngressSpec{
...@@ -467,10 +467,10 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) { ...@@ -467,10 +467,10 @@ func TestDynamoNimDeploymentReconciler_generateVirtualService(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
g := gomega.NewGomegaWithT(t) g := gomega.NewGomegaWithT(t)
r := &DynamoNimDeploymentReconciler{} r := &DynamoComponentDeploymentReconciler{}
got, got1, err := r.generateVirtualService(tt.args.ctx, tt.args.opt) got, got1, err := r.generateVirtualService(tt.args.ctx, tt.args.opt)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
t.Errorf("DynamoNimDeploymentReconciler.generateVirtualService() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("DynamoComponentDeploymentReconciler.generateVirtualService() error = %v, wantErr %v", err, tt.wantErr)
return return
} }
g.Expect(got).To(gomega.Equal(tt.want)) g.Expect(got).To(gomega.Equal(tt.want))
......
...@@ -50,8 +50,8 @@ type etcdStorage interface { ...@@ -50,8 +50,8 @@ type etcdStorage interface {
DeleteKeys(ctx context.Context, prefix string) error DeleteKeys(ctx context.Context, prefix string) error
} }
// DynamoDeploymentReconciler reconciles a DynamoDeployment object // DynamoGraphDeploymentReconciler reconciles a DynamoGraphDeployment object
type DynamoDeploymentReconciler struct { type DynamoGraphDeploymentReconciler struct {
client.Client client.Client
Scheme *runtime.Scheme Scheme *runtime.Scheme
Config commonController.Config Config commonController.Config
...@@ -62,20 +62,20 @@ type DynamoDeploymentReconciler struct { ...@@ -62,20 +62,20 @@ type DynamoDeploymentReconciler struct {
IngressHostSuffix string IngressHostSuffix string
} }
// +kubebuilder:rbac:groups=nvidia.com,resources=dynamodeployments,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=nvidia.com,resources=dynamographdeployments,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=nvidia.com,resources=dynamodeployments/status,verbs=get;update;patch // +kubebuilder:rbac:groups=nvidia.com,resources=dynamographdeployments/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=nvidia.com,resources=dynamodeployments/finalizers,verbs=update // +kubebuilder:rbac:groups=nvidia.com,resources=dynamographdeployments/finalizers,verbs=update
// Reconcile is part of the main kubernetes reconciliation loop which aims to // Reconcile is part of the main kubernetes reconciliation loop which aims to
// move the current state of the cluster closer to the desired state. // move the current state of the cluster closer to the desired state.
// TODO(user): Modify the Reconcile function to compare the state specified by // TODO(user): Modify the Reconcile function to compare the state specified by
// the DynamoDeployment object against the actual cluster state, and then // the DynamoGraphDeployment object against the actual cluster state, and then
// perform operations to make the cluster state reflect the state specified by // perform operations to make the cluster state reflect the state specified by
// the user. // the user.
// //
// For more details, check Reconcile and its Result here: // For more details, check Reconcile and its Result here:
// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.1/pkg/reconcile // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.1/pkg/reconcile
func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { func (r *DynamoGraphDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
logger := log.FromContext(ctx) logger := log.FromContext(ctx)
var err error var err error
...@@ -83,7 +83,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req ...@@ -83,7 +83,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
message := "" message := ""
readyStatus := metav1.ConditionFalse readyStatus := metav1.ConditionFalse
// retrieve the CRD // retrieve the CRD
dynamoDeployment := &nvidiacomv1alpha1.DynamoDeployment{} dynamoDeployment := &nvidiacomv1alpha1.DynamoGraphDeployment{}
if err = r.Get(ctx, req.NamespacedName, dynamoDeployment); err != nil { if err = r.Get(ctx, req.NamespacedName, dynamoDeployment); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err) return ctrl.Result{}, client.IgnoreNotFound(err)
} }
...@@ -138,7 +138,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req ...@@ -138,7 +138,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
// merge the dynamoComponentsDeployments with the dynamoComponentsDeployments from the CRD // merge the dynamoComponentsDeployments with the dynamoComponentsDeployments from the CRD
for serviceName, deployment := range dynamoComponentsDeployments { for serviceName, deployment := range dynamoComponentsDeployments {
if _, ok := dynamoDeployment.Spec.Services[serviceName]; ok { if _, ok := dynamoDeployment.Spec.Services[serviceName]; ok {
err := mergo.Merge(&deployment.Spec.DynamoNimDeploymentSharedSpec, dynamoDeployment.Spec.Services[serviceName].DynamoNimDeploymentSharedSpec, mergo.WithOverride) err := mergo.Merge(&deployment.Spec.DynamoComponentDeploymentSharedSpec, dynamoDeployment.Spec.Services[serviceName].DynamoComponentDeploymentSharedSpec, mergo.WithOverride)
if err != nil { if err != nil {
reason = "failed_to_merge_the_DynamoComponentsDeployments" reason = "failed_to_merge_the_DynamoComponentsDeployments"
return ctrl.Result{}, err return ctrl.Result{}, err
...@@ -156,37 +156,38 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req ...@@ -156,37 +156,38 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
} }
} }
// reconcile the dynamoNimRequest // reconcile the dynamoComponentRequest
dynamoNimRequest := &nvidiacomv1alpha1.DynamoNimRequest{ // for now we use the same component for all the services and we differentiate them by the service name when launching the component
dynamoComponentRequest := &nvidiacomv1alpha1.DynamoComponentRequest{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: strings.ReplaceAll(dynamoDeployment.Spec.DynamoNim, ":", "--"), Name: strings.ReplaceAll(dynamoDeployment.Spec.DynamoGraph, ":", "--"),
Namespace: dynamoDeployment.Namespace, Namespace: dynamoDeployment.Namespace,
}, },
Spec: nvidiacomv1alpha1.DynamoNimRequestSpec{ Spec: nvidiacomv1alpha1.DynamoComponentRequestSpec{
BentoTag: dynamoDeployment.Spec.DynamoNim, DynamoComponent: dynamoDeployment.Spec.DynamoGraph,
}, },
} }
if err := ctrl.SetControllerReference(dynamoDeployment, dynamoNimRequest, r.Scheme); err != nil { if err := ctrl.SetControllerReference(dynamoDeployment, dynamoComponentRequest, r.Scheme); err != nil {
reason = "failed_to_set_the_controller_reference_for_the_DynamoNimRequest" reason = "failed_to_set_the_controller_reference_for_the_DynamoComponentRequest"
return ctrl.Result{}, err return ctrl.Result{}, err
} }
_, err = commonController.SyncResource(ctx, r.Client, dynamoNimRequest, types.NamespacedName{Name: dynamoNimRequest.Name, Namespace: dynamoNimRequest.Namespace}, false) _, err = commonController.SyncResource(ctx, r.Client, dynamoComponentRequest, types.NamespacedName{Name: dynamoComponentRequest.Name, Namespace: dynamoComponentRequest.Namespace}, false)
if err != nil { if err != nil {
reason = "failed_to_sync_the_DynamoNimRequest" reason = "failed_to_sync_the_DynamoComponentRequest"
return ctrl.Result{}, err return ctrl.Result{}, err
} }
notReadyDeployments := []string{} notReadyDeployments := []string{}
// reconcile the dynamoComponentsDeployments // reconcile the dynamoComponentsDeployments
for serviceName, dynamoComponentDeployment := range dynamoComponentsDeployments { for serviceName, dynamoComponentDeployment := range dynamoComponentsDeployments {
logger.Info("Reconciling the DynamoNimDeployment", "serviceName", serviceName, "dynamoComponentDeployment", dynamoComponentDeployment) logger.Info("Reconciling the DynamoComponentDeployment", "serviceName", serviceName, "dynamoComponentDeployment", dynamoComponentDeployment)
if err := ctrl.SetControllerReference(dynamoDeployment, dynamoComponentDeployment, r.Scheme); err != nil { if err := ctrl.SetControllerReference(dynamoDeployment, dynamoComponentDeployment, r.Scheme); err != nil {
reason = "failed_to_set_the_controller_reference_for_the_DynamoComponentDeployment" reason = "failed_to_set_the_controller_reference_for_the_DynamoComponentDeployment"
return ctrl.Result{}, err return ctrl.Result{}, err
} }
dynamoComponentDeployment, err = commonController.SyncResource(ctx, r.Client, dynamoComponentDeployment, types.NamespacedName{Name: dynamoComponentDeployment.Name, Namespace: dynamoComponentDeployment.Namespace}, false) dynamoComponentDeployment, err = commonController.SyncResource(ctx, r.Client, dynamoComponentDeployment, types.NamespacedName{Name: dynamoComponentDeployment.Name, Namespace: dynamoComponentDeployment.Namespace}, false)
if err != nil { if err != nil {
reason = "failed_to_sync_the_DynamoNimDeployment" reason = "failed_to_sync_the_DynamoComponentDeployment"
return ctrl.Result{}, err return ctrl.Result{}, err
} }
if !dynamoComponentDeployment.Status.IsReady() { if !dynamoComponentDeployment.Status.IsReady() {
...@@ -208,7 +209,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req ...@@ -208,7 +209,7 @@ func (r *DynamoDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Req
} }
func (r *DynamoDeploymentReconciler) generateDefaultIngressSpec(dynamoDeployment *nvidiacomv1alpha1.DynamoDeployment) *nvidiacomv1alpha1.IngressSpec { func (r *DynamoGraphDeploymentReconciler) generateDefaultIngressSpec(dynamoDeployment *nvidiacomv1alpha1.DynamoGraphDeployment) *nvidiacomv1alpha1.IngressSpec {
res := &nvidiacomv1alpha1.IngressSpec{ res := &nvidiacomv1alpha1.IngressSpec{
Enabled: r.VirtualServiceGateway != "" || r.IngressControllerClassName != "", Enabled: r.VirtualServiceGateway != "" || r.IngressControllerClassName != "",
Host: dynamoDeployment.Name, Host: dynamoDeployment.Name,
...@@ -231,7 +232,7 @@ func (r *DynamoDeploymentReconciler) generateDefaultIngressSpec(dynamoDeployment ...@@ -231,7 +232,7 @@ func (r *DynamoDeploymentReconciler) generateDefaultIngressSpec(dynamoDeployment
return res return res
} }
func (r *DynamoDeploymentReconciler) isEndpointSecured() bool { func (r *DynamoGraphDeploymentReconciler) isEndpointSecured() bool {
return r.IngressControllerTLSSecret != "" return r.IngressControllerTLSSecret != ""
} }
...@@ -256,19 +257,19 @@ func mergeEnvs(common, specific []corev1.EnvVar) []corev1.EnvVar { ...@@ -256,19 +257,19 @@ func mergeEnvs(common, specific []corev1.EnvVar) []corev1.EnvVar {
return merged return merged
} }
func (r *DynamoDeploymentReconciler) FinalizeResource(ctx context.Context, dynamoDeployment *nvidiacomv1alpha1.DynamoDeployment) error { func (r *DynamoGraphDeploymentReconciler) FinalizeResource(ctx context.Context, dynamoDeployment *nvidiacomv1alpha1.DynamoGraphDeployment) error {
// for now doing nothing // for now doing nothing
return nil return nil
} }
// SetupWithManager sets up the controller with the Manager. // SetupWithManager sets up the controller with the Manager.
func (r *DynamoDeploymentReconciler) SetupWithManager(mgr ctrl.Manager) error { func (r *DynamoGraphDeploymentReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr). return ctrl.NewControllerManagedBy(mgr).
For(&nvidiacomv1alpha1.DynamoDeployment{}, builder.WithPredicates( For(&nvidiacomv1alpha1.DynamoGraphDeployment{}, builder.WithPredicates(
predicate.GenerationChangedPredicate{}, predicate.GenerationChangedPredicate{},
)). )).
Named("dynamodeployment"). Named("dynamographdeployment").
Owns(&nvidiacomv1alpha1.DynamoNimDeployment{}, builder.WithPredicates(predicate.Funcs{ Owns(&nvidiacomv1alpha1.DynamoComponentDeployment{}, builder.WithPredicates(predicate.Funcs{
// ignore creation cause we don't want to be called again after we create the deployment // ignore creation cause we don't want to be called again after we create the deployment
CreateFunc: func(ce event.CreateEvent) bool { return false }, CreateFunc: func(ce event.CreateEvent) bool { return false },
DeleteFunc: func(de event.DeleteEvent) bool { return true }, DeleteFunc: func(de event.DeleteEvent) bool { return true },
......
...@@ -84,14 +84,14 @@ func (s ServiceConfig) GetNamespace() *string { ...@@ -84,14 +84,14 @@ func (s ServiceConfig) GetNamespace() *string {
return &s.Config.Dynamo.Namespace return &s.Config.Dynamo.Namespace
} }
func GetDefaultDynamoNamespace(ctx context.Context, dynamoDeployment *v1alpha1.DynamoDeployment) string { func GetDefaultDynamoNamespace(ctx context.Context, dynamoDeployment *v1alpha1.DynamoGraphDeployment) string {
return fmt.Sprintf("dynamo-%s", dynamoDeployment.Name) return fmt.Sprintf("dynamo-%s", dynamoDeployment.Name)
} }
func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alpha1.DynamoDeployment, recorder EventRecorder) (*string, error) { func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alpha1.DynamoGraphDeployment, recorder EventRecorder) (*string, error) {
dynamoGraphDownloadURL := "" dynamoGraphDownloadURL := ""
var dynamoComponent *schemas.DynamoComponent var dynamoComponent *schemas.DynamoComponent
dynamoComponentRepositoryName, _, dynamoComponentVersion := xstrings.Partition(dynamoDeployment.Spec.DynamoNim, ":") dynamoComponentRepositoryName, _, dynamoComponentVersion := xstrings.Partition(dynamoDeployment.Spec.DynamoGraph, ":")
var err error var err error
var apiStoreClient *apiStoreClient.ApiStoreClient var apiStoreClient *apiStoreClient.ApiStoreClient
...@@ -108,23 +108,23 @@ func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alp ...@@ -108,23 +108,23 @@ func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alp
return nil, err return nil, err
} }
recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Getting dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoNim) recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Getting dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoGraph)
dynamoComponent, err = apiStoreClient.GetDynamoComponent(ctx, dynamoComponentRepositoryName, dynamoComponentVersion) dynamoComponent, err = apiStoreClient.GetDynamoComponent(ctx, dynamoComponentRepositoryName, dynamoComponentVersion)
if err != nil { if err != nil {
err = errors.Wrap(err, "get dynamo component") err = errors.Wrap(err, "get dynamo component")
return nil, err return nil, err
} }
recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Got dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoNim) recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Got dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoGraph)
if dynamoComponent.TransmissionStrategy != nil && *dynamoComponent.TransmissionStrategy == schemas.TransmissionStrategyPresignedURL { if dynamoComponent.TransmissionStrategy != nil && *dynamoComponent.TransmissionStrategy == schemas.TransmissionStrategyPresignedURL {
var dynamoComponent_ *schemas.DynamoComponent var dynamoComponent_ *schemas.DynamoComponent
recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Getting presigned url for dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoNim) recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Getting presigned url for dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoGraph)
dynamoComponent_, err = apiStoreClient.PresignDynamoComponentDownloadURL(ctx, dynamoComponentRepositoryName, dynamoComponentVersion) dynamoComponent_, err = apiStoreClient.PresignDynamoComponentDownloadURL(ctx, dynamoComponentRepositoryName, dynamoComponentVersion)
if err != nil { if err != nil {
err = errors.Wrap(err, "presign dynamo component download url") err = errors.Wrap(err, "presign dynamo component download url")
return nil, err return nil, err
} }
recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Got presigned url for dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoNim) recorder.Eventf(dynamoDeployment, corev1.EventTypeNormal, "GenerateImageBuilderPod", "Got presigned url for dynamo graph %s from api store service", dynamoDeployment.Spec.DynamoGraph)
dynamoGraphDownloadURL = dynamoComponent_.PresignedDownloadUrl dynamoGraphDownloadURL = dynamoComponent_.PresignedDownloadUrl
} else { } else {
dynamoGraphDownloadURL = fmt.Sprintf("%s/api/v1/dynamo_nims/%s/versions/%s/download", apiStoreConf.Endpoint, dynamoComponentRepositoryName, dynamoComponentVersion) dynamoGraphDownloadURL = fmt.Sprintf("%s/api/v1/dynamo_nims/%s/versions/%s/download", apiStoreConf.Endpoint, dynamoComponentRepositoryName, dynamoComponentVersion)
...@@ -133,7 +133,7 @@ func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alp ...@@ -133,7 +133,7 @@ func RetrieveDynamoGraphDownloadURL(ctx context.Context, dynamoDeployment *v1alp
return &dynamoGraphDownloadURL, nil return &dynamoGraphDownloadURL, nil
} }
// ServicesConfig represents the top-level YAML structure of a dynamoNim yaml file stored in a dynamoNim tar file // ServicesConfig represents the top-level YAML structure of a dynamoComponent yaml file stored in a dynamoComponent tar file
type DynamoGraphConfig struct { type DynamoGraphConfig struct {
DynamoTag string `yaml:"service"` DynamoTag string `yaml:"service"`
Services []ServiceConfig `yaml:"services"` Services []ServiceConfig `yaml:"services"`
...@@ -211,7 +211,7 @@ func ParseDynamoGraphConfig(ctx context.Context, yamlContent *bytes.Buffer) (*Dy ...@@ -211,7 +211,7 @@ func ParseDynamoGraphConfig(ctx context.Context, yamlContent *bytes.Buffer) (*Dy
return &config, err return &config, err
} }
func GetDynamoGraphConfig(ctx context.Context, dynamoDeployment *v1alpha1.DynamoDeployment, recorder EventRecorder) (*DynamoGraphConfig, error) { func GetDynamoGraphConfig(ctx context.Context, dynamoDeployment *v1alpha1.DynamoGraphDeployment, recorder EventRecorder) (*DynamoGraphConfig, error) {
dynamoGraphDownloadURL, err := RetrieveDynamoGraphDownloadURL(ctx, dynamoDeployment, recorder) dynamoGraphDownloadURL, err := RetrieveDynamoGraphDownloadURL(ctx, dynamoDeployment, recorder)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -224,21 +224,21 @@ func GetDynamoGraphConfig(ctx context.Context, dynamoDeployment *v1alpha1.Dynamo ...@@ -224,21 +224,21 @@ func GetDynamoGraphConfig(ctx context.Context, dynamoDeployment *v1alpha1.Dynamo
} }
// GenerateDynamoComponentsDeployments generates a map of DynamoComponentDeployments from a DynamoGraphConfig // GenerateDynamoComponentsDeployments generates a map of DynamoComponentDeployments from a DynamoGraphConfig
func GenerateDynamoComponentsDeployments(ctx context.Context, parentDynamoDeployment *v1alpha1.DynamoDeployment, config *DynamoGraphConfig, ingressSpec *v1alpha1.IngressSpec) (map[string]*v1alpha1.DynamoNimDeployment, error) { func GenerateDynamoComponentsDeployments(ctx context.Context, parentDynamoGraphDeployment *v1alpha1.DynamoGraphDeployment, config *DynamoGraphConfig, ingressSpec *v1alpha1.IngressSpec) (map[string]*v1alpha1.DynamoComponentDeployment, error) {
dynamoServices := make(map[string]string) dynamoServices := make(map[string]string)
deployments := make(map[string]*v1alpha1.DynamoNimDeployment) deployments := make(map[string]*v1alpha1.DynamoComponentDeployment)
for _, service := range config.Services { for _, service := range config.Services {
deployment := &v1alpha1.DynamoNimDeployment{} deployment := &v1alpha1.DynamoComponentDeployment{}
deployment.Name = fmt.Sprintf("%s-%s", parentDynamoDeployment.Name, strings.ToLower(service.Name)) deployment.Name = fmt.Sprintf("%s-%s", parentDynamoGraphDeployment.Name, strings.ToLower(service.Name))
deployment.Namespace = parentDynamoDeployment.Namespace deployment.Namespace = parentDynamoGraphDeployment.Namespace
deployment.Spec.DynamoTag = config.DynamoTag deployment.Spec.DynamoTag = config.DynamoTag
deployment.Spec.DynamoNim = strings.ReplaceAll(parentDynamoDeployment.Spec.DynamoNim, ":", "--") deployment.Spec.DynamoComponent = parentDynamoGraphDeployment.Spec.DynamoGraph
deployment.Spec.ServiceName = service.Name deployment.Spec.ServiceName = service.Name
if service.Config.Dynamo != nil && service.Config.Dynamo.Enabled { if service.Config.Dynamo != nil && service.Config.Dynamo.Enabled {
dynamoNamespace := service.Config.Dynamo.Namespace dynamoNamespace := service.Config.Dynamo.Namespace
if dynamoNamespace == "" { if dynamoNamespace == "" {
// if no namespace is specified, use the default namespace // if no namespace is specified, use the default namespace
dynamoNamespace = GetDefaultDynamoNamespace(ctx, parentDynamoDeployment) dynamoNamespace = GetDefaultDynamoNamespace(ctx, parentDynamoGraphDeployment)
} }
deployment.Spec.DynamoNamespace = &dynamoNamespace deployment.Spec.DynamoNamespace = &dynamoNamespace
dynamoServices[service.Name] = fmt.Sprintf("%s/%s", service.Config.Dynamo.Name, dynamoNamespace) dynamoServices[service.Name] = fmt.Sprintf("%s/%s", service.Config.Dynamo.Name, dynamoNamespace)
......
...@@ -27,32 +27,32 @@ import ( ...@@ -27,32 +27,32 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
func TestGenerateDynamoNIMDeployments(t *testing.T) { func TestGenerateDynamoComponentsDeployments(t *testing.T) {
type args struct { type args struct {
parentDynamoDeployment *v1alpha1.DynamoDeployment parentDynamoGraphDeployment *v1alpha1.DynamoGraphDeployment
config *DynamoGraphConfig config *DynamoGraphConfig
ingressSpec *v1alpha1.IngressSpec ingressSpec *v1alpha1.IngressSpec
} }
tests := []struct { tests := []struct {
name string name string
args args args args
want map[string]*v1alpha1.DynamoNimDeployment want map[string]*v1alpha1.DynamoComponentDeployment
wantErr bool wantErr bool
}{ }{
{ {
name: "Test GenerateDynamoNIMDeployments http dependency", name: "Test GenerateDynamoComponentsDeployments http dependency",
args: args{ args: args{
parentDynamoDeployment: &v1alpha1.DynamoDeployment{ parentDynamoGraphDeployment: &v1alpha1.DynamoGraphDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment", Name: "test-dynamographdeployment",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoDeploymentSpec{ Spec: v1alpha1.DynamoGraphDeploymentSpec{
DynamoNim: "dynamonim:ac4e234", DynamoGraph: "dynamocomponent:ac4e234",
}, },
}, },
config: &DynamoGraphConfig{ config: &DynamoGraphConfig{
DynamoTag: "dynamonim:MyService1", DynamoTag: "dynamocomponent:MyService1",
Services: []ServiceConfig{ Services: []ServiceConfig{
{ {
Name: "service1", Name: "service1",
...@@ -88,16 +88,16 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -88,16 +88,16 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
ingressSpec: &v1alpha1.IngressSpec{}, ingressSpec: &v1alpha1.IngressSpec{},
}, },
want: map[string]*v1alpha1.DynamoNimDeployment{ want: map[string]*v1alpha1.DynamoComponentDeployment{
"service1": { "service1": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service1", Name: "test-dynamographdeployment-service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService1", DynamoTag: "dynamocomponent:MyService1",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Resources: &compounaiCommon.Resources{ Resources: &compounaiCommon.Resources{
...@@ -130,13 +130,13 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -130,13 +130,13 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
"service2": { "service2": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2", Name: "test-dynamographdeployment-service2",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService1", DynamoTag: "dynamocomponent:MyService1",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service2", ServiceName: "service2",
Autoscaling: &v1alpha1.Autoscaling{ Autoscaling: &v1alpha1.Autoscaling{
Enabled: false, Enabled: false,
...@@ -148,19 +148,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -148,19 +148,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
wantErr: false, wantErr: false,
}, },
{ {
name: "Test GenerateDynamoNIMDeployments dynamo dependency", name: "Test GenerateDynamoComponentsDeployments dynamo dependency",
args: args{ args: args{
parentDynamoDeployment: &v1alpha1.DynamoDeployment{ parentDynamoGraphDeployment: &v1alpha1.DynamoGraphDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment", Name: "test-dynamographdeployment",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoDeploymentSpec{ Spec: v1alpha1.DynamoGraphDeploymentSpec{
DynamoNim: "dynamonim:ac4e234", DynamoGraph: "dynamocomponent:ac4e234",
}, },
}, },
config: &DynamoGraphConfig{ config: &DynamoGraphConfig{
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
EntryService: "service1", EntryService: "service1",
Services: []ServiceConfig{ Services: []ServiceConfig{
{ {
...@@ -194,19 +194,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -194,19 +194,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
ingressSpec: &v1alpha1.IngressSpec{ ingressSpec: &v1alpha1.IngressSpec{
Enabled: true, Enabled: true,
Host: "test-dynamodeployment", Host: "test-dynamographdeployment",
}, },
}, },
want: map[string]*v1alpha1.DynamoNimDeployment{ want: map[string]*v1alpha1.DynamoComponentDeployment{
"service1": { "service1": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service1", Name: "test-dynamographdeployment-service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
Resources: &compounaiCommon.Resources{ Resources: &compounaiCommon.Resources{
Requests: &compounaiCommon.ResourceItem{ Requests: &compounaiCommon.ResourceItem{
...@@ -235,20 +235,20 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -235,20 +235,20 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
Ingress: v1alpha1.IngressSpec{ Ingress: v1alpha1.IngressSpec{
Enabled: true, Enabled: true,
Host: "test-dynamodeployment", Host: "test-dynamographdeployment",
}, },
}, },
}, },
}, },
"service2": { "service2": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2", Name: "test-dynamographdeployment-service2",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service2", ServiceName: "service2",
DynamoNamespace: &[]string{"default"}[0], DynamoNamespace: &[]string{"default"}[0],
Autoscaling: &v1alpha1.Autoscaling{ Autoscaling: &v1alpha1.Autoscaling{
...@@ -261,19 +261,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -261,19 +261,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
wantErr: false, wantErr: false,
}, },
{ {
name: "Test GenerateDynamoNIMDeployments dynamo dependency, default namespace", name: "Test GenerateDynamoComponentsDeployments dynamo dependency, default namespace",
args: args{ args: args{
parentDynamoDeployment: &v1alpha1.DynamoDeployment{ parentDynamoGraphDeployment: &v1alpha1.DynamoGraphDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment", Name: "test-dynamographdeployment",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoDeploymentSpec{ Spec: v1alpha1.DynamoGraphDeploymentSpec{
DynamoNim: "dynamonim:ac4e234", DynamoGraph: "dynamocomponent:ac4e234",
}, },
}, },
config: &DynamoGraphConfig{ config: &DynamoGraphConfig{
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
EntryService: "service1", EntryService: "service1",
Services: []ServiceConfig{ Services: []ServiceConfig{
{ {
...@@ -306,16 +306,16 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -306,16 +306,16 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
ingressSpec: &v1alpha1.IngressSpec{}, ingressSpec: &v1alpha1.IngressSpec{},
}, },
want: map[string]*v1alpha1.DynamoNimDeployment{ want: map[string]*v1alpha1.DynamoComponentDeployment{
"service1": { "service1": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service1", Name: "test-dynamographdeployment-service1",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
Resources: &compounaiCommon.Resources{ Resources: &compounaiCommon.Resources{
Requests: &compounaiCommon.ResourceItem{ Requests: &compounaiCommon.ResourceItem{
...@@ -339,7 +339,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -339,7 +339,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
ExternalServices: map[string]v1alpha1.ExternalService{ ExternalServices: map[string]v1alpha1.ExternalService{
"service2": { "service2": {
DeploymentSelectorKey: "dynamo", DeploymentSelectorKey: "dynamo",
DeploymentSelectorValue: "service2/dynamo-test-dynamodeployment", DeploymentSelectorValue: "service2/dynamo-test-dynamographdeployment",
}, },
}, },
Ingress: v1alpha1.IngressSpec{}, Ingress: v1alpha1.IngressSpec{},
...@@ -348,18 +348,18 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -348,18 +348,18 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
"service2": { "service2": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2", Name: "test-dynamographdeployment-service2",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoComponentDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoComponent: "dynamocomponent:ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamocomponent:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{ DynamoComponentDeploymentSharedSpec: v1alpha1.DynamoComponentDeploymentSharedSpec{
ServiceName: "service2", ServiceName: "service2",
Autoscaling: &v1alpha1.Autoscaling{ Autoscaling: &v1alpha1.Autoscaling{
Enabled: false, Enabled: false,
}, },
DynamoNamespace: &[]string{"dynamo-test-dynamodeployment"}[0], DynamoNamespace: &[]string{"dynamo-test-dynamographdeployment"}[0],
}, },
}, },
}, },
...@@ -367,19 +367,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -367,19 +367,19 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
wantErr: false, wantErr: false,
}, },
{ {
name: "Test GenerateDynamoNIMDeployments dependency not found", name: "Test GenerateDynamoComponentsDeployments dependency not found",
args: args{ args: args{
parentDynamoDeployment: &v1alpha1.DynamoDeployment{ parentDynamoGraphDeployment: &v1alpha1.DynamoGraphDeployment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment", Name: "test-dynamographdeployment",
Namespace: "default", Namespace: "default",
}, },
Spec: v1alpha1.DynamoDeploymentSpec{ Spec: v1alpha1.DynamoGraphDeploymentSpec{
DynamoNim: "dynamonim:ac4e234", DynamoGraph: "dynamocomponent:ac4e234",
}, },
}, },
config: &DynamoGraphConfig{ config: &DynamoGraphConfig{
DynamoTag: "dynamonim:MyService3", DynamoTag: "dynamocomponent:MyService3",
Services: []ServiceConfig{ Services: []ServiceConfig{
{ {
Name: "service1", Name: "service1",
...@@ -423,7 +423,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -423,7 +423,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
g := gomega.NewGomegaWithT(t) g := gomega.NewGomegaWithT(t)
got, err := GenerateDynamoComponentsDeployments(context.Background(), tt.args.parentDynamoDeployment, tt.args.config, tt.args.ingressSpec) got, err := GenerateDynamoComponentsDeployments(context.Background(), tt.args.parentDynamoGraphDeployment, tt.args.config, tt.args.ingressSpec)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
t.Errorf("GenerateDynamoComponentsDeployments() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("GenerateDynamoComponentsDeployments() error = %v, wantErr %v", err, tt.wantErr)
return return
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment