- Added upstream objects
- Renamed host templates to nginx templates - Generate upstream templates - Better nginx error reporting when reloading - Use tparse for golang test reporting
This commit is contained in:
39
backend/internal/validator/upstreams.go
Normal file
39
backend/internal/validator/upstreams.go
Normal file
@ -0,0 +1,39 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"npm/internal/entity/nginxtemplate"
|
||||
"npm/internal/entity/upstream"
|
||||
)
|
||||
|
||||
// ValidateUpstream will check if associated objects exist and other checks
|
||||
// will return a nil error if things are OK
|
||||
func ValidateUpstream(u upstream.Model) error {
|
||||
// Needs to have more than 1 server
|
||||
if len(u.Servers) < 2 {
|
||||
return errors.New("Upstreams require at least 2 servers")
|
||||
}
|
||||
|
||||
// Backup servers aren't permitted with hash balancing
|
||||
if u.IPHash {
|
||||
// check all servers for a backup param
|
||||
for _, server := range u.Servers {
|
||||
if server.Backup {
|
||||
return errors.New("Backup servers cannot be used with hash balancing")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check the nginx template exists and has the same type.
|
||||
nginxTemplate, err := nginxtemplate.GetByID(u.NginxTemplateID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Nginx Template #%d does not exist", u.NginxTemplateID)
|
||||
}
|
||||
if nginxTemplate.Type != "upstream" {
|
||||
return fmt.Errorf("Host Template #%d is not valid for this upstream", u.NginxTemplateID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user