Correctly handle updating server data

This commit is contained in:
Dane Everitt 2019-12-21 21:02:02 -08:00
parent d583c1d53e
commit 189289ad5f
No known key found for this signature in database
GPG Key ID: EEA66103B3D71F53
6 changed files with 16 additions and 14 deletions

View File

@ -2,7 +2,8 @@ package config
import (
"fmt"
"github.com/mcuadros/go-defaults"
"github.com/creasty/defaults"
"github.com/pkg/errors"
"go.uber.org/zap"
"gopkg.in/yaml.v2"
"io/ioutil"
@ -189,8 +190,6 @@ func (c *Configuration) SetDefaults() {
Sftp: &SftpConfiguration{},
}
defaults.SetDefaults(c.System.Sftp)
// By default the internal webserver should bind to all interfaces and
// be served on port 8080.
c.Api = &ApiConfiguration{
@ -222,9 +221,10 @@ func (c *Configuration) SetDefaults() {
Interfaces: &dockerNetworkInterfaces{},
},
}
defaults.SetDefaults(c.Docker)
defaults.SetDefaults(c.Docker.Network)
defaults.SetDefaults(c.Docker.Network.Interfaces)
if err := defaults.Set(c); err != nil {
zap.S().Warnw("error setting defaults for configuration", zap.Error(errors.WithStack(err)))
}
}
// Reads the configuration from the provided file and returns the configuration

1
go.mod
View File

@ -35,7 +35,6 @@ require (
github.com/imdario/mergo v0.3.8
github.com/julienschmidt/httprouter v1.2.0
github.com/magiconair/properties v1.8.1
github.com/mcuadros/go-defaults v1.1.0
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee
github.com/onsi/ginkgo v1.8.0 // indirect

2
go.sum
View File

@ -74,8 +74,6 @@ github.com/magefile/mage v1.9.0 h1:t3AU2wNwehMCW97vuqQLtw6puppWXHO+O2MHo5a50XE=
github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mcuadros/go-defaults v1.1.0 h1:K0LgSNfsSUrbEHR7HgfZpOHVWYsPnYh/dKTA7pGeZ/I=
github.com/mcuadros/go-defaults v1.1.0/go.mod h1:vl9cJiNIIHISQeboDhZBUCiCOa3GkeioLe3Y95NXF6Y=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee h1:IquUs3fIykn10zWDIyddanhpTqBvAHMaPnFhQuyYw5U=

View File

@ -30,7 +30,7 @@ func New(data []byte) (*Installer, error) {
Uuid: getString(data, "uuid"),
Suspended: false,
State: server.ProcessOfflineState,
Invocation: "",
Invocation: getString(data, "invocation"),
EnvVars: make(map[string]string),
Build: server.BuildSettings{
MemoryLimit: getInt(data, "build", "memory"),

View File

@ -2,7 +2,7 @@ package server
import (
"fmt"
"github.com/mcuadros/go-defaults"
"github.com/creasty/defaults"
"github.com/patrickmn/go-cache"
"github.com/pkg/errors"
"github.com/pterodactyl/wings/api"
@ -211,9 +211,8 @@ func (s *Server) Init() {
func FromConfiguration(data []byte, cfg *config.SystemConfiguration) (*Server, error) {
s := new(Server)
defaults.SetDefaults(s)
s.CrashDetection = CrashDetection{
Enabled: true,
if err := defaults.Set(s); err != nil {
return nil, err
}
s.Init()

View File

@ -3,6 +3,7 @@ package server
import (
"encoding/json"
"github.com/buger/jsonparser"
"github.com/creasty/defaults"
"github.com/imdario/mergo"
"github.com/pkg/errors"
"go.uber.org/zap"
@ -29,6 +30,11 @@ func (s *Server) UpdateDataStructure(data []byte) error {
return errors.New("attempting to merge a data stack with an invalid UUID")
}
// Set the default values in the interface that we unmarshaled into.
if err := defaults.Set(&src); err != nil {
return err
}
// Merge the new data object that we have received with the existing server data object
// and then save it to the disk so it is persistent.
if err := mergo.Merge(s, src, mergo.WithOverride); err != nil {