Config: prevent mixing yaml and db data (v2) (#19082)
This commit is contained in:
parent
58200dc936
commit
9470ac786d
3 changed files with 16 additions and 10 deletions
18
cmd/setup.go
18
cmd/setup.go
|
|
@ -142,15 +142,16 @@ func isWritable(filePath string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func configureCircuits(conf []config.Named) error {
|
||||
func configureCircuits(conf *[]config.Named) error {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.Circuits) {
|
||||
conf = &[]config.Named{}
|
||||
if err := settings.Yaml(keys.Circuits, new([]map[string]any), &conf); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
children := slices.Clone(conf)
|
||||
children := slices.Clone(*conf)
|
||||
|
||||
// TODO: check for circular references
|
||||
NEXT:
|
||||
|
|
@ -641,6 +642,7 @@ func configureGo(conf []globalconfig.Go) error {
|
|||
func configureHEMS(conf *globalconfig.Hems, site *core.Site, httpd *server.HTTPd) error {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.Hems) {
|
||||
conf = new(globalconfig.Hems)
|
||||
if err := settings.Yaml(keys.Hems, new(map[string]any), &conf); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -687,6 +689,7 @@ func configureMDNS(conf globalconfig.Network) error {
|
|||
func configureEEBus(conf *eebus.Config) error {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.EEBus) {
|
||||
conf = new(eebus.Config)
|
||||
if err := settings.Yaml(keys.EEBus, new(map[string]any), &conf); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -711,6 +714,7 @@ func configureEEBus(conf *eebus.Config) error {
|
|||
func configureMessengers(conf *globalconfig.Messaging, vehicles push.Vehicles, valueChan chan<- util.Param, cache *util.ParamCache) (chan push.Event, error) {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.Messaging) {
|
||||
conf = new(globalconfig.Messaging)
|
||||
if err := settings.Yaml(keys.Messaging, new(map[string]any), &conf); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -797,9 +801,10 @@ func configureSolarTariff(conf []config.Typed, t *api.Tariff) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func configureTariffs(conf globalconfig.Tariffs) (*tariff.Tariffs, error) {
|
||||
func configureTariffs(conf *globalconfig.Tariffs) (*tariff.Tariffs, error) {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.Tariffs) {
|
||||
conf = new(globalconfig.Tariffs)
|
||||
if err := settings.Yaml(keys.Tariffs, new(map[string]any), &conf); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -847,7 +852,7 @@ func configureDevices(conf globalconfig.All) error {
|
|||
if err := configureVehicles(conf.Vehicles); err != nil {
|
||||
return &ClassError{ClassVehicle, err}
|
||||
}
|
||||
if err := configureCircuits(conf.Circuits); err != nil {
|
||||
if err := configureCircuits(&conf.Circuits); err != nil {
|
||||
return &ClassError{ClassCircuit, err}
|
||||
}
|
||||
return nil
|
||||
|
|
@ -856,7 +861,8 @@ func configureDevices(conf globalconfig.All) error {
|
|||
func configureModbusProxy(conf *[]globalconfig.ModbusProxy) error {
|
||||
// migrate settings
|
||||
if settings.Exists(keys.ModbusProxy) {
|
||||
if err := settings.Yaml(keys.ModbusProxy, new([]map[string]any), conf); err != nil {
|
||||
conf = &[]globalconfig.ModbusProxy{}
|
||||
if err := settings.Yaml(keys.ModbusProxy, new([]map[string]any), &conf); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
@ -898,7 +904,7 @@ func configureSiteAndLoadpoints(conf *globalconfig.All) (*core.Site, error) {
|
|||
return nil, &ClassError{ClassLoadpoint, err}
|
||||
}
|
||||
|
||||
tariffs, err := configureTariffs(conf.Tariffs)
|
||||
tariffs, err := configureTariffs(&conf.Tariffs)
|
||||
if err != nil {
|
||||
return nil, &ClassError{ClassTariff, err}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ loadpoints:
|
|||
|
||||
suite.Require().NoError(viper.UnmarshalExact(&conf))
|
||||
|
||||
suite.Require().NoError(configureCircuits(conf.Circuits))
|
||||
suite.Require().NoError(configureCircuits(&conf.Circuits))
|
||||
suite.Require().Len(config.Circuits().Devices(), 2)
|
||||
suite.Require().False(config.Circuits().Devices()[0].Instance().HasMeter())
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ loadpoints:
|
|||
|
||||
suite.Require().NoError(viper.UnmarshalExact(&conf))
|
||||
|
||||
suite.Require().NoError(configureCircuits(conf.Circuits))
|
||||
suite.Require().NoError(configureCircuits(&conf.Circuits))
|
||||
suite.Require().Len(config.Circuits().Devices(), 2)
|
||||
suite.Require().False(config.Circuits().Devices()[0].Instance().HasMeter())
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ loadpoints:
|
|||
|
||||
suite.Require().NoError(viper.UnmarshalExact(&conf))
|
||||
|
||||
suite.Require().NoError(configureCircuits(conf.Circuits))
|
||||
suite.Require().NoError(configureCircuits(&conf.Circuits))
|
||||
suite.Require().Len(config.Circuits().Devices(), 1)
|
||||
|
||||
// mock charger
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func runTariff(cmd *cobra.Command, args []string) {
|
|||
fatal(err)
|
||||
}
|
||||
|
||||
tariffs, err := configureTariffs(conf.Tariffs)
|
||||
tariffs, err := configureTariffs(&conf.Tariffs)
|
||||
if err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue