From aba032b681e2fa81f255cd776600b9636277bcbe Mon Sep 17 00:00:00 2001 From: Oscar Ward Date: Tue, 13 Feb 2024 21:26:35 -0800 Subject: [PATCH] add controller side changes and tests Signed-off-by: Oscar Ward --- pkg/controller/defaults/memory_test.go | 8 +++ .../existing.yaml | 54 ++++++++++++++++ .../expected.golden | 62 +++++++++++++++++++ .../input.yaml | 33 ++++++++++ .../existing.yaml | 56 +++++++++++++++++ .../expected.golden | 62 +++++++++++++++++++ .../input.yaml | 33 ++++++++++ .../resolvedofferings/computeclass.go | 2 +- .../resolvedofferings/computeclass_test.go | 8 +++ .../existing.yaml | 54 ++++++++++++++++ .../expected.yaml | 47 ++++++++++++++ .../input.yaml | 33 ++++++++++ .../existing.yaml | 54 ++++++++++++++++ .../expected.yaml | 47 ++++++++++++++ .../input.yaml | 33 ++++++++++ .../scheduling/computeclass_test.go | 8 +++ pkg/controller/scheduling/scheduling.go | 2 +- .../existing.yaml | 44 +++++++++++++ .../expected.yaml | 61 ++++++++++++++++++ .../input.yaml | 38 ++++++++++++ .../existing.yaml | 44 +++++++++++++ .../expected.yaml | 61 ++++++++++++++++++ .../input.yaml | 38 ++++++++++++ 23 files changed, 880 insertions(+), 2 deletions(-) create mode 100644 pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/expected.golden create mode 100644 pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/input.yaml create mode 100644 pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/expected.golden create mode 100644 pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/input.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml create mode 100644 pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml create mode 100644 pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml diff --git a/pkg/controller/defaults/memory_test.go b/pkg/controller/defaults/memory_test.go index ed07d16b3..9b04fb7ba 100644 --- a/pkg/controller/defaults/memory_test.go +++ b/pkg/controller/defaults/memory_test.go @@ -45,6 +45,14 @@ func TestMemorySameGeneration(t *testing.T) { tester.DefaultTest(t, scheme.Scheme, "testdata/memory/same-generation", Calculate) } +func TestTwoCCCDefaultsCrossRegion(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/memory/two-ccc-defaults-different-regions", Calculate) +} + +func TestTwoPCCDefaultsCrossRegion(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/memory/two-pcc-defaults-different-regions", Calculate) +} + func TestTwoCCCDefaultsShouldError(t *testing.T) { harness, input, err := tester.FromDir(scheme.Scheme, "testdata/memory/two-ccc-defaults-should-error") if err != nil { diff --git a/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/existing.yaml b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..0ec86b6b4 --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/existing.yaml @@ -0,0 +1,54 @@ +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +supportedRegions: [local] +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-namespace +spec: {} +status: + defaultRegion: local + supportedRegions: + - local diff --git a/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/expected.golden b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/expected.golden new file mode 100644 index 000000000..f8bd1753e --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/expected.golden @@ -0,0 +1,62 @@ +`apiVersion: internal.acorn.io/v1 +kind: AppInstance +metadata: + creationTimestamp: null + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 +status: + appImage: + buildContext: {} + id: test + imageData: {} + vcs: {} + appSpec: + containers: + oneimage: + build: + context: . + dockerfile: Dockerfile + image: image-name + metrics: {} + ports: + - port: 80 + protocol: http + targetPort: 81 + probes: null + sidecars: + left: + image: foo + metrics: {} + ports: + - port: 90 + protocol: tcp + targetPort: 91 + probes: null + appStatus: {} + columns: {} + conditions: + reason: Success + status: "True" + success: true + type: defaults + defaults: + memory: + "": 1048576 + left: 1048576 + oneimage: 1048576 + region: local + namespace: app-created-namespace + observedGeneration: 1 + resolvedOfferings: {} + staged: + appImage: + buildContext: {} + imageData: {} + vcs: {} + summary: {} +` diff --git a/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/input.yaml b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..7dca842b8 --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-ccc-defaults-different-regions/input.yaml @@ -0,0 +1,33 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." diff --git a/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/existing.yaml b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..a587fdf79 --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/existing.yaml @@ -0,0 +1,56 @@ +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class + namespace: app-namespace +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +supportedRegions: [local] +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other + namespace: app-namespace +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-namespace +spec: {} +status: + defaultRegion: local + supportedRegions: + - local diff --git a/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/expected.golden b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/expected.golden new file mode 100644 index 000000000..bcd5fb4a2 --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/expected.golden @@ -0,0 +1,62 @@ +`apiVersion: internal.acorn.io/v1 +kind: AppInstance +metadata: + creationTimestamp: null + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 +status: + appImage: + buildContext: {} + id: test + imageData: {} + vcs: {} + appSpec: + containers: + oneimage: + build: + context: . + dockerfile: Dockerfile + image: image-name + metrics: {} + ports: + - port: 80 + protocol: http + targetPort: 81 + probes: null + sidecars: + left: + image: foo + metrics: {} + ports: + - port: 90 + protocol: tcp + targetPort: 91 + probes: null + appStatus: {} + columns: {} + conditions: + reason: Success + status: "True" + success: true + type: defaults + defaults: + memory: + "": 0 + left: 1048576 + oneimage: 1048576 + region: local + namespace: app-created-namespace + observedGeneration: 1 + resolvedOfferings: {} + staged: + appImage: + buildContext: {} + imageData: {} + vcs: {} + summary: {} +` diff --git a/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/input.yaml b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..7dca842b8 --- /dev/null +++ b/pkg/controller/defaults/testdata/memory/two-pcc-defaults-different-regions/input.yaml @@ -0,0 +1,33 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." diff --git a/pkg/controller/resolvedofferings/computeclass.go b/pkg/controller/resolvedofferings/computeclass.go index 1d2d5da8b..2915157a3 100644 --- a/pkg/controller/resolvedofferings/computeclass.go +++ b/pkg/controller/resolvedofferings/computeclass.go @@ -116,7 +116,7 @@ func resolveComputeClassForContainer(req router.Request, appInstance *v1.AppInst var ccName string // First, get the compute class for the workload - cc, err := computeclasses.GetClassForWorkload(req.Ctx, req.Client, appInstance.Spec.ComputeClasses, container, containerName, appInstance.Namespace) + cc, err := computeclasses.GetClassForWorkload(req.Ctx, req.Client, appInstance.Spec.ComputeClasses, container, containerName, appInstance.Namespace, appInstance.GetRegion()) if err != nil { return v1.ContainerResolvedOffering{}, err } diff --git a/pkg/controller/resolvedofferings/computeclass_test.go b/pkg/controller/resolvedofferings/computeclass_test.go index da94265a2..de9527845 100644 --- a/pkg/controller/resolvedofferings/computeclass_test.go +++ b/pkg/controller/resolvedofferings/computeclass_test.go @@ -73,6 +73,14 @@ func TestTwoPCCDefaultsShouldError(t *testing.T) { assert.True(t, resp.NoPrune, "NoPrune should be true when error occurs") } +func TestTwoCCCDefaultsDifferentRegions(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/two-ccc-defaults-different-regions", Calculate) +} + +func TestTwoPCCDefaultsDifferentRegions(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/two-pcc-defaults-different-regions", Calculate) +} + func TestComputeClassDefault(t *testing.T) { tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/compute-class-default", Calculate) } diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..af1cc4e37 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml @@ -0,0 +1,54 @@ +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-namespace +spec: {} +status: + defaultRegion: local + supportedRegions: + - local diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml new file mode 100644 index 000000000..348992bb1 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml @@ -0,0 +1,47 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." + conditions: + - reason: Success + status: "True" + success: true + type: resolved-offerings + resolvedOfferings: + region: local + containers: + "": + memory: 0 + left: + memory: 0 + oneimage: + memory: 1048576 diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..7dca842b8 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml @@ -0,0 +1,33 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..8bcffdb33 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml @@ -0,0 +1,54 @@ +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-namespace +spec: {} +status: + defaultRegion: local + supportedRegions: + - local diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml new file mode 100644 index 000000000..348992bb1 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml @@ -0,0 +1,47 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." + conditions: + - reason: Success + status: "True" + success: true + type: resolved-offerings + resolvedOfferings: + region: local + containers: + "": + memory: 0 + left: + memory: 0 + oneimage: + memory: 1048576 diff --git a/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..7dca842b8 --- /dev/null +++ b/pkg/controller/resolvedofferings/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml @@ -0,0 +1,33 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." diff --git a/pkg/controller/scheduling/computeclass_test.go b/pkg/controller/scheduling/computeclass_test.go index 71c19a4e3..f4283e3af 100644 --- a/pkg/controller/scheduling/computeclass_test.go +++ b/pkg/controller/scheduling/computeclass_test.go @@ -73,6 +73,14 @@ func TestRequestScalerFloor(t *testing.T) { tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/request-scaler-floor", Calculate) } +func TestTwoCCCDefaultsDifferentRegions(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/two-ccc-defaults-different-regions", Calculate) +} + +func TestTwoPCCDefaultsDifferentRegions(t *testing.T) { + tester.DefaultTest(t, scheme.Scheme, "testdata/computeclass/two-pcc-defaults-different-regions", Calculate) +} + func TestTwoCCCDefaultsShouldError(t *testing.T) { harness, input, err := tester.FromDir(scheme.Scheme, "testdata/computeclass/two-ccc-defaults-should-error") if err != nil { diff --git a/pkg/controller/scheduling/scheduling.go b/pkg/controller/scheduling/scheduling.go index 104276635..e62f758c0 100644 --- a/pkg/controller/scheduling/scheduling.go +++ b/pkg/controller/scheduling/scheduling.go @@ -76,7 +76,7 @@ func addScheduling(req router.Request, appInstance *v1.AppInstance, workloads ma return err } - computeClass, err := computeclasses.GetClassForWorkload(req.Ctx, req.Client, appInstance.Spec.ComputeClasses, container, name, appInstance.Namespace) + computeClass, err := computeclasses.GetClassForWorkload(req.Ctx, req.Client, appInstance.Spec.ComputeClasses, container, name, appInstance.Namespace, appInstance.GetRegion()) if err != nil { return err } diff --git a/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..2f79a2608 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/existing.yaml @@ -0,0 +1,44 @@ +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ClusterComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar \ No newline at end of file diff --git a/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml new file mode 100644 index 000000000..3fea9ddd3 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/expected.yaml @@ -0,0 +1,61 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + defaults: + memory: + "": 0 + left: 1048576 + oneimage: 1048576 + observedGeneration: 1 + resolvedOfferings: {} + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." + conditions: + - reason: Success + status: "True" + success: true + type: scheduling + scheduling: + left: + requirements: + limits: + memory: 1Mi + requests: + memory: 1Mi + oneimage: + requirements: + limits: + memory: 1Mi + requests: + memory: 1Mi + tolerations: + - key: taints.acorn.io/workload + operator: Exists + diff --git a/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..15b4b2241 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-ccc-defaults-different-regions/input.yaml @@ -0,0 +1,38 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + defaults: + memory: + "": 0 + left: 1048576 # 1Mi + oneimage: 1048576 # 1Mi + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." diff --git a/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml new file mode 100644 index 000000000..fb2e42dd4 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/existing.yaml @@ -0,0 +1,44 @@ +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 1Mi # 1Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar +--- +kind: ProjectComputeClassInstance +apiVersion: internal.admin.acorn.io/v1 +metadata: + name: sample-compute-class-other +description: Simple description for a simple ComputeClass +cpuScaler: 0.25 +default: true +supportedRegions: [non-local] +memory: + min: 1Mi # 1Mi + max: 2Mi # 2Mi + default: 2Mi # 2Mi +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: foo + operator: In + values: + - bar \ No newline at end of file diff --git a/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml new file mode 100644 index 000000000..3fea9ddd3 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/expected.yaml @@ -0,0 +1,61 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + defaults: + memory: + "": 0 + left: 1048576 + oneimage: 1048576 + observedGeneration: 1 + resolvedOfferings: {} + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "." + conditions: + - reason: Success + status: "True" + success: true + type: scheduling + scheduling: + left: + requirements: + limits: + memory: 1Mi + requests: + memory: 1Mi + oneimage: + requirements: + limits: + memory: 1Mi + requests: + memory: 1Mi + tolerations: + - key: taints.acorn.io/workload + operator: Exists + diff --git a/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml new file mode 100644 index 000000000..15b4b2241 --- /dev/null +++ b/pkg/controller/scheduling/testdata/computeclass/two-pcc-defaults-different-regions/input.yaml @@ -0,0 +1,38 @@ +kind: AppInstance +apiVersion: internal.acorn.io/v1 +metadata: + name: app-name + namespace: app-namespace + uid: 1234567890abcdef +spec: + image: test + memory: + oneimage: 1048576 # 1Mi +status: + defaults: + memory: + "": 0 + left: 1048576 # 1Mi + oneimage: 1048576 # 1Mi + observedGeneration: 1 + namespace: app-created-namespace + appImage: + id: test + appSpec: + containers: + oneimage: + sidecars: + left: + image: "foo" + ports: + - port: 90 + targetPort: 91 + protocol: tcp + ports: + - port: 80 + targetPort: 81 + protocol: http + image: "image-name" + build: + dockerfile: "Dockerfile" + context: "."