Skip to content

Commit 468b819

Browse files
committed
feat: added allocatable property to nodes key
Signed-off-by: Aristides Gonzalez <[email protected]>
1 parent 14bb166 commit 468b819

File tree

8 files changed

+86
-30
lines changed

8 files changed

+86
-30
lines changed

.golangci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
linters-settings:
22
dupl:
3-
threshold: 100
3+
threshold: 110
44
funlen:
55
lines: 100
66
statements: 50

cmd/cyclonexdx.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,22 @@ func transformToCycloneDXBOM(kbom *model.KBOM) *cyclonedx.BOM { //nolint:funlen
169169
Name: KSOCPrefix + "k8s:node:capacity:ephemeralStorage",
170170
Value: n.Capacity.EphemeralStorage,
171171
},
172+
{
173+
Name: KSOCPrefix + "k8s:node:allocatable:cpu",
174+
Value: n.Allocatable.CPU,
175+
},
176+
{
177+
Name: KSOCPrefix + "k8s:node:allocatable:memory",
178+
Value: n.Allocatable.Memory,
179+
},
180+
{
181+
Name: KSOCPrefix + "k8s:node:allocatable:pods",
182+
Value: n.Allocatable.Pods,
183+
},
184+
{
185+
Name: KSOCPrefix + "k8s:node:allocatable:ephemeralStorage",
186+
Value: n.Allocatable.EphemeralStorage,
187+
},
172188
},
173189
})
174190
}

cmd/generate_test.go

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,15 @@ func TestGenerateKBOM(t *testing.T) {
116116
Hostname: "ip-10-0-65-00.us-east-1.compute.internal",
117117
Capacity: &model.Capacity{
118118
CPU: "2",
119-
Memory: "1973316Ki",
119+
Memory: "1970512Ki",
120120
Pods: "11",
121-
EphemeralStorage: "516052280Ki",
121+
EphemeralStorage: "524275692Ki",
122+
},
123+
Allocatable: &model.Capacity{
124+
CPU: "1930m",
125+
Memory: "1483088Ki",
126+
Pods: "11",
127+
EphemeralStorage: "482098735124",
122128
},
123129
Labels: map[string]string{
124130
"beta.kubernetes.io/arch": "amd64",
@@ -145,10 +151,16 @@ func TestGenerateKBOM(t *testing.T) {
145151
Type: "t3.small",
146152
Hostname: "ip-10-0-65-01.us-east-1.compute.internal",
147153
Capacity: &model.Capacity{
148-
CPU: "4",
149-
Memory: "4000000Ki",
150-
Pods: "45",
151-
EphemeralStorage: "516052280Ki",
154+
CPU: "2",
155+
Memory: "1970512Ki",
156+
Pods: "11",
157+
EphemeralStorage: "524275692Ki",
158+
},
159+
Allocatable: &model.Capacity{
160+
CPU: "1930m",
161+
Memory: "1483088Ki",
162+
Pods: "11",
163+
EphemeralStorage: "482098735124",
152164
},
153165
Labels: map[string]string{
154166
"beta.kubernetes.io/arch": "amd64",
@@ -364,9 +376,15 @@ var expectedOutJSON = `{
364376
"hostname": "ip-10-0-65-00.us-east-1.compute.internal",
365377
"capacity": {
366378
"cpu": "2",
367-
"memory": "1973316Ki",
379+
"memory": "1970512Ki",
368380
"pods": "11",
369-
"ephemeral_storage": "516052280Ki"
381+
"ephemeral_storage": "524275692Ki"
382+
},
383+
"allocatable": {
384+
"cpu": "1930m",
385+
"memory": "1483088Ki",
386+
"pods": "11",
387+
"ephemeral_storage": "482098735124"
370388
},
371389
"labels": {
372390
"beta.kubernetes.io/arch": "amd64",
@@ -393,10 +411,16 @@ var expectedOutJSON = `{
393411
"type": "t3.small",
394412
"hostname": "ip-10-0-65-01.us-east-1.compute.internal",
395413
"capacity": {
396-
"cpu": "4",
397-
"memory": "4000000Ki",
398-
"pods": "45",
399-
"ephemeral_storage": "516052280Ki"
414+
"cpu": "2",
415+
"memory": "1970512Ki",
416+
"pods": "11",
417+
"ephemeral_storage": "524275692Ki"
418+
},
419+
"allocatable": {
420+
"cpu": "1930m",
421+
"memory": "1483088Ki",
422+
"pods": "11",
423+
"ephemeral_storage": "482098735124"
400424
},
401425
"labels": {
402426
"beta.kubernetes.io/arch": "amd64",

cmd/schema_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ var expectedSchema = `{
214214
"capacity": {
215215
"$ref": "#/$defs/Capacity"
216216
},
217+
"allocatable": {
218+
"$ref": "#/$defs/Capacity"
219+
},
217220
"labels": {
218221
"patternProperties": {
219222
".*": {
@@ -265,6 +268,7 @@ var expectedSchema = `{
265268
"type",
266269
"hostname",
267270
"capacity",
271+
"allocatable",
268272
"labels",
269273
"annotations",
270274
"machine_id",

docs/schema.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Instances
1010
- CloudType
1111
- Creation Timestamp
1212
- Capacity
13+
- Allocatable resources
1314
- OS Version
1415
- Kernel Version
1516
- Architecture

docs/taxonomy.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,27 @@ Following Taxonomy is used by the `KBOM` tool as extension to: [https://github.c
2121

2222
## `ksoc:kbom:k8s:node` Namespace Taxonomy
2323

24-
| Property | Description |
25-
| ---------------------------------------------- | --------------------------------- |
26-
| `ksoc:kbom:k8s:node:osImage` | Node's operating system image |
27-
| `ksoc:kbom:k8s:node:arch` | Node's architecture |
28-
| `ksoc:kbom:k8s:node:kernel` | Node's kernel version |
29-
| `ksoc:kbom:k8s:node:bootId` | Node's Boot identifier |
30-
| `ksoc:kbom:k8s:node:type` | Node's type |
31-
| `ksoc:kbom:k8s:node:operatingSystem` | Node's operating system |
32-
| `ksoc:kbom:k8s:node:machineId` | Node's machine identifier |
33-
| `ksoc:kbom:k8s:node:hostname` | Node's hostname |
34-
| `ksoc:kbom:k8s:node:containerRuntimeVersion` | Node's container runtime version |
35-
| `ksoc:kbom:k8s:node:kubeletVersion` | Node's kubelet version |
36-
| `ksoc:kbom:k8s:node:kubeProxyVersion` | Node's kube proxy version |
37-
| `ksoc:kbom:k8s:node:capacity:cpu` | Node's CPU capacity |
38-
| `ksoc:kbom:k8s:node:capacity:memory` | Node's Memory capacity |
39-
| `ksoc:kbom:k8s:node:capacity:pods` | Node's Pods capacity |
40-
| `ksoc:kbom:k8s:node:capacity:ephemeralStorage` | Node's ephemeral storage capacity |
24+
| Property | Description |
25+
| -------------------------------------------------- | ------------------------------------ |
26+
| `ksoc:kbom:k8s:node:osImage` | Node's operating system image |
27+
| `ksoc:kbom:k8s:node:arch` | Node's architecture |
28+
| `ksoc:kbom:k8s:node:kernel` | Node's kernel version |
29+
| `ksoc:kbom:k8s:node:bootId` | Node's Boot identifier |
30+
| `ksoc:kbom:k8s:node:type` | Node's type |
31+
| `ksoc:kbom:k8s:node:operatingSystem` | Node's operating system |
32+
| `ksoc:kbom:k8s:node:machineId` | Node's machine identifier |
33+
| `ksoc:kbom:k8s:node:hostname` | Node's hostname |
34+
| `ksoc:kbom:k8s:node:containerRuntimeVersion` | Node's container runtime version |
35+
| `ksoc:kbom:k8s:node:kubeletVersion` | Node's kubelet version |
36+
| `ksoc:kbom:k8s:node:kubeProxyVersion` | Node's kube proxy version |
37+
| `ksoc:kbom:k8s:node:capacity:cpu` | Node's CPU capacity |
38+
| `ksoc:kbom:k8s:node:capacity:memory` | Node's Memory capacity |
39+
| `ksoc:kbom:k8s:node:capacity:pods` | Node's Pods capacity |
40+
| `ksoc:kbom:k8s:node:capacity:ephemeralStorage` | Node's ephemeral storage capacity |
41+
| `ksoc:kbom:k8s:node:allocatable:cpu` | Node's allocatable CPU |
42+
| `ksoc:kbom:k8s:node:allocatable:memory` | Node's allocatable Memory |
43+
| `ksoc:kbom:k8s:node:allocatable:pods` | Node's allocatable Pods |
44+
| `ksoc:kbom:k8s:node:allocatable:ephemeralStorage` | Node's allocatable ephemeral storage |
4145

4246
## `ksoc:kbom:pkg` Namespace Taxonomy
4347

internal/kube/kube.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@ func (k *k8sDB) AllNodes(ctx context.Context, full bool) ([]model.Node, error) {
138138
EphemeralStorage: nodes.Items[i].Status.Capacity.StorageEphemeral().String(),
139139
Pods: nodes.Items[i].Status.Capacity.Pods().String(),
140140
},
141+
Allocatable: &model.Capacity{
142+
CPU: nodes.Items[i].Status.Allocatable.Cpu().String(),
143+
Memory: nodes.Items[i].Status.Allocatable.Memory().String(),
144+
EphemeralStorage: nodes.Items[i].Status.Allocatable.StorageEphemeral().String(),
145+
Pods: nodes.Items[i].Status.Allocatable.Pods().String(),
146+
},
141147
Labels: labels,
142148
Annotations: annotations,
143149
MachineID: nodes.Items[i].Status.NodeInfo.MachineID,

internal/model/kbom.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type Node struct {
6666
Type string `json:"type"`
6767
Hostname string `json:"hostname"`
6868
Capacity *Capacity `json:"capacity"`
69+
Allocatable *Capacity `json:"allocatable"`
6970
Labels map[string]string `json:"labels"`
7071
Annotations map[string]string `json:"annotations"`
7172
MachineID string `json:"machine_id"`

0 commit comments

Comments
 (0)