mirror of
https://github.com/docker/compose.git
synced 2025-07-23 13:45:00 +02:00
Reduce cyclomatic complexity
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
55a21122d0
commit
0a6d7b1c6d
136
ecs/convert.go
136
ecs/convert.go
@ -62,72 +62,25 @@ func convert(project *types.Project, service types.ServiceConfig) (*ecs.TaskDefi
|
|||||||
logConfiguration := getLogConfiguration(service, project)
|
logConfiguration := getLogConfiguration(service, project)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
containers []ecs.TaskDefinition_ContainerDefinition
|
initContainers []ecs.TaskDefinition_ContainerDefinition
|
||||||
volumes []ecs.TaskDefinition_Volume
|
volumes []ecs.TaskDefinition_Volume
|
||||||
mounts []ecs.TaskDefinition_MountPoint
|
mounts []ecs.TaskDefinition_MountPoint
|
||||||
initContainers []ecs.TaskDefinition_ContainerDependency
|
|
||||||
)
|
)
|
||||||
if len(service.Secrets) > 0 {
|
if len(service.Secrets) > 0 {
|
||||||
initContainerName := fmt.Sprintf("%s_Secrets_InitContainer", normalizeResourceName(service.Name))
|
secretsVolume, secretsMount, secretsSideCar, err := createSecretsSideCar(project, service, logConfiguration)
|
||||||
volumes = append(volumes, ecs.TaskDefinition_Volume{
|
|
||||||
Name: "secrets",
|
|
||||||
})
|
|
||||||
mounts = append(mounts, ecs.TaskDefinition_MountPoint{
|
|
||||||
ContainerPath: "/run/secrets/",
|
|
||||||
ReadOnly: true,
|
|
||||||
SourceVolume: "secrets",
|
|
||||||
})
|
|
||||||
initContainers = append(initContainers, ecs.TaskDefinition_ContainerDependency{
|
|
||||||
Condition: ecsapi.ContainerConditionSuccess,
|
|
||||||
ContainerName: initContainerName,
|
|
||||||
})
|
|
||||||
|
|
||||||
var (
|
|
||||||
args []secrets.Secret
|
|
||||||
taskSecrets []ecs.TaskDefinition_Secret
|
|
||||||
)
|
|
||||||
for _, s := range service.Secrets {
|
|
||||||
secretConfig := project.Secrets[s.Source]
|
|
||||||
if s.Target == "" {
|
|
||||||
s.Target = s.Source
|
|
||||||
}
|
|
||||||
taskSecrets = append(taskSecrets, ecs.TaskDefinition_Secret{
|
|
||||||
Name: s.Target,
|
|
||||||
ValueFrom: secretConfig.Name,
|
|
||||||
})
|
|
||||||
var keys []string
|
|
||||||
if ext, ok := secretConfig.Extensions[ExtensionKeys]; ok {
|
|
||||||
if key, ok := ext.(string); ok {
|
|
||||||
keys = append(keys, key)
|
|
||||||
} else {
|
|
||||||
for _, k := range ext.([]interface{}) {
|
|
||||||
keys = append(keys, k.(string))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
args = append(args, secrets.Secret{
|
|
||||||
Name: s.Target,
|
|
||||||
Keys: keys,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
command, err := json.Marshal(args)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
containers = append(containers, ecs.TaskDefinition_ContainerDefinition{
|
initContainers = append(initContainers, secretsSideCar)
|
||||||
Name: initContainerName,
|
volumes = append(volumes, secretsVolume)
|
||||||
Image: secretsInitContainerImage,
|
mounts = append(mounts, secretsMount)
|
||||||
Command: []string{string(command)},
|
}
|
||||||
Essential: false, // FIXME this will be ignored, see https://github.com/awslabs/goformation/issues/61#issuecomment-625139607
|
|
||||||
LogConfiguration: logConfiguration,
|
var dependencies []ecs.TaskDefinition_ContainerDependency
|
||||||
MountPoints: []ecs.TaskDefinition_MountPoint{
|
for _, c := range initContainers {
|
||||||
{
|
dependencies = append(dependencies, ecs.TaskDefinition_ContainerDependency{
|
||||||
ContainerPath: "/run/secrets/",
|
Condition: ecsapi.ContainerConditionSuccess,
|
||||||
ReadOnly: false,
|
ContainerName: c.Name,
|
||||||
SourceVolume: "secrets",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Secrets: taskSecrets,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,10 +89,10 @@ func convert(project *types.Project, service types.ServiceConfig) (*ecs.TaskDefi
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
containers = append(containers, ecs.TaskDefinition_ContainerDefinition{
|
containers := append(initContainers, ecs.TaskDefinition_ContainerDefinition{
|
||||||
Command: service.Command,
|
Command: service.Command,
|
||||||
DisableNetworking: service.NetworkMode == "none",
|
DisableNetworking: service.NetworkMode == "none",
|
||||||
DependsOnProp: initContainers,
|
DependsOnProp: dependencies,
|
||||||
DnsSearchDomains: service.DNSSearch,
|
DnsSearchDomains: service.DNSSearch,
|
||||||
DnsServers: service.DNS,
|
DnsServers: service.DNS,
|
||||||
DockerSecurityOptions: service.SecurityOpt,
|
DockerSecurityOptions: service.SecurityOpt,
|
||||||
@ -188,6 +141,67 @@ func convert(project *types.Project, service types.ServiceConfig) (*ecs.TaskDefi
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createSecretsSideCar(project *types.Project, service types.ServiceConfig, logConfiguration *ecs.TaskDefinition_LogConfiguration) (ecs.TaskDefinition_Volume, ecs.TaskDefinition_MountPoint, ecs.TaskDefinition_ContainerDefinition, error) {
|
||||||
|
initContainerName := fmt.Sprintf("%s_Secrets_InitContainer", normalizeResourceName(service.Name))
|
||||||
|
secretsVolume := ecs.TaskDefinition_Volume{
|
||||||
|
Name: "secrets",
|
||||||
|
}
|
||||||
|
secretsMount := ecs.TaskDefinition_MountPoint{
|
||||||
|
ContainerPath: "/run/secrets/",
|
||||||
|
ReadOnly: true,
|
||||||
|
SourceVolume: "secrets",
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
args []secrets.Secret
|
||||||
|
taskSecrets []ecs.TaskDefinition_Secret
|
||||||
|
)
|
||||||
|
for _, s := range service.Secrets {
|
||||||
|
secretConfig := project.Secrets[s.Source]
|
||||||
|
if s.Target == "" {
|
||||||
|
s.Target = s.Source
|
||||||
|
}
|
||||||
|
taskSecrets = append(taskSecrets, ecs.TaskDefinition_Secret{
|
||||||
|
Name: s.Target,
|
||||||
|
ValueFrom: secretConfig.Name,
|
||||||
|
})
|
||||||
|
var keys []string
|
||||||
|
if ext, ok := secretConfig.Extensions[ExtensionKeys]; ok {
|
||||||
|
if key, ok := ext.(string); ok {
|
||||||
|
keys = append(keys, key)
|
||||||
|
} else {
|
||||||
|
for _, k := range ext.([]interface{}) {
|
||||||
|
keys = append(keys, k.(string))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
args = append(args, secrets.Secret{
|
||||||
|
Name: s.Target,
|
||||||
|
Keys: keys,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
command, err := json.Marshal(args)
|
||||||
|
if err != nil {
|
||||||
|
return ecs.TaskDefinition_Volume{}, ecs.TaskDefinition_MountPoint{}, ecs.TaskDefinition_ContainerDefinition{}, err
|
||||||
|
}
|
||||||
|
secretsSideCar := ecs.TaskDefinition_ContainerDefinition{
|
||||||
|
Name: initContainerName,
|
||||||
|
Image: secretsInitContainerImage,
|
||||||
|
Command: []string{string(command)},
|
||||||
|
Essential: false, // FIXME this will be ignored, see https://github.com/awslabs/goformation/issues/61#issuecomment-625139607
|
||||||
|
LogConfiguration: logConfiguration,
|
||||||
|
MountPoints: []ecs.TaskDefinition_MountPoint{
|
||||||
|
{
|
||||||
|
ContainerPath: "/run/secrets/",
|
||||||
|
ReadOnly: false,
|
||||||
|
SourceVolume: "secrets",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Secrets: taskSecrets,
|
||||||
|
}
|
||||||
|
return secretsVolume, secretsMount, secretsSideCar, nil
|
||||||
|
}
|
||||||
|
|
||||||
func createEnvironment(project *types.Project, service types.ServiceConfig) ([]ecs.TaskDefinition_KeyValuePair, error) {
|
func createEnvironment(project *types.Project, service types.ServiceConfig) ([]ecs.TaskDefinition_KeyValuePair, error) {
|
||||||
environment := map[string]*string{}
|
environment := map[string]*string{}
|
||||||
for _, f := range service.EnvFile {
|
for _, f := range service.EnvFile {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user