suite: container resources test templates: - common.yaml tests: - it: should create the resources correctly set: image: &image repository: nginx tag: 1.19.0 pullPolicy: IfNotPresent workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: &probes liveness: enabled: false readiness: enabled: false startup: enabled: false asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - it: should override the default limits set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: limits: cpu: 2000m memory: 4Gi asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 2000m memory: 4Gi requests: cpu: 10m memory: 50Mi - it: should override the default limits.cpu set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: limits: cpu: 2000m asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 2000m memory: 8Gi requests: cpu: 10m memory: 50Mi - it: should override the default limits.memory set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: limits: memory: 4Gi asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 4Gi requests: cpu: 10m memory: 50Mi - it: should not render limits.cpu set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: limits: cpu: 0 asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: memory: 8Gi requests: cpu: 10m memory: 50Mi - it: should not render limits.memory set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: limits: memory: 0 asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m requests: cpu: 10m memory: 50Mi - it: should override the default requests set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: requests: cpu: 200m memory: 1Gi asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 200m memory: 1Gi - it: should override the default requests.cpu set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: requests: cpu: 200m asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 200m memory: 50Mi - it: should override the default requests.memory set: image: *image workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes resources: requests: memory: 1Gi asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 1Gi - it: should assign GPU on the primary pod/container set: image: *image scaleGPU: - gpu: nvidia.com/gpu: 1 global: ixChartContext: addNvidiaRuntimeClass: true nvidiaRuntimeClassName: nvidia workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes container-name2: enabled: true primary: false imageSelector: image probes: *probes workload-name2: enabled: true primary: false type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc equal: path: spec.template.spec.runtimeClassName value: nvidia - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[1] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - documentIndex: &otherDeploymentDoc 1 isKind: of: Deployment - documentIndex: *otherDeploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *otherDeploymentDoc isNull: path: spec.template.spec.runtimeClassName - documentIndex: *otherDeploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - it: should assign GPU on the selected pod/container set: image: *image global: ixChartContext: addNvidiaRuntimeClass: true nvidiaRuntimeClassName: nvidia scaleGPU: - gpu: nvidia.com/gpu: 1 targetSelector: workload-name2: - container-name1 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes container-name2: enabled: true primary: false imageSelector: image probes: *probes workload-name2: enabled: true primary: false type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc isNull: path: spec.template.spec.runtimeClassName - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[1] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - documentIndex: &otherDeploymentDoc 1 isKind: of: Deployment - documentIndex: *otherDeploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *otherDeploymentDoc equal: path: spec.template.spec.runtimeClassName value: nvidia - documentIndex: *otherDeploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - it: should assign GPU on the selected pods/containers set: image: *image global: ixChartContext: addNvidiaRuntimeClass: true nvidiaRuntimeClassName: nvidia scaleGPU: - gpu: nvidia.com/gpu: 1 targetSelector: workload-name1: - container-name1 - container-name2 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes container-name2: enabled: true primary: false imageSelector: image probes: *probes workload-name2: enabled: true primary: false type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc equal: path: spec.template.spec.runtimeClassName value: nvidia - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[1] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - documentIndex: &otherDeploymentDoc 1 isKind: of: Deployment - documentIndex: *otherDeploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *otherDeploymentDoc isNull: path: spec.template.spec.runtimeClassName - documentIndex: *otherDeploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi requests: cpu: 10m memory: 50Mi - it: should assign GPU on the selected pod/container with multiple GPUs set: image: *image global: ixChartContext: addNvidiaRuntimeClass: true nvidiaRuntimeClassName: nvidia scaleGPU: - gpu: nvidia.com/gpu: 1 amd.com/gpu: 0 targetSelector: workload-name1: - container-name1 - container-name2 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes container-name2: enabled: true primary: false imageSelector: image probes: *probes asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc equal: path: spec.template.spec.runtimeClassName value: nvidia - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[1] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - it: should assign multiple GPU on the selected pod/container with multiple selected GPUs set: image: *image global: ixChartContext: addNvidiaRuntimeClass: true nvidiaRuntimeClassName: nvidia scaleGPU: - gpu: nvidia.com/gpu: 1 amd.com/gpu: 0 targetSelector: workload-name1: - container-name1 - gpu: nvidia.com/gpu: 0 amd.com/gpu: 1 targetSelector: workload-name1: - container-name2 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes container-name2: enabled: true primary: false imageSelector: image probes: *probes asserts: - documentIndex: &deploymentDoc 0 isKind: of: Deployment - documentIndex: *deploymentDoc isAPIVersion: of: apps/v1 - documentIndex: *deploymentDoc equal: path: spec.template.spec.runtimeClassName value: nvidia - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[0] content: resources: limits: cpu: 4000m memory: 8Gi nvidia.com/gpu: "1" requests: cpu: 10m memory: 50Mi - documentIndex: *deploymentDoc isSubset: path: spec.template.spec.containers[1] content: resources: limits: cpu: 4000m memory: 8Gi amd.com/gpu: "1" requests: cpu: 10m memory: 50Mi # Failures - it: should fail with empty requests set: image: *image resources: requests: workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty - it: should fail with empty requests.cpu set: image: *image resources: requests: cpu: "" workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty - it: should fail with empty requests.memory set: image: *image resources: requests: cpu: 10m memory: "" workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty - it: should fail with invalid format in requests.cpu set: image: *image resources: requests: cpu: 10MB memory: 50Mi workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected to have one of the following formats [(Plain Integer - eg. 1), (Float - eg. 0.5), (Milicpu - eg. 500m)], but got [10MB] - it: should fail with invalid format in limits.cpu set: image: *image resources: requests: cpu: 10m memory: 50Mi limits: cpu: 10MB memory: 8Gi workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected to have one of the following formats [(Plain Integer - eg. 1), (Float - eg. 0.5), (Milicpu - eg. 500m)], but got [10MB] - it: should fail with invalid format in requests.memory set: image: *image resources: requests: cpu: 10m memory: 50MB limits: cpu: 4000m memory: 8Gi workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected to have one of the following formats [(Suffixed with E/P/T/G/M/K - eg. 1G), (Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi), (Plain Integer in bytes - eg. 1024), (Exponent - eg. 134e6)], but got [50MB] - it: should fail with invalid format in limits.memory set: image: *image resources: requests: cpu: 10m memory: 50Mi limits: cpu: 4000m memory: 8GB workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected to have one of the following formats [(Suffixed with E/P/T/G/M/K - eg. 1G), (Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi), (Plain Integer in bytes - eg. 1024), (Exponent - eg. 134e6)], but got [8GB] - it: should fail with empty gpu in defined entry set: image: *image scaleGPU: - gpu: targetSelector: workload-name1: - container-name1 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty - it: should fail with empty list under workload in targetSelector set: image: *image scaleGPU: - gpu: key: value targetSelector: workload-name1: [] workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty list under pod in - it: should fail with empty value in gpu set: image: *image scaleGPU: - gpu: key: "" targetSelector: workload-name1: - container-name1 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty - it: should fail with no value in gpu set: image: *image scaleGPU: - gpu: key: targetSelector: workload-name1: - container-name1 workload: workload-name1: enabled: true primary: true type: Deployment podSpec: containers: container-name1: enabled: true primary: true imageSelector: image probes: *probes asserts: - failedTemplate: errorMessage: Container - Expected non-empty