Commit b82958e2 authored by Paris Stentoumis's avatar Paris Stentoumis
Browse files

feat: required cpu and memory support

parent 37a19d6f
Loading
Loading
Loading
Loading
Loading
+4 −0
Changes for src/openop_tfsdk/contract/adapters/charts/container/templates/deployment.yaml: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -25,3 +25,7 @@ spec:
              protocol: {{ .protocol }}
            {{- end }}
          {{- end }}
          {{- with .Values.resources }}
          resources:
            {{- toYaml . | nindent 12 }}
          {{- end }}
+2 −0
Changes for src/openop_tfsdk/contract/adapters/charts/container/values.yaml: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,3 +3,5 @@ image: ""
# Each port: {name, port, protocol}.
ports: []
serviceType: ClusterIP
# Kubernetes container resources (requests/limits). Empty when no compute intent.
resources: {}
+12 −0
Changes for src/openop_tfsdk/contract/adapters/kubernetes.py: 12 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -99,10 +99,22 @@ def _chart_args(unit) -> list:
        raise ValidationError(
            "kubernetes container does not support mixed internal and external ports"
        )
    compute = unit.resource_requirements.compute if unit.resource_requirements else None
    resources = {}
    if compute:
        cpu = f"{compute.cpu_millicores}m"
        memory = f"{compute.memory_mb}Mi"
        resources = {
            "requests": {
                "cpu": cpu,
                "memory": memory,
            }
        }
    values = {
        "image": unit.artifact_ref,
        "ports": list(ports.values()),
        "serviceType": "NodePort" if external else "ClusterIP",
        "resources": resources,
    }
    return [CONTAINER_CHART] + [
        arg for key, value in values.items() for arg in ("--set-json", f"{key}={json.dumps(value)}")
+2 −0
Changes for tests/contract/test_kubernetes_container.py: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ def test_container_runs_the_image_from_the_bundled_chart(
            {"name": "p9000-udp", "port": 9000, "protocol": "UDP"},
        ],
        "serviceType": service_type,
        "resources": {},
    }


@@ -90,6 +91,7 @@ def test_container_without_ports_gets_no_external_service(kubernetes_settings, h
        "image": "nginx:1.25",
        "ports": [],
        "serviceType": "ClusterIP",
        "resources": {},
    }