Fix issues instantiating the server struct
This commit is contained in:
		
							parent
							
								
									bdf546c47a
								
							
						
					
					
						commit
						be14811eb4
					
				
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							| 
						 | 
					@ -9,7 +9,7 @@ require (
 | 
				
			||||||
	github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a
 | 
						github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a
 | 
				
			||||||
	github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23
 | 
						github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23
 | 
				
			||||||
	github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448 // indirect
 | 
						github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448 // indirect
 | 
				
			||||||
	github.com/creasty/defaults v1.3.0 // indirect
 | 
						github.com/creasty/defaults v1.3.0
 | 
				
			||||||
	github.com/docker/distribution v2.7.1+incompatible // indirect
 | 
						github.com/docker/distribution v2.7.1+incompatible // indirect
 | 
				
			||||||
	github.com/docker/docker v0.0.0-20180422163414-57142e89befe
 | 
						github.com/docker/docker v0.0.0-20180422163414-57142e89befe
 | 
				
			||||||
	github.com/docker/go-connections v0.4.0
 | 
						github.com/docker/go-connections v0.4.0
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ require (
 | 
				
			||||||
	github.com/imdario/mergo v0.3.8
 | 
						github.com/imdario/mergo v0.3.8
 | 
				
			||||||
	github.com/julienschmidt/httprouter v1.2.0
 | 
						github.com/julienschmidt/httprouter v1.2.0
 | 
				
			||||||
	github.com/kr/pretty v0.1.0 // indirect
 | 
						github.com/kr/pretty v0.1.0 // indirect
 | 
				
			||||||
 | 
						github.com/mcuadros/go-defaults v1.1.0
 | 
				
			||||||
	github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee
 | 
						github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee
 | 
				
			||||||
	github.com/onsi/ginkgo v1.8.0 // indirect
 | 
						github.com/onsi/ginkgo v1.8.0 // indirect
 | 
				
			||||||
	github.com/onsi/gomega v1.5.0 // indirect
 | 
						github.com/onsi/gomega v1.5.0 // indirect
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							| 
						 | 
					@ -53,6 +53,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 | 
				
			||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
					github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 | 
				
			||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
					github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 | 
				
			||||||
github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
 | 
					github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
 | 
				
			||||||
 | 
					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/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee h1:IquUs3fIykn10zWDIyddanhpTqBvAHMaPnFhQuyYw5U=
 | 
					github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee h1:IquUs3fIykn10zWDIyddanhpTqBvAHMaPnFhQuyYw5U=
 | 
				
			||||||
github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee/go.mod h1:eT2/Pcsim3XBjbvldGiJBvvgiqZkAFyiOJJsDKXs/ts=
 | 
					github.com/olebedev/emitter v0.0.0-20190110104742-e8d1457e6aee/go.mod h1:eT2/Pcsim3XBjbvldGiJBvvgiqZkAFyiOJJsDKXs/ts=
 | 
				
			||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 | 
					github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,14 +32,14 @@ func New(data []byte) (*Installer, error) {
 | 
				
			||||||
		State:      server.ProcessOfflineState,
 | 
							State:      server.ProcessOfflineState,
 | 
				
			||||||
		Invocation: "",
 | 
							Invocation: "",
 | 
				
			||||||
		EnvVars:    make(map[string]string),
 | 
							EnvVars:    make(map[string]string),
 | 
				
			||||||
		Build: &server.BuildSettings{
 | 
							Build: server.BuildSettings{
 | 
				
			||||||
			MemoryLimit: getInt(data, "build", "memory"),
 | 
								MemoryLimit: getInt(data, "build", "memory"),
 | 
				
			||||||
			Swap:        getInt(data, "build", "swap"),
 | 
								Swap:        getInt(data, "build", "swap"),
 | 
				
			||||||
			IoWeight:    uint16(getInt(data, "build", "io")),
 | 
								IoWeight:    uint16(getInt(data, "build", "io")),
 | 
				
			||||||
			CpuLimit:    getInt(data, "build", "cpu"),
 | 
								CpuLimit:    getInt(data, "build", "cpu"),
 | 
				
			||||||
			DiskSpace:   getInt(data, "build", "disk"),
 | 
								DiskSpace:   getInt(data, "build", "disk"),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Allocations: &server.Allocations{
 | 
							Allocations: server.Allocations{
 | 
				
			||||||
			Mappings: make(map[string][]int),
 | 
								Mappings: make(map[string][]int),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ package server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"github.com/mcuadros/go-defaults"
 | 
				
			||||||
	"github.com/patrickmn/go-cache"
 | 
						"github.com/patrickmn/go-cache"
 | 
				
			||||||
	"github.com/pkg/errors"
 | 
						"github.com/pkg/errors"
 | 
				
			||||||
	"github.com/pterodactyl/wings/api"
 | 
						"github.com/pterodactyl/wings/api"
 | 
				
			||||||
| 
						 | 
					@ -38,8 +39,11 @@ type Server struct {
 | 
				
			||||||
	// server process.
 | 
						// server process.
 | 
				
			||||||
	EnvVars map[string]string `json:"environment" yaml:"environment"`
 | 
						EnvVars map[string]string `json:"environment" yaml:"environment"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Build       *BuildSettings `json:"build"`
 | 
						Build          BuildSettings  `json:"build"`
 | 
				
			||||||
	Allocations *Allocations   `json:"allocations"`
 | 
						Allocations    Allocations    `json:"allocations"`
 | 
				
			||||||
 | 
						Environment    Environment    `json:"-" yaml:"-"`
 | 
				
			||||||
 | 
						Filesystem     Filesystem     `json:"-" yaml:"-"`
 | 
				
			||||||
 | 
						Resources      ResourceUsage  `json:"resources" yaml:"-"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Container struct {
 | 
						Container struct {
 | 
				
			||||||
		// Defines the Docker image that will be used for this server
 | 
							// Defines the Docker image that will be used for this server
 | 
				
			||||||
| 
						 | 
					@ -51,12 +55,6 @@ type Server struct {
 | 
				
			||||||
		RebuildRequired bool `default:"false" json:"rebuild_required,omitempty" yaml:"rebuild_required"`
 | 
							RebuildRequired bool `default:"false" json:"rebuild_required,omitempty" yaml:"rebuild_required"`
 | 
				
			||||||
	} `json:"container,omitempty"`
 | 
						} `json:"container,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Environment Environment `json:"-" yaml:"-"`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Filesystem *Filesystem `json:"-" yaml:"-"`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Resources *ResourceUsage `json:"resources" yaml:"-"`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Server cache used to store frequently requested information in memory and make
 | 
						// Server cache used to store frequently requested information in memory and make
 | 
				
			||||||
	// certain long operations return faster. For example, FS disk space usage.
 | 
						// certain long operations return faster. For example, FS disk space usage.
 | 
				
			||||||
	Cache *cache.Cache `json:"-" yaml:"-"`
 | 
						Cache *cache.Cache `json:"-" yaml:"-"`
 | 
				
			||||||
| 
						 | 
					@ -199,7 +197,8 @@ func (s *Server) Init() {
 | 
				
			||||||
// given struct using a YAML marshaler. This will also configure the given environment
 | 
					// given struct using a YAML marshaler. This will also configure the given environment
 | 
				
			||||||
// for a server.
 | 
					// for a server.
 | 
				
			||||||
func FromConfiguration(data []byte, cfg *config.SystemConfiguration) (*Server, error) {
 | 
					func FromConfiguration(data []byte, cfg *config.SystemConfiguration) (*Server, error) {
 | 
				
			||||||
	s := &Server{}
 | 
						s := new(Server)
 | 
				
			||||||
 | 
						defaults.SetDefaults(s)
 | 
				
			||||||
	s.Init()
 | 
						s.Init()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := yaml.Unmarshal(data, s); err != nil {
 | 
						if err := yaml.Unmarshal(data, s); err != nil {
 | 
				
			||||||
| 
						 | 
					@ -226,11 +225,11 @@ func FromConfiguration(data []byte, cfg *config.SystemConfiguration) (*Server, e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	s.Environment = env
 | 
						s.Environment = env
 | 
				
			||||||
	s.Cache = cache.New(time.Minute*10, time.Minute*15)
 | 
						s.Cache = cache.New(time.Minute*10, time.Minute*15)
 | 
				
			||||||
	s.Filesystem = &Filesystem{
 | 
						s.Filesystem = Filesystem{
 | 
				
			||||||
		Configuration: cfg,
 | 
							Configuration: cfg,
 | 
				
			||||||
		Server:        s,
 | 
							Server:        s,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	s.Resources = &ResourceUsage{}
 | 
						s.Resources = ResourceUsage{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This is also done when the server is booted, however we need to account for instances
 | 
						// This is also done when the server is booted, however we need to account for instances
 | 
				
			||||||
	// where the server is already running and the Daemon reboots. In those cases this will
 | 
						// where the server is already running and the Daemon reboots. In those cases this will
 | 
				
			||||||
| 
						 | 
					@ -277,6 +276,7 @@ func (s *Server) SetState(state string) error {
 | 
				
			||||||
		return errors.New(fmt.Sprintf("invalid server state received: %s", state))
 | 
							return errors.New(fmt.Sprintf("invalid server state received: %s", state))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						prevState := s.State
 | 
				
			||||||
	s.State = state
 | 
						s.State = state
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Persist this change to the disk immediately so that should the Daemon be stopped or
 | 
						// Persist this change to the disk immediately so that should the Daemon be stopped or
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,7 +61,7 @@ func (s *Server) UpdateDataStructure(data []byte) error {
 | 
				
			||||||
		s.EnvVars = src.EnvVars
 | 
							s.EnvVars = src.EnvVars
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if src.Allocations != nil && src.Allocations.Mappings != nil && len(src.Allocations.Mappings) > 0 {
 | 
						if src.Allocations.Mappings != nil && len(src.Allocations.Mappings) > 0 {
 | 
				
			||||||
		s.Allocations.Mappings = src.Allocations.Mappings
 | 
							s.Allocations.Mappings = src.Allocations.Mappings
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user