compose/ecs/pkg/amazon/validate.go

36 lines
1.1 KiB
Go

package amazon
import (
"fmt"
"github.com/compose-spec/compose-go/types"
"github.com/docker/ecs-plugin/pkg/compose"
)
// Validate check the compose model do not use unsupported features and inject sane defaults for ECS deployment
func Validate(project *compose.Project) error {
if len(project.Networks) == 0 {
// Compose application model implies a default network if none is explicitly set.
// FIXME move this to compose-go
project.Networks["default"] = types.NetworkConfig{
Name: "default",
}
}
for i, service := range project.Services {
if len(service.Networks) == 0 {
// Service without explicit network attachment are implicitly exposed on default network
// FIXME move this to compose-go
service.Networks = map[string]*types.ServiceNetworkConfig{"default": nil}
project.Services[i] = service
}
if service.NetworkMode != "" && service.NetworkMode != "awsvpc" {
return fmt.Errorf("ECS do not support NetworkMode %q", service.NetworkMode)
}
}
// Here we can check for incompatible attributes, inject sane defaults, etc
return nil
}