Skip to content

CODECO App Rescheduling/Migration does not work (how should we create proper tests for it?)

I deployed this demo app.

The initial placement is on the kind-control-plane node. Then Node Recommendations suggest migrating the application to c1. However, the solver re-assigns the workflow to the kind-control-plane node.

There is no error, but also I cannot see why the recommendations cannot be fulfilled. Is this shown somewhere else?

swm solver logs
solved: 001 workload assignment v1
solved: 002 model request-9 options compound-names:false implicit-reverse-path:false shortest-path-only:true symbolic-names:false
solved: 003
solved: 004 applications
solved: 005 application acm-swm-app
solved: 006 workload backend needs cpu:0 ram:0
solved: 007 workload front-end needs cpu:0 ram:0
solved: 008
solved: 009 channel frontend:acm-swm-app•backend→acm-swm-app•front-end needs lat:1s bw:5
solved: 010 channel backend:acm-swm-app•front-end→acm-swm-app•backend needs lat:1s bw:5
solved: 011
solved: 012 infrastructure
solved: 013 node kind-control-plane provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.kind-control-plane siemens.com.qosscheduler.master)
solved: 014 node c1 provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.c1)
solved: 015 node c2 provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.c2)
solved: 016
solved: 017 network k8s
solved: 018 link c1-kind-control-plane:c1→kind-control-plane with lat:100µs bw:1Gb
solved: 019 link c2-c1:c2→c1 with lat:100µs bw:1Gb
solved: 020 link c2-c2:c2→c2 with lat:100µs bw:1Gb
solved: 021 link c1-c2:c1→c2 with lat:100µs bw:1Gb
solved: 022 link kind-control-plane-c2:kind-control-plane→c2 with lat:100µs bw:1Gb
solved: 023 link kind-control-plane-kind-control-plane:kind-control-plane→kind-control-plane with lat:100µs bw:1Gb
solved: 024 link c1-c1:c1→c1 with lat:100µs bw:1Gb
solved: 025 link c2-kind-control-plane:c2→kind-control-plane with lat:100µs bw:1Gb
solved: 026 link kind-control-plane-c1:kind-control-plane→c1 with lat:100µs bw:1Gb
solved: 027
solved: 028 paths (
solved: 029    c1-c1-453604436:c1→c1
solved: 030    kind-control-plane-kind-control-plane-265522338:kind-control-plane→kind-control-plane
solved: 031    c2-c2-1512416458:c2→c2
solved: 032    c2-c1-1495638839:c2→c1
solved: 033    c1-c2-503937293:c1→c2
solved: 034    kind-control-plane-c2-2966022466:kind-control-plane→c2
solved: 035    c2-kind-control-plane-3353522554:c2→kind-control-plane
solved: 036    kind-control-plane-c1-2949244847:kind-control-plane→c1
solved: 037    c1-kind-control-plane-1644530845:c1→kind-control-plane
solved: 038 )
solved: 001 assignment
solved: 002 workload acm-swm-app•backend on kind-control-plane
solved: 003 workload acm-swm-app•front-end on kind-control-plane
solved: 004 channel frontend on k8s•kind-control-plane-kind-control-plane-265522338
solved: 005 channel backend on k8s•kind-control-plane-kind-control-plane-265522338
solved: request-9: elapsed: 740.503µs
solved: 001 workload assignment v1
solved: 002 model request-10 options compound-names:false implicit-reverse-path:false shortest-path-only:true symbolic-names:false
solved: 003
solved: 004 applications
solved: 005 application acm-swm-app
solved: 006 workload backend on kind-control-plane needs cpu:0 ram:0
solved: 007 workload front-end on kind-control-plane needs cpu:0 ram:0
solved: 008
solved: 009 channel frontend:acm-swm-app•backend→acm-swm-app•front-end needs lat:1s bw:5
solved: 010 channel backend:acm-swm-app•front-end→acm-swm-app•backend needs lat:1s bw:5
solved: 011
solved: 012 infrastructure
solved: 013 node kind-control-plane provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.kind-control-plane siemens.com.qosscheduler.master)
solved: 014 node c1 provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.c1)
solved: 015 node c2 provides cpu:48000 ram:125.6GiB labels:(siemens.com.qosscheduler.c2)
solved: 016
solved: 017 network k8s
solved: 018 link c1-kind-control-plane:c1→kind-control-plane with lat:100µs bw:1Gb
solved: 019 link c2-c1:c2→c1 with lat:100µs bw:1Gb
solved: 020 link c2-c2:c2→c2 with lat:100µs bw:1Gb
solved: 021 link c1-c2:c1→c2 with lat:100µs bw:1Gb
solved: 022 link kind-control-plane-c2:kind-control-plane→c2 with lat:100µs bw:1Gb
solved: 023 link kind-control-plane-kind-control-plane:kind-control-plane→kind-control-plane with lat:100µs bw:1Gb
solved: 024 link c1-c1:c1→c1 with lat:100µs bw:1Gb
solved: 025 link c2-kind-control-plane:c2→kind-control-plane with lat:100µs bw:1Gb
solved: 026 link kind-control-plane-c1:kind-control-plane→c1 with lat:100µs bw:1Gb
solved: 027
solved: 028 paths (
solved: 029    kind-control-plane-kind-control-plane-265522338:kind-control-plane→kind-control-plane
solved: 030    c2-c2-1512416458:c2→c2
solved: 031    c2-c1-1495638839:c2→c1
solved: 032    c1-c2-503937293:c1→c2
solved: 033    c1-c1-453604436:c1→c1
solved: 034    c2-kind-control-plane-3353522554:c2→kind-control-plane
solved: 035    kind-control-plane-c1-2949244847:kind-control-plane→c1
solved: 036    c1-kind-control-plane-1644530845:c1→kind-control-plane
solved: 037    kind-control-plane-c2-2966022466:kind-control-plane→c2
solved: 038 )
solved: 001 assignment
solved: 002 channel frontend on k8s•kind-control-plane-kind-control-plane-265522338
solved: 003 channel backend on k8s•kind-control-plane-kind-control-plane-265522338
solved: request-10: elapsed: 342.619µs
kubectl get applications.qos-scheduler.siemens.com -n he-codeco-acm acm-swm-app -o yaml
apiVersion: qos-scheduler.siemens.com/v1alpha1
kind: Application
metadata:
  creationTimestamp: "2025-05-29T11:33:06Z"
  generation: 200
  labels:
    application-group: acm-applicationgroup
  managedFields:
  - apiVersion: qos-scheduler.siemens.com/v1alpha1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:ownerReferences:
          .: {}
          k:{"uid":"7ee52020-77f7-417e-862e-a4926946298f"}: {}
    manager: controller
    operation: Update
    time: "2025-05-29T11:33:06Z"
  - apiVersion: qos-scheduler.siemens.com/v1alpha1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          .: {}
          f:application-group: {}
      f:spec: {}
    manager: manager
    operation: Update
    time: "2025-05-29T11:33:14Z"
  - apiVersion: qos-scheduler.siemens.com/v1alpha1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        .: {}
        f:phase: {}
    manager: controller
    operation: Update
    subresource: status
    time: "2025-05-29T11:34:23Z"
  - apiVersion: qos-scheduler.siemens.com/v1alpha1
    fieldsType: FieldsV1
    fieldsV1:
      f:spec:
        f:workloads: {}
    manager: OpenAPI-Generator
    operation: Update
    time: "2025-05-29T11:34:31Z"
  name: acm-swm-app
  namespace: he-codeco-acm
  ownerReferences:
  - apiVersion: qos-scheduler.siemens.com/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: ApplicationGroup
    name: acm-applicationgroup
    uid: 7ee52020-77f7-417e-862e-a4926946298f
  resourceVersion: "117321"
  uid: 8aaa5431-97b5-48ba-90ca-b028b2c5316b
spec:
  workloads:
  - basename: backend
    channels:
    - bandwidth: "5"
      basename: frontend
      framesize: "100"
      maxDelay: "1"
      otherWorkload:
        applicationName: acm-swm-app
        basename: front-end
        port: 9090
      sendInterval: "10"
    costs: {}
    nodeRecommendations:
      c1: 100
      c2: 54.294069834672655
      kind-control-plane: 0
    template:
      metadata: {}
      spec:
        containers:
        - image: quay.io/skupper/hello-world-backend:latest
          name: skupper-backend
          ports:
          - containerPort: 8080
            name: skupper-backend
            protocol: TCP
          resources:
            limits:
              cpu: "2"
              memory: 4Gi
  - basename: front-end
    channels:
    - bandwidth: "5"
      basename: backend
      framesize: "100"
      maxDelay: "1"
      otherWorkload:
        applicationName: acm-swm-app
        basename: backend
        port: 8080
      sendInterval: "10"
    costs: {}
    nodeRecommendations:
      c1: 100
      c2: 54.293614881850175
      kind-control-plane: 0
    template:
      metadata: {}
      spec:
        containers:
        - image: quay.io/dekelly/frontend-app:v0.0.2
          name: front-end
          ports:
          - containerPort: 8080
            protocol: TCP
          resources: {}
status:
  phase: Waiting
Edited by Konstantinos Karageorgos