Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 1 addition & 20 deletions apis/cloud-init.openchami.io/v1/group_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
// GroupSpec defines the desired state of Group.
type GroupSpec struct { //nolint: revive
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Template string `json:"template" yaml:"template" validate:"required"`
Template string `json:"template,omitempty" yaml:"template,omitempty"`
MetaData map[string]string `json:"metaData,omitempty" yaml:"metaData,omitempty"`
OSVersion string `json:"osVersion,omitempty" yaml:"osVersion,omitempty"`
}
Expand Down Expand Up @@ -84,7 +84,7 @@
return merged
}

func hasTemplateVariableData(metadata map[string]interface{}, variable string) bool {

Check failure on line 87 in apis/cloud-init.openchami.io/v1/group_types.go

View workflow job for this annotation

GitHub Actions / lint

func hasTemplateVariableData is unused (unused)
current := any(metadata)
for _, part := range strings.Split(variable, ".") {
switch typed := current.(type) {
Expand Down Expand Up @@ -135,7 +135,7 @@

// sampleMetadata returns example metadata for validation.
// Returns a cloud-init datasource-compliant structure wrapped in 'ds' key.
func sampleMetadata() map[string]any {

Check failure on line 138 in apis/cloud-init.openchami.io/v1/group_types.go

View workflow job for this annotation

GitHub Actions / lint

func sampleMetadata is unused (unused)
vendordata := map[string]any{
"version": "1.0",
"cloud_init_base_url": "http://cloud-init.local",
Expand Down Expand Up @@ -219,28 +219,9 @@

// Validate implements custom validation logic for Group.
func (r *Group) Validate(ctx context.Context) error { //nolint: revive
if r.Spec.Template == "" {
r.Status.Valid = false
r.Status.ErrorMessage = "template is required"
r.trackTemplateVersion(false, "template is required")
return fmt.Errorf("template is required")
}

vars := extractTemplateVariables(r.Spec.Template)
r.Status.RequiredVariables = vars
merged := MergeMetadata(sampleMetadata(), r.Spec.MetaData)
missing := []string{}
for _, v := range vars {
if !hasTemplateVariableData(merged, v) {
missing = append(missing, v)
}
}
if len(missing) > 0 {
r.Status.Valid = false
r.Status.ErrorMessage = "missing required variables: " + fmt.Sprintf("%v", missing)
r.trackTemplateVersion(false, r.Status.ErrorMessage)
return fmt.Errorf("%s", r.Status.ErrorMessage)
}

r.Status.Valid = true
r.Status.ErrorMessage = ""
Expand Down
6 changes: 3 additions & 3 deletions cmd/client/main.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions cmd/client/version_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions cmd/server/version_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading