Skip to content

Commit 70aa0ac

Browse files
authored
CON-12995 Add GPU node pool resources to node pool template response (#924)
* CON-12995 Add GPU node pool resources to node pool template response * CON-12995 Add GetNodePoolTemplate GPU test
1 parent 4f83793 commit 70aa0ac

File tree

2 files changed

+80
-7
lines changed

2 files changed

+80
-7
lines changed

kubernetes.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,12 @@ type KubernetesNodePoolResources struct {
482482
Pods int64 `json:"pods,omitempty"`
483483
}
484484

485+
// KubernetesNodePoolGPUResources exposes model and GPU count of a node pool template
486+
type KubernetesNodePoolGPUResources struct {
487+
Model string `json:"model"`
488+
Count int64 `json:"count"`
489+
}
490+
485491
// KubernetesNode represents a Node in a node pool in a Kubernetes cluster.
486492
type KubernetesNode struct {
487493
ID string `json:"id,omitempty"`
@@ -495,13 +501,14 @@ type KubernetesNode struct {
495501

496502
// KubernetesNodeTemplate represents a template in a node pool in a Kubernetes cluster.
497503
type KubernetesNodeTemplate struct {
498-
ClusterUUID string `json:"cluster_uuid,omitempty"`
499-
Name string `json:"name,omitempty"`
500-
Slug string `json:"slug,omitempty"`
501-
Labels map[string]string `json:"labels,omitempty"`
502-
Taints []string `json:"taints,omitempty"`
503-
Capacity *KubernetesNodePoolResources `json:"capacity,omitempty"`
504-
Allocatable *KubernetesNodePoolResources `json:"allocatable,omitempty"`
504+
ClusterUUID string `json:"cluster_uuid,omitempty"`
505+
Name string `json:"name,omitempty"`
506+
Slug string `json:"slug,omitempty"`
507+
Labels map[string]string `json:"labels,omitempty"`
508+
Taints []string `json:"taints,omitempty"`
509+
Capacity *KubernetesNodePoolResources `json:"capacity,omitempty"`
510+
Allocatable *KubernetesNodePoolResources `json:"allocatable,omitempty"`
511+
Gpu *KubernetesNodePoolGPUResources `json:"gpu,omitempty"`
505512
}
506513

507514
// KubernetesNodeStatus represents the status of a particular Node in a Kubernetes cluster.

kubernetes_test.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,6 +1444,72 @@ func TestKubernetesClusters_GetNodePoolTemplate(t *testing.T) {
14441444

14451445
}
14461446

1447+
func TestKubernetesClusters_GetNodePoolTemplate_WithGPUs(t *testing.T) {
1448+
setup()
1449+
defer teardown()
1450+
kubeSvc := client.Kubernetes
1451+
want := &KubernetesNodePoolTemplate{
1452+
Template: &KubernetesNodeTemplate{
1453+
ClusterUUID: "8d91899c-0739-4a1a-acc5-deadbeefbb8a",
1454+
Name: "pool-a",
1455+
Slug: "s-1vcpu-2gb",
1456+
Taints: []string{"some-key=some-value:NoSchedule"},
1457+
Labels: map[string]string{
1458+
"some-label": "some-value",
1459+
},
1460+
Capacity: &KubernetesNodePoolResources{
1461+
CPU: 1,
1462+
Memory: "2048Mi",
1463+
Pods: 110,
1464+
},
1465+
Allocatable: &KubernetesNodePoolResources{
1466+
CPU: 390,
1467+
Memory: "1024Mi",
1468+
Pods: 110,
1469+
},
1470+
Gpu: &KubernetesNodePoolGPUResources{
1471+
Model: "mi300x",
1472+
Count: 1,
1473+
},
1474+
},
1475+
}
1476+
jBlob := `
1477+
{
1478+
"template": {
1479+
"cluster_uuid": "8d91899c-0739-4a1a-acc5-deadbeefbb8a",
1480+
"name": "pool-a",
1481+
"slug": "s-1vcpu-2gb",
1482+
"labels": {
1483+
"some-label": "some-value"
1484+
},
1485+
"taints": ["some-key=some-value:NoSchedule"],
1486+
"capacity": {
1487+
"cpu": 1,
1488+
"memory": "2048Mi",
1489+
"pods": 110
1490+
},
1491+
"allocatable": {
1492+
"cpu": 390,
1493+
"memory": "1024Mi",
1494+
"pods": 110
1495+
},
1496+
"gpu": {
1497+
"model": "mi300x",
1498+
"count": 1
1499+
}
1500+
}
1501+
}
1502+
`
1503+
mux.HandleFunc("/v2/kubernetes/clusters/8d91899c-0739-4a1a-acc5-deadbeefbb8a/node_pools_template/pool-a", func(w http.ResponseWriter, r *http.Request) {
1504+
testMethod(t, r, http.MethodGet)
1505+
fmt.Fprint(w, jBlob)
1506+
})
1507+
got, _, err := kubeSvc.GetNodePoolTemplate(ctx, "8d91899c-0739-4a1a-acc5-deadbeefbb8a", "pool-a")
1508+
require.NoError(t, err)
1509+
require.Equal(t, want, got)
1510+
1511+
}
1512+
14471513
func TestKubernetesClusters_ListNodePools(t *testing.T) {
14481514
setup()
14491515
defer teardown()

0 commit comments

Comments
 (0)