Skip to content

Commit 14aa429

Browse files
refactored the model a bit and added crds in top level helm chart
Signed-off-by: Avinash Yeddula <[email protected]>
1 parent 04d0c7b commit 14aa429

File tree

13 files changed

+123
-145
lines changed

13 files changed

+123
-145
lines changed

.gitignore

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,3 @@ tests/scale-tests/FQM_LATENCY_TEST_PLAN.md
458458
tests/scale-tests/CONCURRENT_DRAIN_TEST_PLAN.md
459459
tests/scale-tests/results/*.csv
460460
tests/scale-tests/cmd/fqm-scale-test/results/
461-
462-
# data-models Local Go tools installed via Makefile
463-
data-models/.tools/
464-
data-models/bin/
465-

.versions.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ go_tools:
4646
setup_envtest: 'latest'
4747
goimports: 'v0.30.0'
4848
crane: 'v0.20.2'
49+
controller_gen: 'v0.20.0'
4950

5051
# Protocol Buffers / gRPC
5152
protobuf:

data-models/Makefile

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -37,52 +37,32 @@ DOCKER_EXTRA_ARGS :=
3737
include ../make/common.mk
3838
include ../make/go.mk
3939

40-
# Version of controller-gen to use for generating CRD deepcopy, client, etc.
41-
CONTROLLER_GEN_VERSION := v0.17.2
42-
43-
# Local path to controller-gen binary
44-
CONTROLLER_GEN_BIN := $(PWD)/bin/controller-gen
45-
4640
# API and CRD paths
4741
API_DIR := api/v1alpha1
48-
CRD_OUTPUT_DIR := $(REPO_ROOT)/distros/kubernetes/nvsentinel/charts/data-models/crds
42+
CRD_OUTPUT_DIR := $(REPO_ROOT)/distros/kubernetes/nvsentinel/crds
4943

5044

5145
# =============================================================================
5246
# MODULE-SPECIFIC TARGETS
5347
# =============================================================================
5448

55-
# tools: Install controller-gen locally if not present or version mismatch
56-
.PHONY: tools
57-
tools:
58-
@echo "Ensuring controller-gen $(CONTROLLER_GEN_VERSION) is installed..."
59-
mkdir -p $(PWD)/bin
60-
@if [ -f "$(CONTROLLER_GEN_BIN)" ]; then \
61-
VERSION="$$( $(CONTROLLER_GEN_BIN) --version 2>/dev/null | awk '{print $$2}' )"; \
62-
if [ "$$VERSION" = "$(CONTROLLER_GEN_VERSION)" ]; then \
63-
echo "controller-gen $(CONTROLLER_GEN_VERSION) already installed."; \
64-
else \
65-
echo "controller-gen version mismatch (found $$VERSION). Installing correct version..."; \
66-
GO111MODULE=on GOPATH=$(PWD)/.tools go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION); \
67-
ln -sf $(PWD)/.tools/bin/controller-gen $(CONTROLLER_GEN_BIN); \
68-
fi \
69-
else \
70-
echo "controller-gen not found. Installing..."; \
71-
GO111MODULE=on GOPATH=$(PWD)/.tools go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION); \
72-
ln -sf $(PWD)/.tools/bin/controller-gen $(CONTROLLER_GEN_BIN); \
73-
fi
74-
7549
# generate: Generate deepcopy, CRD types, and other Kubernetes boilerplate
7650
# Depends on tools being installed
7751
.PHONY: generate
78-
generate: tools
79-
@echo "Generating deepcopy files for API types..."
80-
@$(CONTROLLER_GEN_BIN) object paths=./$(API_DIR)
81-
@echo "Generating CRD YAML manifests..."
82-
@$(CONTROLLER_GEN_BIN) crd paths=./$(API_DIR) output:crd:artifacts:config=./$(API_DIR)/crds
83-
@echo "Moving CRDs to Helm chart directory..."
52+
generate: ## Generate CRDs and move them to Helm chart directory
53+
@echo "Generating CRDs for $(API_DIR)..."
54+
@# Install controller-gen if not present
55+
@which controller-gen > /dev/null || (echo "Installing controller-gen..." && \
56+
go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION))
57+
@# Generate deepcopy files for API types
58+
go run sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION) object paths=./$(API_DIR)
59+
@# Generate CRDs directly into API_DIR
60+
go run sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_GEN_VERSION) \
61+
crd paths=./$(API_DIR) output:crd:dir=./$(API_DIR)
62+
@# Move generated CRDs to Helm chart directory
63+
@echo "Moving generated CRDs to $(CRD_OUTPUT_DIR)..."
8464
@mkdir -p $(CRD_OUTPUT_DIR)
85-
@mv ./$(API_DIR)/crds/*.yaml $(CRD_OUTPUT_DIR)/ || true
65+
@mv ./$(API_DIR)/*.yaml $(CRD_OUTPUT_DIR)/ || true
8666
@echo "CRDs generated and moved to $(CRD_OUTPUT_DIR)"
8767
@ls -1 $(CRD_OUTPUT_DIR)/*.yaml || echo "No CRD YAMLs generated"
8868

data-models/api/v1alpha1/groupversion_info.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
// Package v1alpha1 contains API Schema definitions for the data-models v1alpha1 API group
15+
// Package v1alpha1 contains API Schema definitions for the healthevents v1alpha1 API group
1616
// +kubebuilder:object:generate=true
17-
// +groupName=data-models.dgxc.nvidia.com
17+
// +groupName=healthevents.dgxc.nvidia.com
1818
package v1alpha1
1919

2020
import (
@@ -24,7 +24,7 @@ import (
2424

2525
var (
2626
// GroupVersion is group version used to register these objects
27-
GroupVersion = schema.GroupVersion{Group: "data-models.dgxc.nvidia.com", Version: "v1alpha1"}
27+
GroupVersion = schema.GroupVersion{Group: "healthevents.dgxc.nvidia.com", Version: "v1alpha1"}
2828

2929
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
3030
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

data-models/api/v1alpha1/healthstatus_types.go

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,14 @@
1515
package v1alpha1
1616

1717
import (
18+
"github.com/nvidia/nvsentinel/data-models/pkg/model"
1819
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1920
)
2021

2122
// +kubebuilder:validation:Enum=NotStarted;InProgress;Failed;Succeeded;AlreadyDrained;UnQuarantined;Quarantined;AlreadyQuarantined;Cancelled
22-
type Status string
23-
24-
const (
25-
StatusNotStarted Status = "NotStarted"
26-
StatusInProgress Status = "InProgress"
27-
StatusFailed Status = "Failed"
28-
StatusSucceeded Status = "Succeeded"
29-
AlreadyDrained Status = "AlreadyDrained"
30-
31-
UnQuarantined Status = "UnQuarantined"
32-
Quarantined Status = "Quarantined"
33-
AlreadyQuarantined Status = "AlreadyQuarantined"
34-
Cancelled Status = "Cancelled"
35-
)
36-
37-
// HealthEventSpec defines the desired state of HealthStatus
38-
type HealthEventSpec struct {
39-
// Unique identifier for the health event
40-
EventID string `json:"eventID"`
41-
42-
// Node associated with this health event
43-
NodeName string `json:"nodeName"`
44-
}
45-
46-
// OperationStatus captures the status of a remediation operation
47-
type OperationStatus struct {
48-
// Current operation status
49-
Status Status `json:"status"`
23+
type Status = model.Status
5024

51-
// Optional human-readable message
52-
Message string `json:"message,omitempty"`
53-
}
25+
type OperationStatus = model.OperationStatus
5426

5527
// HealthEventSnapshot represents a read-only snapshot of a reported health event.
5628
// This data is observational and originates outside Kubernetes.
@@ -113,6 +85,17 @@ type HealthEventStatus struct {
11385
Remediation *RemediationStatus `json:"remediation,omitempty"`
11486
}
11587

88+
// HealthEventSpec defines the desired state of HealthStatus
89+
type HealthEventSpec struct {
90+
// Unique identifier for the health event
91+
// +kubebuilder:validation:Required
92+
EventID string `json:"eventID"`
93+
94+
// Node associated with this health event
95+
// +kubebuilder:validation:Required
96+
NodeName string `json:"nodeName"`
97+
}
98+
11699
// +kubebuilder:object:root=true
117100
// +kubebuilder:subresource:status
118101
type HealthStatus struct {

data-models/api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 0 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

data-models/go.mod

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,24 @@ require (
1212
)
1313

1414
require (
15-
github.com/Masterminds/semver/v3 v3.4.0 // indirect
1615
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
1716
github.com/go-logr/logr v1.4.3 // indirect
1817
github.com/json-iterator/go v1.1.12 // indirect
18+
github.com/kr/text v0.2.0 // indirect
1919
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
2020
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
21+
github.com/onsi/gomega v1.38.3 // indirect
22+
github.com/spf13/pflag v1.0.10 // indirect
2123
github.com/x448/float16 v0.8.4 // indirect
2224
go.yaml.in/yaml/v2 v2.4.3 // indirect
23-
golang.org/x/net v0.47.0 // indirect
24-
golang.org/x/sys v0.38.0 // indirect
25-
golang.org/x/text v0.31.0 // indirect
25+
golang.org/x/net v0.48.0 // indirect
26+
golang.org/x/sys v0.39.0 // indirect
27+
golang.org/x/text v0.32.0 // indirect
28+
golang.org/x/tools v0.40.0 // indirect
2629
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 // indirect
30+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2731
gopkg.in/inf.v0 v0.9.1 // indirect
32+
k8s.io/api v0.35.0 // indirect
2833
k8s.io/klog/v2 v2.130.1 // indirect
2934
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
3035
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect

data-models/go.sum

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
22
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
3+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
34
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
45
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
56
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -11,19 +12,24 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
1112
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
1213
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
1314
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
14-
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
15-
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
1615
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
1716
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
1817
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
1918
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
2019
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
21-
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
22-
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
20+
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8=
21+
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
2322
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2423
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
2524
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
2625
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
26+
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
27+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
28+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
29+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
30+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
31+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
32+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
2733
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
2834
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
2935
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -32,12 +38,14 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFd
3238
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
3339
github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
3440
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
35-
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
36-
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
41+
github.com/onsi/gomega v1.38.3 h1:eTX+W6dobAYfFeGC2PV6RwXRu/MyT+cQguijutvkpSM=
42+
github.com/onsi/gomega v1.38.3/go.mod h1:ZCU1pkQcXDO5Sl9/VVEGlDyp+zm0m1cmeG5TOzLgdh4=
3743
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3844
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
39-
github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
40-
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
45+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
46+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
47+
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
48+
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
4149
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
4250
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
4351
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
@@ -60,18 +68,18 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
6068
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
6169
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
6270
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
63-
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
64-
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
65-
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
66-
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
67-
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
68-
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
69-
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
70-
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
71-
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
72-
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
73-
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
74-
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
71+
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
72+
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
73+
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
74+
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
75+
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
76+
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
77+
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
78+
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
79+
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
80+
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
81+
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
82+
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
7583
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
7684
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
7785
google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 h1:Wgl1rcDNThT+Zn47YyCXOXyX/COgMTIdhJ717F0l4xk=
@@ -80,14 +88,15 @@ google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
8088
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
8189
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
8290
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
83-
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
8491
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
92+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
93+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
8594
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
8695
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
8796
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
8897
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
89-
k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
90-
k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
98+
k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
99+
k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
91100
k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
92101
k8s.io/apimachinery v0.35.0/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
93102
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package v1alpha1
2+
3+
import (
4+
"github.com/nvidia/nvsentinel/data-models/api/v1alpha1"
5+
"github.com/nvidia/nvsentinel/data-models/pkg/model"
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
)
8+
9+
func ToCRD(he *model.HealthEventWithStatus) *v1alpha1.HealthStatus {
10+
var nodeQuarantined *v1alpha1.Status
11+
if he.HealthEventStatus.NodeQuarantined != nil {
12+
nq := v1alpha1.Status(*he.HealthEventStatus.NodeQuarantined)
13+
nodeQuarantined = &nq
14+
}
15+
16+
var lastRemediation *metav1.Time
17+
if he.HealthEventStatus.LastRemediationTimestamp != nil {
18+
t := metav1.NewTime(*he.HealthEventStatus.LastRemediationTimestamp)
19+
lastRemediation = &t
20+
}
21+
22+
return &v1alpha1.HealthStatus{
23+
Spec: v1alpha1.HealthEventSpec{
24+
EventID: "", // TODO: you can populate from HealthEvent, some sought of ID
25+
NodeName: he.HealthEvent.NodeName, // populate node name
26+
},
27+
Status: v1alpha1.HealthEventStatus{
28+
Remediation: &v1alpha1.RemediationStatus{
29+
NodeQuarantined: nodeQuarantined,
30+
UserPodsEvictionStatus: &v1alpha1.OperationStatus{
31+
Status: v1alpha1.Status(he.HealthEventStatus.UserPodsEvictionStatus.Status),
32+
Message: he.HealthEventStatus.UserPodsEvictionStatus.Message,
33+
},
34+
FaultRemediated: he.HealthEventStatus.FaultRemediated,
35+
LastRemediationTimestamp: lastRemediation,
36+
},
37+
Event: nil, // TODO: populate it from he.HealthEvent
38+
39+
},
40+
}
41+
}

data-models/pkg/model/health_event_extentions.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ const (
3838
)
3939

4040
type OperationStatus struct {
41-
Status Status `bson:"status"`
42-
Message string `bson:"message,omitempty"`
41+
Status Status `bson:"status" json:"status,omitempty"`
42+
Message string `bson:"message,omitempty" json:"message,omitempty"`
4343
}
4444

4545
type HealthEventStatus struct {

0 commit comments

Comments
 (0)