36 lines
1.1 KiB
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
|
|
}
|