@@ -31,10 +31,10 @@ var (
3131
3232// K0s holds configuration for bootstraping a k0s cluster
3333type K0s struct {
34- Version * version.Version `yaml:"version"`
35- VersionChannel string `yaml:"versionChannel" default:"stable "`
36- DynamicConfig bool `yaml:"dynamicConfig"`
37- Config dig.Mapping `yaml:"config"`
34+ Version * version.Version `yaml:"version,omitempty "`
35+ VersionChannel string `yaml:"versionChannel,omitempty "`
36+ DynamicConfig bool `yaml:"dynamicConfig,omitempty" default:"false "`
37+ Config dig.Mapping `yaml:"config,omitempty "`
3838 Metadata K0sMetadata `yaml:"-"`
3939}
4040
@@ -56,6 +56,26 @@ func (k *K0s) UnmarshalYAML(unmarshal func(interface{}) error) error {
5656 return defaults .Set (k )
5757}
5858
59+ // MarshalYAML implements yaml.Marshaler interface
60+ func (k * K0s ) MarshalYAML () (interface {}, error ) {
61+ if k == nil {
62+ return nil , nil
63+ }
64+ type k0s K0s
65+ yk := (* k0s )(k )
66+
67+ yml , err := yaml .Marshal (yk )
68+ if err != nil {
69+ return nil , fmt .Errorf ("marshal k0s: %w" , err )
70+ }
71+
72+ if string (yml ) == "{}\n " {
73+ return nil , nil
74+ }
75+
76+ return yk , nil
77+ }
78+
5979// SetDefaults sets default values
6080func (k * K0s ) SetDefaults () {
6181 if k .Version == nil {
@@ -88,7 +108,7 @@ func (k *K0s) Validate() error {
88108 return validation .ValidateStruct (k ,
89109 validation .Field (& k .Version , validation .By (validateVersion )),
90110 validation .Field (& k .DynamicConfig , validation .By (k .validateMinDynamic ())),
91- validation .Field (& k .VersionChannel , validation .In ("stable" , "latest" )),
111+ validation .Field (& k .VersionChannel , validation .In ("stable" , "latest" ), validation . When ( k . VersionChannel != "" ) ),
92112 )
93113}
94114
0 commit comments