11package v1alpha1
22
33import (
4+ "bytes"
45 "crypto/sha256"
56 "fmt"
67 "path"
@@ -89,7 +90,7 @@ func tryFillMissingSections(
8990 }
9091}
9192
92- func buildConfiguration (cr * Storage , crDB * Database ) (string , error ) {
93+ func buildConfiguration (cr * Storage , crDB * Database ) ([] byte , error ) {
9394 // If any kind of configuration exists on Database object, then
9495 // it will be used to fully override storage object.
9596 // This is a temporary solution that should go away when it would
@@ -101,34 +102,24 @@ func buildConfiguration(cr *Storage, crDB *Database) (string, error) {
101102 rawYamlConfiguration = cr .Spec .Configuration
102103 }
103104
104- dynconfig , err := TryParseDynconfig (rawYamlConfiguration )
105- if err == nil {
106- config , err := yaml .Marshal (dynconfig .Config )
107- return string (config ), err
105+ config := make (map [string ]interface {})
106+ if err := yaml .Unmarshal ([]byte (rawYamlConfiguration ), & config ); err != nil {
107+ return []byte ("" ), err
108108 }
109109
110- config := make (map [string ]interface {})
111- err = yaml .Unmarshal ([]byte (rawYamlConfiguration ), & config )
112- if err != nil {
113- return "" , err
110+ dynconfig := schema.Dynconfig {}
111+ if err := TryParseDynconfig (rawYamlConfiguration , & dynconfig ); err == nil {
112+ return yaml .Marshal (dynconfig .Config )
114113 }
115114
116115 generatedConfig := generateSomeDefaults (cr , crDB )
117116 tryFillMissingSections (config , generatedConfig )
118117
119- data , err := yaml .Marshal (config )
120- if err != nil {
121- return "" , err
122- }
123-
124- return string (data ), nil
118+ return yaml .Marshal (config )
125119}
126120
127- func TryParseDynconfig (rawYamlConfiguration string ) (schema.Dynconfig , error ) {
128- dynconfig := schema.Dynconfig {}
129- err := yaml .Unmarshal ([]byte (rawYamlConfiguration ), & dynconfig )
130- if err != nil {
131- return schema.Dynconfig {}, err
132- }
133- return dynconfig , nil
121+ func TryParseDynconfig (rawYamlConfiguration string , dynconfig * schema.Dynconfig ) error {
122+ dec := yaml .NewDecoder (bytes .NewReader ([]byte (rawYamlConfiguration )))
123+ dec .KnownFields (true )
124+ return dec .Decode (& dynconfig )
134125}
0 commit comments