Workload Placement
This topic describes APIs used to create, get, update, and delete a Workload Placement.
Create Workload Placement
Use this API to create a Workload Placement.
Method and URL
POST /api/v1/workload-placement
Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| WorkspaceName | String | The workspace under which the workload is deployed. | Mandatory |
| name | String | The unique name of the workload placement. This is used as the identifier. | Mandatory |
| clusters | array[string] | The list of cluster names where the workload is deployed. | Mandatory |
| burstDuration | String | The time duration for temporary scaling or burst activity (for example, 15m). | Mandatory |
| deletionPolicy | String | This defines what happens on delete (Delete or Retain). | Mandatory |
| helmConfigs | array[object] | The list of Helm deployments included in the workload. | Mandatory |
| manifestResources | array[object] | The list of Kubernetes manifests to apply (for example, ConfigMaps and Deployments). | Mandatory |
| cmdExec | array[object] | The list of shell/command executions to run (for example, kubectl commands). | Mandatory |
| steps | array[object] | The ordered execution steps defining workload sequence (command, helm, manifest, etc.). | Mandatory |
Helm Configuration Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| chart | String | The Helm chart identifier (repo/chart-name). | Mandatory |
| releaseName | String | The Helm release name. | Mandatory |
| releaseNamespace | String | The target namespace for Helm release. | Mandatory |
| repoName | String | The Helm repository name. | Mandatory |
| repoURL | String | The URL to the Helm chart repository. | Mandatory |
| SecretRef | String | The secret reference for Helm repository authentication. | Optional |
| values | Object | The key-value map of Helm chart values. | Optional |
Helm Flag Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| atomic | Boolean | If enabled, deletes the installation on failure, rolling back changes. | Optional |
| cleanupOnFail | Boolean | If enabled, deletes new resources created in this release when it fails. | Optional |
| createNamespace | Boolean | If enabled, automatically creates the Kubernetes Namespace if it does not already exist. | Optional |
| skipCRDs | Boolean | If enabled, skips installing Custom Resource Definitions. | Optional |
| wait | Boolean | If enabled, waits until all Pods, PVCs, Services, and minimum number of Pods of a Deployment are in a ready state before marking the release as successful. | Optional |
| timeout | String | The duration to wait for Kubernetes operation (for example, 0h10m0s for 10 minutes). | Optional |
SecretRef Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| name | String | The name of the Kubernetes secret. | Mandatory |
Values Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| replicaCount | This is the number of replicas to deploy. | Numeric | Optional |
Manifest Resources Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| name | String | The logical name for the manifest. | |
| namespace | String | The namespace where the manifest applies. | |
| apiVersion | String | The API version of the Kubernetes resource (for example, v1). | |
| kind | String | The Kubernetes resource kind (for example, ConfigMap and Deployment). | |
| data | Object | The resource content or data fields. |
Command Execution Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| name | String | The name or label for the command step. | Mandatory |
| cmd | String | The command line to execute (for example, kubectl get pods -n bookinfo). | Mandatory |
Steps Configuration Parameters
| Parameter | Parameter Type | Description | Required |
|---|---|---|---|
| name | String | The step name referencing a Helm config, manifest, or command. | Mandatory |
| type | String | The step type for deployment. The values are helm, manifest, or command. | Mandatory |
Example Request
curl -X POST --location --globoff --request 'https://{{host}}/api/v1/workload-placement' \
{
"workspaceName": "placement-workspace",
"name": "workload-placement",
"clusterNames": [
"worker-1",
"worker-2"
],
"numPlacements": 2,
"helmConfigs": [
{
"name": "grafana-test",
"chart": "grafana/grafana",
"releaseName": "grafana-test",
"releaseNamespace": "bookinfo",
"repoName": "grafana",
"repoURL": "https://grafana.github.io/helm-charts",
"version": "7.3.10",
"secretRef": {
"name": "vaidio-secret"
},
"values": {
"replicas": 1,
"service": {
"type": "ClusterIP",
"port": 3000
}
},
"helmFlags":{
"createNamespace": true,
"wait": true,
"atomic": true,
"skipCRDs": true,
"cleanupOnFail": true,
"timeout": "10m"
}
}
],
"manifestResources": [
{
"name": "sample-configmap",
"manifest": {
"apiVersion": "v1",
"kind": "ConfigMap",
"metadata": {
"namespace": "bookinfo",
"name": "sample-configmap"
},
"data": {
"database.properties": "host=localhost\nport=5432\ndatabase=myapp",
"ui.properties": "color=purple\ntheme=dark\nlanguage=en"
}
}
}
],
"cmdExec": [
{
"name": "verify-namespace",
"cmd": "kubectl get pods -n bookinfo"
}
],
"steps": [
{
"name": "verify-namespace",
"type": "command"
},
{
"name": "grafana-test",
"type": "helm"
},
{
"name": "sample-configmap",
"type": "manifest"
}
],
"gprDetails": {
"enableAutoGpuSelection": false,
"instanceType": "g6-standard-8",
"gpuShape": "NVIDIA-H100",
"numberOfGPUs": 1,
"numberOfGPUNodes": 1,
"exitDuration": "0d0h10m",
"priority": 201,
"memoryPerGpu": 23
},
"workloadTemplateName": "sample-workload-template",
"enableBurst": true
}
Example Responses
Response: Success
{
"statusCode": 200,
"status": "OK",
"message": "Success",
"data": {
"name": "workload-placement"
}
}
Response: Error
{
"statusCode":404,
"status":"UPSTREAM_REQUEST_ERROR",
"message":"Error while creating a Workload Placement",
"data":null,
"error":{
"errorKey":"UPSTREAM_REQUEST_ERROR",
"message":"Error while creating a Workload Placement",
"data":"Error: workloadtemplates.gpr.kubeslice.io \"sample-workload-templates\" not found; Reason: NotFound; Refer Documentation: https://docs.avesha.io/documentation/enterprise-egs"
}}
List Workload Placements
Use this API to list all the Workload Placements.
Method and URL
GET /api/v1/workload-placement
Example Request
curl -X GET --location --globoff --request 'https://{{host}}/api/v1/workload-placement' \
Example Responses
Response: Success
{
"statusCode":200,
"status":"OK",
"message":"Success",
"data":[{
"burstDuration":"3m",
"clusterNames":["worker-1","worker-2"],
"cmdExec":[{"cmd":"kubectl get pods -n bookinfo","name":"create-namespace"}],
"createdAt":"2025-12-01T10:42:11Z",
"deletionPolicy":"Delete",
"gprDetails":{
"exitDuration":"24h0m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":15,
"numberOfGPUNodes":1,
"numberOfGPUs":1,
"priority":101},
"helmConfigs":[{
"chart":"vaidio/cuda",
"helmFlags":{"createNamespace":true},
"name":"cuda",
"releaseName":"cuda",
"releaseNamespace":"bookinfo",
"repoName":"vaidio",
"repoURL":"https://smartscaler.nexus.aveshalabs.io/repository/vaidio/",
"secretRef":{"name":"vaidio-secret"},"values":{"replicaCount":1}}],
"manifestResources":[{
"manifest":{"apiVersion":"v1",
"data":{
"database.properties":"host=localhost\nport=5432\ndatabase=myapp\n",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en\n"},
"kind":"ConfigMap",
"metadata":{"name":"sample-configmap","namespace":"bookinfo"}},"name":"sample-configmap"}],
"name":"bookinfo-workload-template",
"numPlacements":1,
"status":{
"clusterPlacementDecisions":[{
"clusterName":"worker-1",
"currentStep":1,
"gprStatus":{},
"message":"Step cuda failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T10:42:11Z",
"stepResults":[{
"duration":"90.429929ms",
"message":"Job completed successfully",
"name":"create-namespace",
"success":true,
"type":"command"},
{
"duration":"26.38µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"cuda",
"success":false,
"type":"helm"}],
"workloadPlacementName":"bookinfo-workload-template-worker-1"}],
"placementStatus":"created"},
"steps":[
{"name":"create-namespace","type":"command"},
{"name":"cuda","type":"helm"},
{"name":"sample-configmap","type":"manifest"}],
"updatedAt":"2025-12-01T10:42:11Z",
"workloadTemplateName":"",
"workspaceName":"placement-workspace"},
{
"burstDuration":"15m",
"clusterNames":["worker-1","worker-2"],
"cmdExec":[{"cmd":"kubectl get pods -n bookinfo","name":"test-cmd"}],
"createdAt":"2025-12-01T13:05:18Z",
"deletionPolicy":"Delete",
"gprDetails":{
"enableEviction":true,
"exitDuration":"0h0m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":48,
"numberOfGPUNodes":1,
"numberOfGPUs":1,
"priority":201,
"requeueOnFailure":true},
"helmConfigs":[{
"chart":"bitnami/nginx",
"helmFlags":{
"atomic":true,"skipCRDs":true,"timeout":"0h10m0s","wait":true},
"name":"nginx-server",
"releaseName":"nginx-server",
"releaseNamespace":"placement-workspace",
"repoName":"bitnami",
"repoURL":"https://charts.bitnami.com/bitnami",
"secretRef":{"name":"grafana-secret"},
"values":{"port":80,"replicaCount":2,"type":"ClusterIP"},"version":"7.3.10"}],
"manifestResources":[{
"manifest":{
"apiVersion":"v1",
"data":{
"database.properties":"host=localhost\nport=5432\ndatabase=myapp",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en"},
"kind":"ConfigMap",
"metadata":{
"name":"sample-configmap",
"namespace":"bookinfo"}},"name":"eryre"}],
"name":"test-from-ui",
"numPlacements":2,
"status":{
"clusterPlacementDecisions":
[{
"clusterName":"worker-1",
"gprStatus":{},
"message":"Secret grafana-secret not found in controller cluster, helm config: nginx-server",
"workloadPlacementName":
"test-from-ui-worker-1"},
{
"clusterName":"worker-2",
"gprStatus":{},
"message":"Secret grafana-secret not found in controller cluster, helm config: nginx-server",
"workloadPlacementName":"test-from-ui-worker-2"}
],"placementStatus":"created"},
"steps":[{
"name":"test-cmd",
"type":"command"},
{
"name":"nginx-server",
"type":"helm"},
{
"name":"eryre",
"type":"manifest"}],
"updatedAt":"2025-12-01T13:05:18Z",
"workloadTemplateName":"",
"workspaceName":"placement-workspace"}
,{"
clusterNames":["worker-1","worker-2"],
"cmdExec":[{"cmd":"kubectl get pods -n bookinfo","name":"verify-namespace"}],
"createdAt":"2025-12-01T17:41:58Z",
"deletionPolicy":"Delete",
"enableBurst":true,
"gprDetails":{
"enableEviction":true,
"exitDuration":"0h10m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":23,"numberOfGPUNodes":1,"numberOfGPUs":1,"priority":201,"requeueOnFailure":true},
"helmConfigs":[{
"chart":"grafana/grafana",
"helmFlags":{
"atomic":true,"cleanupOnFail":true,"createNamespace":true,"skipCRDs":true,"timeout":"0h10m0s","wait":true},
"name":"grafana-test",
"releaseName":"grafana-test",
"releaseNamespace":"bookinfo",
"repoName":"grafana",
"repoURL":"https://grafana.github.io/helm-charts",
"secretRef":{"name":"vaidio-secret"},
"values":{
"replicas":1,
"service":{"port":3000,"type":"ClusterIP"}},
"version":"7.3.10"}],
"manifestResources":[{
"manifest":{"apiVersion":"v1",
"data":{
"database.properties":"host=localhost\nport=5432\ndatabase=myapp",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en"},
"kind":"ConfigMap",
"metadata":{
"name":"sample-configmap",
"namespace":"bookinfo"}},"name":"sample-configmap"}],
"name":"workload-placement",
"numPlacements":2,
"status":{
"clusterPlacementDecisions":[{
"clusterName":"worker-1",
"currentStep":1,
"gprStatus":{},
"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"78.068681ms",
"message":"Job completed successfully",
"name":"verify-namespace",
"success":true,
"type":"command"},
{
"duration":"45.039µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test",
"success":false,
"type":"helm"}],
"workloadPlacementName":
"workload-placement-worker-1"},
{
"clusterName":"worker-2",
"currentStep":1,
"gprStatus":{},
"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"6.105809ms",
"message":"Job completed successfully","name":"verify-namespace","success":true,"type":"command"},
{
"duration":"31.19µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test",
"success":false,
"type":"helm"}],"workloadPlacementName":"workload-placement-worker-2"}],
"placementStatus":"created"},
"steps":[
{"name":"verify-namespace","type":"command"},
{"name":"grafana-test","type":"helm"},
{"name":"sample-configmap","type":"manifest"}],
"updatedAt":"2025-12-01T17:41:58Z",
"workloadTemplateName":"sample-workload-template","workspaceName":"placement-workspace"}]} }]}
Response: Error
{
"statusCode": 500,
"status": "Error",
"message": "Internal Server Error",
"data": null,
"error": {
"errorKey": "",
"message": "Failed to fetch workload placements",
"data": "{\"error\":{\"Message\":\"Error retrieving workload placements\",\"Status\":500,\"DetailedError\":{\"Errormessage\":\"kubernetes API timeout\",\"Reason\":\"InternalError\",\"Details\":\"\"},\"StatusCode\":500,\"ReferenceDocumentation\":\"https://docs.avesha.io/documentation/enterprise-egs\"}}"
}
}
Get Workload Placement
Use this API to get the Workload Placement by name.
Method and URL
GET /api/v1/workload-placement/{name}
Example Request
curl -X GET --location --globoff --request 'https://{{host}}/api/v1/workload-placement/bookinfo-workload-template-worker-4-0' \
Example Responses
Response: Success
{
"statusCode":200,
"status":"OK",
"message":"Success",
"data":{
"clusterNames":["worker-1","worker-2"],
"cmdExec":[{
"cmd":"kubectl get pods -n bookinfo","name":"verify-namespace"}],
"createdAt":"2025-12-01T17:41:58Z",
"deletionPolicy":"Delete",
"enableBurst":true,
"gprDetails":{
"enableEviction":true,
"exitDuration":"0h10m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":23,
"numberOfGPUNodes":1,
"numberOfGPUs":1,
"priority":201,
"requeueOnFailure":true},
"helmConfigs":[{
"chart":"grafana/grafana",
"helmFlags":{
"atomic":true,
"cleanupOnFail":true,
"createNamespace":true,"skipCRDs":true,"timeout":"0h10m0s","wait":true},
"name":"grafana-test",
"releaseName":"grafana-test",
"releaseNamespace":"bookinfo",
"repoName":"grafana",
"repoURL":"https://grafana.github.io/helm-charts",
"secretRef":{"name":"vaidio-secret"},
"values":{"replicas":1,"service":{"port":3000,"type":"ClusterIP"}},
"version":"7.3.10"}],
"manifestResources":[{
"manifest":{
"apiVersion":"v1",
"data":{
"database.properties":"host=localhost\nport=5432\ndatabase=myapp",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en"},
"kind":"ConfigMap",
"metadata":{
"name":"sample-configmap",
"namespace":"bookinfo"}},
"name":"sample-configmap"}],
"name":"workload-placement",
"numPlacements":2,
"status":{
"clusterPlacementDecisions":[{
"clusterName":"worker-1",
"currentStep":1,
"gprStatus":{},
"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"78.068681ms",
"message":"Job completed successfully",
"name":"verify-namespace",
"success":true,
"type":"command"},
{
"duration":"45.039µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test","success":false,"type":"helm"}],
"workloadPlacementName":"workload-placement-worker-1"},
{
"clusterName":"worker-2",
"currentStep":1,
"gprStatus":{},
"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"6.105809ms",
"message":"Job completed successfully",
"name":"verify-namespace",
"success":true,
"type":"command"},
{
"duration":"31.19µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test",
"success":false,
"type":"helm"}],
"workloadPlacementName":"workload-placement-worker-2"}],
"placementStatus":"created"},
"steps":[{
"name":"verify-namespace",
"type":"command"},
{
"name":"grafana-test",
"type":"helm"},
{
"name":"sample-configmap",
"type":"manifest"}],
"updatedAt":"2025-12-01T17:41:58Z",
"workloadTemplateName":"sample-workload-template",
"workspaceName":"placement-workspace"
}}
Response: Error
{
"statusCode":404,
"status":"UPSTREAM_REQUEST_ERROR",
"message":"Error while fetching Workload Placement",
"data":null,
"error":{"errorKey":"UPSTREAM_REQUEST_ERROR",
"message":"Error while fetching Workload Placement",
"data":"Error: workloadplacements.worker.kubeslice.io \"sample-workload-placements\" not found; Reason: NotFound; Refer Documentation: https://docs.avesha.io/documentation/enterprise-egs"
}}
Update Workload Placement
Use this API to update the Workload Placement.
Method and URL
PUT /api/v1/workload-placement/{name}
Change {name} to the actual name of the workload placement you want to update. Workload placement name (from path), must match existing CR.
Update Rules
| Condition | Editable Fields | Description |
|---|---|---|
When status.provisioningStatus is Pending or Queued | All fields except workspaceName and name | The workload is not yet provisioned, so full reconfiguration is allowed. |
When status.provisioningStatus is Successful | Only burstDuration and deletionPolicy | The workload is being processed or partially deployed, only limited updates are allowed. |
When status.provisioningStatus is Completed | No fields editable | After provisioning is successful, the CR becomes immutable. |
Example Request
You can edit the Workload Placement if the GPR provisioning request is still in the pending or queued state.
Request Body Example (Allowed full update – Pending/Queued)
curl -X POST --location --globoff --request 'https://{{host}}/api/v1/workload-placement/{name}' \
{
"workspaceName": "placement-workspace",
"clusterNames": [
"worker-1",
"worker-2"
],
"numPlacements": 2,
"helmConfigs": [
{
"name": "grafana-test",
"chart": "grafana/grafana",
"releaseName": "grafana-test",
"releaseNamespace": "bookinfo",
"repoName": "grafana",
"repoURL": "https://grafana.github.io/helm-charts",
"version": "7.3.10",
"secretRef": {
"name": "vaidio-secret"
},
"values": {
"replicas": 1,
"service": {
"type": "ClusterIP",
"port": 3000
}
},
"helmFlags":{
"createNamespace": true,
"wait": true,
"atomic": true,
"skipCRDs": true,
"cleanupOnFail": true,
"timeout": "10m"
}
}
],
"manifestResources": [
{
"name": "sample-configmap",
"manifest": {
"apiVersion": "v1",
"kind": "ConfigMap",
"metadata": {
"namespace": "bookinfo",
"name": "sample-configmap"
},
"data": {
"database.properties": "host=localhost\nport=5432\ndatabase=myapp",
"ui.properties": "color=purple\ntheme=dark\nlanguage=en"
}
}
}
],
"cmdExec": [
{
"name": "verify-namespace",
"cmd": "kubectl get pods -n bookinfo"
}
],
"steps": [
{
"name": "verify-namespace",
"type": "command"
},
{
"name": "grafana-test",
"type": "helm"
},
{
"name": "sample-configmap",
"type": "manifest"
}
],
"gprDetails": {
"enableAutoGpuSelection": false,
"instanceType": "g6-standard-8",
"gpuShape": "NVIDIA-H100",
"numberOfGPUs": 1,
"numberOfGPUNodes": 1,
"exitDuration": "0d0h10m",
"priority": 201,
"memoryPerGpu": 23
},
"workloadTemplateName": "sample-workload-template",
"enableBurst": true
}
Request Body Example (Limited update – Active but not successful)
{
"burstDuration": "30m",
"deletionPolicy": "Retain"
}
Example Responses
Response: Success
{
"statusCode":200,
"status":"OK",
"message":"Success",
"data":{
"name":"sample-workload-placement"
}}
Responses: Error
{
"statusCode":400,
"status":"UPSTREAM_REQUEST_ERROR",
"message":"Cannot update fields other than helmConfigs and manifestResources",
"data":null,
"error":{
"errorKey":"UPSTREAM_REQUEST_ERROR",
"message":"Cannot update fields other than helmConfigs and manifestResources",
"data":"Error: The following fields cannot be updated when placementStatus is not pending: clusterNames, cmdExec, enableBurst, gprDetails, numPlacements, steps, workloadTemplateName, workspaceName. Only helmConfigs and manifestResources can be updated.; Refer Documentation: https://docs.avesha.io/documentation/enterprise-egs"
}}
Delete a Workload Placement
Use this API to delete a Workload Placement.
Method and URL
DELETE /api/v1/workload-placement/{name}
Change {name} to the actual name of the workload placement you want to delete.
Deletion Rules
| Condition | Editable Parameters | Description |
|---|---|---|
When status.provisioningStatus is NOT one of (Successful, Completed, Failed) | Deletion Allowed | Workload is still provisioning or pending — safe to delete. |
When status.provisioningStatus is Successful, Completed, or Failed | Deletion Unallowed | Workload lifecycle finished — deletion not allowed. |
Example Requests
curl -X DELETE --location --globoff --request 'https://{{host}}/api/v1/workload-placement/{name}' \
Example Responses
Responses: Success
{
"statusCode":200,
"status":"OK",
"message":"Success",
"data":{}
}
Example Response: Error
{
"statusCode":404,
"status":"UPSTREAM_REQUEST_ERROR",
"message":"Error while deleting Workload Placement",
"data":null,
"error":{
"errorKey":"UPSTREAM_REQUEST_ERROR",
"message":"Error while deleting Workload Placement",
"data":"Error: workloadplacements.worker.kubeslice.io \"sample-workload-placement\" not found; Reason: NotFound; Refer Documentation: https://docs.avesha.io/documentation/enterprise-egs"
}}
Get a Workload Placement in a Workspace
Method and URL
GET /api/v1/workload-placement/workspace/{name}
Example Request
GET /api/v1/workload-placement/workspace/placement-workspace
Example Responses
Response: Success
{
"statusCode":200,
"status":"OK",
"message":"Success",
"data":[{
"burstDuration":"15m",
"clusterNames":["worker-1","worker-2"],
"cmdExec":[{
"cmd":"kubectl get pods -n bookinfo","name":"test-cmd"}],
"createdAt":"2025-12-01T13:05:18Z",
"deletionPolicy":"Delete",
"gprDetails":{
"enableEviction":true,
"exitDuration":"0h0m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":48,
"numberOfGPUNodes":1,
"numberOfGPUs":1,
"priority":201,
"requeueOnFailure":true},
"helmConfigs":[{
"chart":"bitnami/nginx",
"helmFlags":{
"atomic":true,
"skipCRDs":true,
"timeout":"0h10m0s",
"wait":true},
"name":"nginx-server",
"releaseName":"nginx-server",
"releaseNamespace":"placement-workspace",
"repoName":"bitnami",
"repoURL":"https://charts.bitnami.com/bitnami",
"secretRef":{
"name":"grafana-secret"},
"values":{
"port":80,
"replicaCount":2,
"type":"ClusterIP"},
"version":"7.3.10"}],
"manifestResources":[{
"manifest":{
"apiVersion":"v1",
"data":{"database.properties":"host=localhost\nport=5432\ndatabase=myapp",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en"},
"kind":"ConfigMap",
"metadata":{
"name":"sample-configmap",
"namespace":"bookinfo"}},
"name":"eryre"}],
"name":"test-from-ui",
"numPlacements":2,
"status":{"
clusterPlacementDecisions":[{"
clusterName":"worker-1",
"gprStatus":{},
"message":"Secret grafana-secret not found in controller cluster, helm config: nginx-server","workloadPlacementName":"test-from-ui-worker-1"},
{"clusterName":"worker-2",
"gprStatus":{},
"message":"Secret grafana-secret not found in controller cluster, helm config: nginx-server","workloadPlacementName":"test-from-ui-worker-2"}],
"placementStatus":"created"},
"steps":[{
"name":"test-cmd",
"type":"command"},
{
"name":"nginx-server",
"type":"helm"
},
{
"name":"eryre",
"type":"manifest"}],
"updatedAt":"2025-12-01T13:05:18Z",
"workloadTemplateName":"",
"workspaceName":"placement-workspace"
},
{
"clusterNames":["worker-1","worker-2"],
"cmdExec":[{
"cmd":"kubectl get pods -n bookinfo",
"name":"verify-namespace"}],
"createdAt":"2025-12-01T17:41:58Z",
"deletionPolicy":"Delete",
"enableBurst":true,
"gprDetails":{
"enableEviction":true,
"exitDuration":"0h10m0s",
"gpuShape":"NVIDIA-H100",
"instanceType":"g6-standard-8",
"memoryPerGpu":23,
"numberOfGPUNodes":1,
"numberOfGPUs":1,
"priority":201,
"requeueOnFailure":true},
"helmConfigs":[
{
"chart":"grafana/grafana",
"helmFlags":{
"atomic":true,
"cleanupOnFail":true,
"createNamespace":true,
"skipCRDs":true,
"timeout":"0h10m0s",
"wait":true},
"name":"grafana-test",
"releaseName":"grafana-test",
"releaseNamespace":"bookinfo",
"repoName":"grafana",
"repoURL":"https://grafana.github.io/helm-charts",
"secretRef":{
"name":"vaidio-secret"},
"values":{"replicas":1,"service":{"port":3000,"type":"ClusterIP"}},
"version":"7.3.10"}],
"manifestResources":[{
"manifest":{"
apiVersion":"v1",
"data":{"
database.properties":"host=localhost\nport=5432\ndatabase=myapp",
"ui.properties":"color=purple\ntheme=dark\nlanguage=en"},
"kind":"ConfigMap",
"metadata":{
"name":"sample-configmap","namespace":"bookinfo"}},
"name":"sample-configmap"}],
"name":"workload-placement",
"numPlacements":2,
"status":{"
clusterPlacementDecisions":[{"clusterName":"worker-1","currentStep":1,"gprStatus":{},"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"78.068681ms",
"message":"Job completed successfully",
"name":"verify-namespace",
"success":true,
"type":"command"},
{
"duration":"45.039µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test",
"success":false,"type":"helm"}],
"workloadPlacementName":"workload-placement-worker-1"},
{
"clusterName":"worker-2",
"currentStep":1,
"gprStatus":{},
"message":"Step grafana-test failed: Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"phase":"Failed",
"startTime":"2025-12-01T17:41:58Z",
"stepResults":[{
"duration":"6.105809ms",
"message":"Job completed successfully",
"name":"verify-namespace",
"success":true,
"type":"command"},
{
"duration":"31.19µs",
"message":"Helm execution failed: failed to decode username from secret vaidio-secret: illegal base64 data at input byte 4",
"name":"grafana-test",
"success":false,
"type":"helm"}],
"workloadPlacementName":"workload-placement-worker-2"}],
"placementStatus":"created"},
"steps":[{
"name":"verify-namespace",
"type":"command"},
{
"name":"grafana-test",
"type":"helm"},
{
"name":"sample-configmap",
"type":"manifest"}],
"updatedAt":"2025-12-01T17:41:58Z",
"workloadTemplateName":"sample-workload-template",
"workspaceName":"placement-workspace"}
]}
Response: Error
{
"statusCode":404,
"status":"UPSTREAM_REQUEST_ERROR",
"message":"Error while listing Workload Placements by workspace name",
"data":null,
"error":{
"errorKey":"UPSTREAM_REQUEST_ERROR",
"message":"Error while listing Workload Placements by workspace name",
"data":"Error: sliceconfigs.controller.kubeslice.io \"pizzas\" not found; Reason: NotFound; Refer Documentation: https://docs.avesha.io/documentation/enterprise-egs"
}}