mirror of
https://github.com/docker/compose.git
synced 2025-07-27 07:34:10 +02:00
Implement depends_on using CloudFormation
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
ff88290302
commit
7d4222a725
@ -11,7 +11,6 @@ type Warnings []string
|
|||||||
type CompatibilityChecker interface {
|
type CompatibilityChecker interface {
|
||||||
CheckService(service *types.ServiceConfig)
|
CheckService(service *types.ServiceConfig)
|
||||||
CheckCapAdd(service *types.ServiceConfig)
|
CheckCapAdd(service *types.ServiceConfig)
|
||||||
CheckDependsOn(service *types.ServiceConfig)
|
|
||||||
CheckDNS(service *types.ServiceConfig)
|
CheckDNS(service *types.ServiceConfig)
|
||||||
CheckDNSOpts(service *types.ServiceConfig)
|
CheckDNSOpts(service *types.ServiceConfig)
|
||||||
CheckDNSSearch(service *types.ServiceConfig)
|
CheckDNSSearch(service *types.ServiceConfig)
|
||||||
|
@ -174,7 +174,13 @@ func (c client) Convert(project *compose.Project) (*cloudformation.Template, err
|
|||||||
if service.Deploy != nil && service.Deploy.Replicas != nil {
|
if service.Deploy != nil && service.Deploy.Replicas != nil {
|
||||||
desiredCount = int(*service.Deploy.Replicas)
|
desiredCount = int(*service.Deploy.Replicas)
|
||||||
}
|
}
|
||||||
template.Resources[fmt.Sprintf("%sService", normalizeResourceName(service.Name))] = &ecs.Service{
|
|
||||||
|
dependsOn := []string{}
|
||||||
|
for _, dependency := range service.DependsOn {
|
||||||
|
dependsOn = append(dependsOn, serviceResourceName(dependency))
|
||||||
|
}
|
||||||
|
template.Resources[serviceResourceName(service.Name)] = &ecs.Service{
|
||||||
|
AWSCloudFormationDependsOn: dependsOn,
|
||||||
Cluster: cluster,
|
Cluster: cluster,
|
||||||
DesiredCount: desiredCount,
|
DesiredCount: desiredCount,
|
||||||
LaunchType: ecsapi.LaunchTypeFargate,
|
LaunchType: ecsapi.LaunchTypeFargate,
|
||||||
@ -259,6 +265,10 @@ func networkResourceName(project *compose.Project, network string) string {
|
|||||||
return fmt.Sprintf("%s%sNetwork", normalizeResourceName(project.Name), normalizeResourceName(network))
|
return fmt.Sprintf("%s%sNetwork", normalizeResourceName(project.Name), normalizeResourceName(network))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func serviceResourceName(dependency string) string {
|
||||||
|
return fmt.Sprintf("%sService", normalizeResourceName(dependency))
|
||||||
|
}
|
||||||
|
|
||||||
func normalizeResourceName(s string) string {
|
func normalizeResourceName(s string) string {
|
||||||
return strings.Title(regexp.MustCompile("[^a-zA-Z0-9]+").ReplaceAllString(s, ""))
|
return strings.Title(regexp.MustCompile("[^a-zA-Z0-9]+").ReplaceAllString(s, ""))
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ func (c *FargateCompatibilityChecker) Errors() []error {
|
|||||||
|
|
||||||
func (c *FargateCompatibilityChecker) CheckService(service *types.ServiceConfig) {
|
func (c *FargateCompatibilityChecker) CheckService(service *types.ServiceConfig) {
|
||||||
c.CheckCapAdd(service)
|
c.CheckCapAdd(service)
|
||||||
c.CheckDependsOn(service)
|
|
||||||
c.CheckDNS(service)
|
c.CheckDNS(service)
|
||||||
c.CheckDNSOpts(service)
|
c.CheckDNSOpts(service)
|
||||||
c.CheckDNSSearch(service)
|
c.CheckDNSSearch(service)
|
||||||
@ -47,13 +46,6 @@ func (c *FargateCompatibilityChecker) CheckNetworkMode(service *types.ServiceCon
|
|||||||
service.NetworkMode = ecs.NetworkModeAwsvpc
|
service.NetworkMode = ecs.NetworkModeAwsvpc
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *FargateCompatibilityChecker) CheckDependsOn(service *types.ServiceConfig) {
|
|
||||||
if len(service.DependsOn) != 0 {
|
|
||||||
c.error("'depends_on' is not supported")
|
|
||||||
service.DependsOn = nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *FargateCompatibilityChecker) CheckLinks(service *types.ServiceConfig) {
|
func (c *FargateCompatibilityChecker) CheckLinks(service *types.ServiceConfig) {
|
||||||
if len(service.Links) != 0 {
|
if len(service.Links) != 0 {
|
||||||
c.error("'links' is not supported")
|
c.error("'links' is not supported")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user