Unverified Commit 02a33f15 authored by julienmancuso's avatar julienmancuso Committed by GitHub
Browse files

feat: add dynamoDeployment CR finalizer (#623)

parent cb0ceb81
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
package nim package nim
import ( import (
"context"
"testing" "testing"
compounaiCommon "github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/common" compounaiCommon "github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/common"
...@@ -94,7 +95,9 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -94,7 +95,9 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService1", DynamoTag: "dynamonim:MyService1",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
DynamoNamespace: &[]string{"default"}[0],
Resources: &compounaiCommon.Resources{ Resources: &compounaiCommon.Resources{
Requests: &compounaiCommon.ResourceItem{ Requests: &compounaiCommon.ResourceItem{
CPU: "1", CPU: "1",
...@@ -122,6 +125,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -122,6 +125,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
}, },
}, },
},
"service2": { "service2": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2", Name: "test-dynamodeployment-service2",
...@@ -130,6 +134,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -130,6 +134,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService1", DynamoTag: "dynamonim:MyService1",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service2", ServiceName: "service2",
Autoscaling: &v1alpha1.Autoscaling{ Autoscaling: &v1alpha1.Autoscaling{
Enabled: false, Enabled: false,
...@@ -137,6 +142,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -137,6 +142,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
}, },
}, },
},
wantErr: false, wantErr: false,
}, },
{ {
...@@ -194,6 +200,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -194,6 +200,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamonim:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service1", ServiceName: "service1",
Resources: &compounaiCommon.Resources{ Resources: &compounaiCommon.Resources{
Requests: &compounaiCommon.ResourceItem{ Requests: &compounaiCommon.ResourceItem{
...@@ -226,6 +233,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -226,6 +233,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
}, },
}, },
}, },
},
"service2": { "service2": {
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2", Name: "test-dynamodeployment-service2",
...@@ -234,13 +242,124 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -234,13 +242,124 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) {
Spec: v1alpha1.DynamoNimDeploymentSpec{ Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234", DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService2", DynamoTag: "dynamonim:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service2", ServiceName: "service2",
DynamoNamespace: &[]string{"default"}[0],
Autoscaling: &v1alpha1.Autoscaling{ Autoscaling: &v1alpha1.Autoscaling{
Enabled: false, Enabled: false,
}, },
}, },
}, },
}, },
},
wantErr: false,
},
{
name: "Test GenerateDynamoNIMDeployments dynamo dependency, default namespace",
args: args{
parentDynamoDeployment: &v1alpha1.DynamoDeployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment",
Namespace: "default",
},
Spec: v1alpha1.DynamoDeploymentSpec{
DynamoNim: "dynamonim:ac4e234",
},
},
config: &DynamoNIMConfig{
DynamoTag: "dynamonim:MyService2",
EntryService: "service1",
Services: []ServiceConfig{
{
Name: "service1",
Dependencies: []map[string]string{{"service": "service2"}},
Config: Config{
Resources: &Resources{
CPU: "1",
Memory: "1Gi",
GPU: "0",
Custom: map[string]string{},
},
Autoscaling: &Autoscaling{
MinReplicas: 1,
MaxReplicas: 5,
},
},
},
{
Name: "service2",
Dependencies: []map[string]string{},
Config: Config{
Dynamo: &DynamoConfig{
Enabled: true,
Name: "service2",
},
},
},
},
},
},
want: map[string]*v1alpha1.DynamoNimDeployment{
"service1": {
ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service1",
Namespace: "default",
},
Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service1",
Resources: &compounaiCommon.Resources{
Requests: &compounaiCommon.ResourceItem{
CPU: "1",
Memory: "1Gi",
GPU: "0",
Custom: map[string]string{},
},
Limits: &compounaiCommon.ResourceItem{
CPU: "1",
Memory: "1Gi",
GPU: "0",
Custom: map[string]string{},
},
},
Autoscaling: &v1alpha1.Autoscaling{
Enabled: true,
MinReplicas: 1,
MaxReplicas: 5,
},
ExternalServices: map[string]v1alpha1.ExternalService{
"service2": {
DeploymentSelectorKey: "dynamo",
DeploymentSelectorValue: "service2/dynamo-test-dynamodeployment",
},
},
Ingress: v1alpha1.IngressSpec{
Enabled: true,
UseVirtualService: &[]bool{true}[0],
},
},
},
},
"service2": {
ObjectMeta: metav1.ObjectMeta{
Name: "test-dynamodeployment-service2",
Namespace: "default",
},
Spec: v1alpha1.DynamoNimDeploymentSpec{
DynamoNim: "dynamonim--ac4e234",
DynamoTag: "dynamonim:MyService2",
DynamoNimDeploymentSharedSpec: v1alpha1.DynamoNimDeploymentSharedSpec{
ServiceName: "service2",
Autoscaling: &v1alpha1.Autoscaling{
Enabled: false,
},
DynamoNamespace: &[]string{"dynamo-test-dynamodeployment"}[0],
},
},
},
},
wantErr: false, wantErr: false,
}, },
{ {
...@@ -299,7 +418,7 @@ func TestGenerateDynamoNIMDeployments(t *testing.T) { ...@@ -299,7 +418,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 := GenerateDynamoNIMDeployments(tt.args.parentDynamoDeployment, tt.args.config) got, err := GenerateDynamoNIMDeployments(context.Background(), tt.args.parentDynamoDeployment, tt.args.config)
if (err != nil) != tt.wantErr { if (err != nil) != tt.wantErr {
t.Errorf("GenerateDynamoNIMDeployments() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("GenerateDynamoNIMDeployments() 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