Commit 8ce4f4a6 authored by Kostas Chartsias's avatar Kostas Chartsias
Browse files

feat: edge apps required resources

parent 045dfa27
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -6,6 +6,11 @@
    "type": "PRIVATEREPO",
    "imagePath": ""
  },
  "requiredResources": {
    "infraKind": "container",
    "numCPU": "100m",
    "memory": 512
  },
  "componentSpec": [
    {
      "componentName": "",
+10 −0
Original line number Diff line number Diff line
@@ -9,6 +9,16 @@ class RegisterAppDefinitionInput(BaseModel):
    )
    imagePath: str = Field(..., min_length=1)
    port: int = Field(..., ge=1, le=65535)
    numCPU: str | None = Field(
        default=None,
        min_length=1,
        description="Optional CPU request, for example 100m or 1",
    )
    memory: int | None = Field(
        default=None,
        ge=1,
        description="Optional memory request in MB",
    )

    @field_validator("packageType", mode="before")
    @classmethod
+7 −0
Original line number Diff line number Diff line
@@ -99,6 +99,8 @@ async def register_app_definition(inp: RegisterAppDefinitionInput) -> dict:
    - packageType: HELM_CHART or CONTAINER
    - imagePath: image or Helm chart URL
    - port: exposed TCP port
    - numCPU: optional CPU request
    - memory: optional memory request in MB
    """
    template_path = (
        root_dir / "json_templates" / "app_register_app_definition_request.json"
@@ -115,6 +117,11 @@ async def register_app_definition(inp: RegisterAppDefinitionInput) -> dict:
    payload["appRepo"]["imagePath"] = inp.imagePath
    payload["componentSpec"][0]["componentName"] = app_name
    payload["componentSpec"][0]["networkInterfaces"][0]["port"] = inp.port
    required_resources = payload.setdefault("requiredResources", {})
    if inp.numCPU is not None:
        required_resources["numCPU"] = inp.numCPU
    if inp.memory is not None:
        required_resources["memory"] = inp.memory

    url = f"{get_session_service_url()}/apps"
    headers = {"accept": "application/json", "content-type": "application/json"}