mirror of https://github.com/docker/compose.git
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 {
|
||||
CheckService(service *types.ServiceConfig)
|
||||
CheckCapAdd(service *types.ServiceConfig)
|
||||
CheckDependsOn(service *types.ServiceConfig)
|
||||
CheckDNS(service *types.ServiceConfig)
|
||||
CheckDNSOpts(service *types.ServiceConfig)
|
||||
CheckDNSSearch(service *types.ServiceConfig)
|
||||
|
|
|
@ -174,10 +174,16 @@ func (c client) Convert(project *compose.Project) (*cloudformation.Template, err
|
|||
if service.Deploy != nil && service.Deploy.Replicas != nil {
|
||||
desiredCount = int(*service.Deploy.Replicas)
|
||||
}
|
||||
template.Resources[fmt.Sprintf("%sService", normalizeResourceName(service.Name))] = &ecs.Service{
|
||||
Cluster: cluster,
|
||||
DesiredCount: desiredCount,
|
||||
LaunchType: ecsapi.LaunchTypeFargate,
|
||||
|
||||
dependsOn := []string{}
|
||||
for _, dependency := range service.DependsOn {
|
||||
dependsOn = append(dependsOn, serviceResourceName(dependency))
|
||||
}
|
||||
template.Resources[serviceResourceName(service.Name)] = &ecs.Service{
|
||||
AWSCloudFormationDependsOn: dependsOn,
|
||||
Cluster: cluster,
|
||||
DesiredCount: desiredCount,
|
||||
LaunchType: ecsapi.LaunchTypeFargate,
|
||||
NetworkConfiguration: &ecs.Service_NetworkConfiguration{
|
||||
AwsvpcConfiguration: &ecs.Service_AwsVpcConfiguration{
|
||||
AssignPublicIp: ecsapi.AssignPublicIpEnabled,
|
||||
|
@ -259,6 +265,10 @@ func networkResourceName(project *compose.Project, network string) string {
|
|||
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 {
|
||||
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) {
|
||||
c.CheckCapAdd(service)
|
||||
c.CheckDependsOn(service)
|
||||
c.CheckDNS(service)
|
||||
c.CheckDNSOpts(service)
|
||||
c.CheckDNSSearch(service)
|
||||
|
@ -47,13 +46,6 @@ func (c *FargateCompatibilityChecker) CheckNetworkMode(service *types.ServiceCon
|
|||
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) {
|
||||
if len(service.Links) != 0 {
|
||||
c.error("'links' is not supported")
|
||||
|
|
Loading…
Reference in New Issue