mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 11:03:34 +00:00
41 lines
920 B
Go
41 lines
920 B
Go
package compose
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/compose-spec/compose-go/v2/types"
|
|
"github.com/psviderski/uncloud/internal/api"
|
|
)
|
|
|
|
func ServiceSpecFromCompose(name string, service types.ServiceConfig) (api.ServiceSpec, error) {
|
|
spec := api.ServiceSpec{
|
|
Container: api.ContainerSpec{
|
|
Command: service.Command,
|
|
Image: service.Image,
|
|
Init: service.Init,
|
|
// TODO: env
|
|
// TODO: volumes
|
|
},
|
|
Name: name,
|
|
}
|
|
|
|
if ports, ok := service.Extensions[PortsExtensionKey].([]api.PortSpec); ok {
|
|
spec.Ports = ports
|
|
}
|
|
|
|
if service.Deploy != nil {
|
|
switch service.Deploy.Mode {
|
|
case "global":
|
|
spec.Mode = api.ServiceModeGlobal
|
|
case "", "replicated":
|
|
spec.Mode = api.ServiceModeReplicated
|
|
if service.Deploy.Replicas != nil {
|
|
spec.Replicas = uint(*service.Deploy.Replicas)
|
|
}
|
|
default:
|
|
return spec, fmt.Errorf("unsupported deploy mode: %s", service.Deploy.Mode)
|
|
}
|
|
}
|
|
|
|
return spec, nil
|
|
}
|