Implement depends_on using CloudFormation

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
Nicolas De Loof 2020-06-02 13:54:33 +02:00
parent ff88290302
commit 7d4222a725
No known key found for this signature in database
GPG Key ID: 9858809D6F8F6E7E
3 changed files with 14 additions and 13 deletions

View File

@ -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)

View File

@ -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, ""))
}

View File

@ -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")