Make the installer less obtuse to understand
This commit is contained in:
parent
65b01e1869
commit
69aa559bcf
2
http.go
2
http.go
|
@ -425,7 +425,7 @@ func (rt *Router) routeServerUpdate(w http.ResponseWriter, r *http.Request, ps h
|
||||||
func (rt *Router) routeCreateServer(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (rt *Router) routeCreateServer(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
defer r.Body.Close()
|
defer r.Body.Close()
|
||||||
|
|
||||||
err, inst := installer.New(rt.ReaderToBytes(r.Body))
|
inst, err := installer.New(rt.ReaderToBytes(r.Body))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zap.S().Warnw("failed to validate the received data", zap.Error(err))
|
zap.S().Warnw("failed to validate the received data", zap.Error(err))
|
||||||
|
|
|
@ -17,13 +17,13 @@ type Installer struct {
|
||||||
// Validates the received data to ensure that all of the required fields
|
// Validates the received data to ensure that all of the required fields
|
||||||
// have been passed along in the request. This should be manually run before
|
// have been passed along in the request. This should be manually run before
|
||||||
// calling Execute().
|
// calling Execute().
|
||||||
func New(data []byte) (error, *Installer) {
|
func New(data []byte) (*Installer, error) {
|
||||||
if !govalidator.IsUUIDv4(getString(data, "uuid")) {
|
if !govalidator.IsUUIDv4(getString(data, "uuid")) {
|
||||||
return errors.New("uuid provided was not in a valid format"), nil
|
return nil, errors.New("uuid provided was not in a valid format")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !govalidator.IsUUIDv4(getString(data, "service", "egg")) {
|
if !govalidator.IsUUIDv4(getString(data, "service", "egg")) {
|
||||||
return errors.New("service egg provided was not in a valid format"), nil
|
return nil, errors.New("service egg provided was not in a valid format")
|
||||||
}
|
}
|
||||||
|
|
||||||
s := &server.Server{
|
s := &server.Server{
|
||||||
|
@ -49,28 +49,31 @@ func New(data []byte) (error, *Installer) {
|
||||||
s.Allocations.DefaultMapping.Ip = getString(data, "allocations", "default", "ip")
|
s.Allocations.DefaultMapping.Ip = getString(data, "allocations", "default", "ip")
|
||||||
s.Allocations.DefaultMapping.Port = int(getInt(data, "allocations", "default", "port"))
|
s.Allocations.DefaultMapping.Port = int(getInt(data, "allocations", "default", "port"))
|
||||||
|
|
||||||
jsonparser.ObjectEach(data, func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error {
|
// Unmarshal the environment variables from the request into the server struct.
|
||||||
s.EnvVars[string(key)] = string(value)
|
if b, _, _, err := jsonparser.Get(data, "environment"); err != nil {
|
||||||
|
return nil, errors.WithStack(err)
|
||||||
return nil
|
} else {
|
||||||
}, "environment")
|
s.EnvVars = make(map[string]string)
|
||||||
|
if err := json.Unmarshal(b, &s.EnvVars); err != nil {
|
||||||
jsonparser.ArrayEach(data, func(value []byte, dataType jsonparser.ValueType, offset int, err error) {
|
return nil, errors.WithStack(err)
|
||||||
var dat map[string][]int
|
|
||||||
if err := json.Unmarshal(value, &dat); err != nil {
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for i, k := range dat {
|
// Unmarshal the allocation mappings from the request into the server struct.
|
||||||
s.Allocations.Mappings[i] = k
|
if b, _, _, err := jsonparser.Get(data, "allocations", "mappings"); err != nil {
|
||||||
|
return nil, errors.WithStack(err)
|
||||||
|
} else {
|
||||||
|
s.Allocations.Mappings = make(map[string][]int)
|
||||||
|
if err := json.Unmarshal(b, &s.Allocations.Mappings); err != nil {
|
||||||
|
return nil, errors.WithStack(err)
|
||||||
}
|
}
|
||||||
}, "allocations", "mappings")
|
}
|
||||||
|
|
||||||
s.Container.Image = getString(data, "container", "image")
|
s.Container.Image = getString(data, "container", "image")
|
||||||
|
|
||||||
b, err := s.WriteConfigurationToDisk()
|
b, err := s.WriteConfigurationToDisk()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err, nil
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destroy the temporary server instance.
|
// Destroy the temporary server instance.
|
||||||
|
@ -80,9 +83,9 @@ func New(data []byte) (error, *Installer) {
|
||||||
// so that everything gets instantiated correctly on the struct.
|
// so that everything gets instantiated correctly on the struct.
|
||||||
s2, err := server.FromConfiguration(b, config.Get().System)
|
s2, err := server.FromConfiguration(b, config.Get().System)
|
||||||
|
|
||||||
return nil, &Installer{
|
return &Installer{
|
||||||
server: s2,
|
server: s2,
|
||||||
}
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the UUID associated with this installer instance.
|
// Returns the UUID associated with this installer instance.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user