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