fix(clustertool): customise talconfig validation error/warn parsing
This commit is contained in:
@@ -4,7 +4,6 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
@@ -12,7 +11,6 @@ import (
|
|||||||
|
|
||||||
talhelperCfg "github.com/budimanjojo/talhelper/v3/pkg/config"
|
talhelperCfg "github.com/budimanjojo/talhelper/v3/pkg/config"
|
||||||
"github.com/budimanjojo/talhelper/v3/pkg/generate"
|
"github.com/budimanjojo/talhelper/v3/pkg/generate"
|
||||||
"github.com/budimanjojo/talhelper/v3/pkg/substitute"
|
|
||||||
"github.com/budimanjojo/talhelper/v3/pkg/talos"
|
"github.com/budimanjojo/talhelper/v3/pkg/talos"
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
sideroConfig "github.com/siderolabs/talos/pkg/machinery/config"
|
sideroConfig "github.com/siderolabs/talos/pkg/machinery/config"
|
||||||
@@ -119,27 +117,12 @@ func talhelperGenConfig() error {
|
|||||||
|
|
||||||
func validateTalConfig(argsInt []string) error {
|
func validateTalConfig(argsInt []string) error {
|
||||||
cfg := helper.TalConfigFile
|
cfg := helper.TalConfigFile
|
||||||
validateTHNoSubstitute := false
|
|
||||||
args := []string{}
|
|
||||||
if len(args) > 0 {
|
|
||||||
cfg = args[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info().Msg("start loading and validating config file")
|
log.Info().Msgf("start loading and validating Talconfig file for cluster %s", helper.ClusterName)
|
||||||
slog.Debug(fmt.Sprintf("reading %s", cfg))
|
log.Debug().Msg(fmt.Sprintf("reading %s", cfg))
|
||||||
cfgByte, err := os.ReadFile(cfg)
|
cfgByte, err := os.ReadFile(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err).Msgf("failed to read config file: %s", err)
|
log.Fatal().Err(err).Msgf("failed to read Talconfig file %s: %s", helper.TalConfigFile, err)
|
||||||
}
|
|
||||||
|
|
||||||
if !validateTHNoSubstitute {
|
|
||||||
if err := substitute.LoadEnvFromFiles([]string{helper.ClusterEnvFile}); err != nil {
|
|
||||||
log.Fatal().Err(err).Msg("failed to load env file: %s")
|
|
||||||
}
|
|
||||||
cfgByte, err = substitute.SubstituteEnvFromByte(cfgByte)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal().Err(err).Msg("failed trying to substitute env: %s")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
errs, warns, err := talhelperCfg.ValidateFromByte(cfgByte)
|
errs, warns, err := talhelperCfg.ValidateFromByte(cfgByte)
|
||||||
@@ -147,19 +130,29 @@ func validateTalConfig(argsInt []string) error {
|
|||||||
log.Fatal().Err(err).Msgf("failed to validate talhelper config file: %s", err)
|
log.Fatal().Err(err).Msgf("failed to validate talhelper config file: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(errs) > 0 || len(warns) > 0 {
|
if len(errs) > 0 {
|
||||||
color.Red("There are issues with your talhelper config file:")
|
log.Error().Msg("There are issues with your talhelper config file:")
|
||||||
grouped := make(map[string][]string)
|
groupedWarns := make(map[string][]string)
|
||||||
for _, v := range errs {
|
for _, v := range errs {
|
||||||
grouped[v.Field] = append(grouped[v.Field], v.Message.Error())
|
groupedWarns[v.Field] = append(groupedWarns[v.Field], v.Message.Error())
|
||||||
}
|
}
|
||||||
for _, v := range warns {
|
for field, list := range groupedWarns {
|
||||||
grouped[v.Field] = append(grouped[v.Field], v.Message)
|
|
||||||
}
|
|
||||||
for field, list := range grouped {
|
|
||||||
color.Yellow("field: %q\n", field)
|
color.Yellow("field: %q\n", field)
|
||||||
for _, l := range list {
|
for _, l := range list {
|
||||||
log.Info().Msgf(l + "\n")
|
log.Error().Msgf(l + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(warns) > 0 {
|
||||||
|
log.Warn().Msg("There might be some issues with your talhelper config file:")
|
||||||
|
groupedErr := make(map[string][]string)
|
||||||
|
for _, v := range warns {
|
||||||
|
groupedErr[v.Field] = append(groupedErr[v.Field], v.Message)
|
||||||
|
}
|
||||||
|
for field, list := range groupedErr {
|
||||||
|
color.Yellow("field: %q\n", field)
|
||||||
|
for _, l := range list {
|
||||||
|
log.Warn().Msgf(l + "\n")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user