mirror of https://github.com/docker/compose.git
Add first compose to cloudformation conversion tests
Signed-off-by: Guillaume Lours <guillaume.lours@docker.com> Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
3e5b118f26
commit
4bbe3f1589
|
@ -0,0 +1,49 @@
|
||||||
|
package tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gotest.tools/v3/fs"
|
||||||
|
"gotest.tools/v3/golden"
|
||||||
|
"gotest.tools/v3/icmd"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
composeFileName = "compose.yaml"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSimpleConvert(t *testing.T) {
|
||||||
|
cmd, cleanup := dockerCli.createTestCmd()
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
composeYAML := golden.Get(t, "input/simple-single-service.yaml")
|
||||||
|
tmpDir := fs.NewDir(t, t.Name(),
|
||||||
|
fs.WithFile(composeFileName, "", fs.WithBytes(composeYAML)),
|
||||||
|
)
|
||||||
|
defer tmpDir.Remove()
|
||||||
|
|
||||||
|
cmd.Command = dockerCli.Command("ecs", "compose", "--file="+tmpDir.Join(composeFileName), "--project-name", t.Name(), "convert")
|
||||||
|
result := icmd.RunCmd(cmd).Assert(t, icmd.Success).Combined()
|
||||||
|
|
||||||
|
expected := "simple/simple-cloudformation-conversion.golden"
|
||||||
|
golden.Assert(t, result, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSimpleWithOverrides(t *testing.T) {
|
||||||
|
cmd, cleanup := dockerCli.createTestCmd()
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
composeYAML := golden.Get(t, "input/simple-single-service.yaml")
|
||||||
|
overriddenComposeYAML := golden.Get(t, "input/simple-single-service-with-overrides.yaml")
|
||||||
|
tmpDir := fs.NewDir(t, t.Name(),
|
||||||
|
fs.WithFile(composeFileName, "", fs.WithBytes(composeYAML)),
|
||||||
|
fs.WithFile("overriddenService.yaml", "", fs.WithBytes(overriddenComposeYAML)),
|
||||||
|
)
|
||||||
|
defer tmpDir.Remove()
|
||||||
|
cmd.Command = dockerCli.Command("ecs", "compose", "--file="+tmpDir.Join(composeFileName), "--file",
|
||||||
|
tmpDir.Join("overriddenService.yaml"), "--project-name", t.Name(), "convert")
|
||||||
|
result := icmd.RunCmd(cmd).Assert(t, icmd.Success).Combined()
|
||||||
|
|
||||||
|
expected := "simple/simple-cloudformation-with-overrides-conversion.golden"
|
||||||
|
golden.Assert(t, result, expected)
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
simple:
|
||||||
|
image: haproxy
|
|
@ -0,0 +1,4 @@
|
||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
simple:
|
||||||
|
image: nginx
|
|
@ -0,0 +1,164 @@
|
||||||
|
{
|
||||||
|
"AWSTemplateFormatVersion": "2010-09-09",
|
||||||
|
"Parameters": {
|
||||||
|
"Subnet1Id": {
|
||||||
|
"Description": "SubnetId,for Availability Zone 1 in the region in your VPC",
|
||||||
|
"Type": "AWS::EC2::Subnet::Id"
|
||||||
|
},
|
||||||
|
"Subnet2Id": {
|
||||||
|
"Description": "SubnetId,for Availability Zone 1 in the region in your VPC",
|
||||||
|
"Type": "AWS::EC2::Subnet::Id"
|
||||||
|
},
|
||||||
|
"VPCId": {
|
||||||
|
"Description": "ID of the VPC",
|
||||||
|
"Type": "AWS::EC2::VPC::Id"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Resources": {
|
||||||
|
"CloudMap": {
|
||||||
|
"Properties": {
|
||||||
|
"Description": "Service Map for Docker Compose project TestSimpleConvert",
|
||||||
|
"Name": "TestSimpleConvert.local",
|
||||||
|
"Vpc": {
|
||||||
|
"Ref": "VPCId"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ServiceDiscovery::PrivateDnsNamespace"
|
||||||
|
},
|
||||||
|
"LogGroup": {
|
||||||
|
"Properties": {
|
||||||
|
"LogGroupName": "/docker-compose/TestSimpleConvert"
|
||||||
|
},
|
||||||
|
"Type": "AWS::Logs::LogGroup"
|
||||||
|
},
|
||||||
|
"simpleService": {
|
||||||
|
"Properties": {
|
||||||
|
"Cluster": "TestCluster",
|
||||||
|
"DesiredCount": 1,
|
||||||
|
"LaunchType": "FARGATE",
|
||||||
|
"NetworkConfiguration": {
|
||||||
|
"AwsvpcConfiguration": {
|
||||||
|
"AssignPublicIp": "ENABLED",
|
||||||
|
"Subnets": [
|
||||||
|
{
|
||||||
|
"Ref": "Subnet1Id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ref": "Subnet2Id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SchedulingStrategy": "REPLICA",
|
||||||
|
"ServiceName": "simple",
|
||||||
|
"ServiceRegistries": [
|
||||||
|
{
|
||||||
|
"RegistryArn": {
|
||||||
|
"Fn::GetAtt": [
|
||||||
|
"simpleServiceDiscoveryEntry",
|
||||||
|
"Arn"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"TaskDefinition": {
|
||||||
|
"Ref": "simpleTaskDefinition"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ECS::Service"
|
||||||
|
},
|
||||||
|
"simpleServiceDiscoveryEntry": {
|
||||||
|
"Properties": {
|
||||||
|
"Description": "\"simple\" service discovery entry in Cloud Map",
|
||||||
|
"DnsConfig": {
|
||||||
|
"DnsRecords": [
|
||||||
|
{
|
||||||
|
"TTL": 300,
|
||||||
|
"Type": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"RoutingPolicy": "MULTIVALUE"
|
||||||
|
},
|
||||||
|
"Name": "simple",
|
||||||
|
"NamespaceId": {
|
||||||
|
"Ref": "CloudMap"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ServiceDiscovery::Service"
|
||||||
|
},
|
||||||
|
"simpleTaskDefinition": {
|
||||||
|
"Properties": {
|
||||||
|
"ContainerDefinitions": [
|
||||||
|
{
|
||||||
|
"Environment": [
|
||||||
|
{
|
||||||
|
"Name": "LOCALDOMAIN",
|
||||||
|
"Value": {
|
||||||
|
"Fn::Join": [
|
||||||
|
"",
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Ref": "AWS::Region"
|
||||||
|
},
|
||||||
|
".compute.internal",
|
||||||
|
" TestSimpleConvert.local"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Essential": true,
|
||||||
|
"Image": "docker.io/library/nginx",
|
||||||
|
"LinuxParameters": {},
|
||||||
|
"LogConfiguration": {
|
||||||
|
"LogDriver": "awslogs",
|
||||||
|
"Options": {
|
||||||
|
"awslogs-group": {
|
||||||
|
"Ref": "LogGroup"
|
||||||
|
},
|
||||||
|
"awslogs-region": {
|
||||||
|
"Ref": "AWS::Region"
|
||||||
|
},
|
||||||
|
"awslogs-stream-prefix": "simple"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Name": "simple"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Cpu": "256",
|
||||||
|
"ExecutionRoleArn": {
|
||||||
|
"Ref": "simpleTaskExecutionRole"
|
||||||
|
},
|
||||||
|
"Family": "TestSimpleConvert-simple",
|
||||||
|
"Memory": "512",
|
||||||
|
"NetworkMode": "awsvpc",
|
||||||
|
"RequiresCompatibilities": [
|
||||||
|
"FARGATE"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Type": "AWS::ECS::TaskDefinition"
|
||||||
|
},
|
||||||
|
"simpleTaskExecutionRole": {
|
||||||
|
"Properties": {
|
||||||
|
"AssumeRolePolicyDocument": {
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Action": [
|
||||||
|
"sts:AssumeRole"
|
||||||
|
],
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Principal": {
|
||||||
|
"Service": "ecs-tasks.amazonaws.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Version": "2012-10-17"
|
||||||
|
},
|
||||||
|
"ManagedPolicyArns": [
|
||||||
|
"arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Type": "AWS::IAM::Role"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
164
ecs/tests/testdata/simple/simple-cloudformation-with-overrides-conversion.golden
vendored
Normal file
164
ecs/tests/testdata/simple/simple-cloudformation-with-overrides-conversion.golden
vendored
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
{
|
||||||
|
"AWSTemplateFormatVersion": "2010-09-09",
|
||||||
|
"Parameters": {
|
||||||
|
"Subnet1Id": {
|
||||||
|
"Description": "SubnetId,for Availability Zone 1 in the region in your VPC",
|
||||||
|
"Type": "AWS::EC2::Subnet::Id"
|
||||||
|
},
|
||||||
|
"Subnet2Id": {
|
||||||
|
"Description": "SubnetId,for Availability Zone 1 in the region in your VPC",
|
||||||
|
"Type": "AWS::EC2::Subnet::Id"
|
||||||
|
},
|
||||||
|
"VPCId": {
|
||||||
|
"Description": "ID of the VPC",
|
||||||
|
"Type": "AWS::EC2::VPC::Id"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Resources": {
|
||||||
|
"CloudMap": {
|
||||||
|
"Properties": {
|
||||||
|
"Description": "Service Map for Docker Compose project TestSimpleWithOverrides",
|
||||||
|
"Name": "TestSimpleWithOverrides.local",
|
||||||
|
"Vpc": {
|
||||||
|
"Ref": "VPCId"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ServiceDiscovery::PrivateDnsNamespace"
|
||||||
|
},
|
||||||
|
"LogGroup": {
|
||||||
|
"Properties": {
|
||||||
|
"LogGroupName": "/docker-compose/TestSimpleWithOverrides"
|
||||||
|
},
|
||||||
|
"Type": "AWS::Logs::LogGroup"
|
||||||
|
},
|
||||||
|
"simpleService": {
|
||||||
|
"Properties": {
|
||||||
|
"Cluster": "TestCluster",
|
||||||
|
"DesiredCount": 1,
|
||||||
|
"LaunchType": "FARGATE",
|
||||||
|
"NetworkConfiguration": {
|
||||||
|
"AwsvpcConfiguration": {
|
||||||
|
"AssignPublicIp": "ENABLED",
|
||||||
|
"Subnets": [
|
||||||
|
{
|
||||||
|
"Ref": "Subnet1Id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ref": "Subnet2Id"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SchedulingStrategy": "REPLICA",
|
||||||
|
"ServiceName": "simple",
|
||||||
|
"ServiceRegistries": [
|
||||||
|
{
|
||||||
|
"RegistryArn": {
|
||||||
|
"Fn::GetAtt": [
|
||||||
|
"simpleServiceDiscoveryEntry",
|
||||||
|
"Arn"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"TaskDefinition": {
|
||||||
|
"Ref": "simpleTaskDefinition"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ECS::Service"
|
||||||
|
},
|
||||||
|
"simpleServiceDiscoveryEntry": {
|
||||||
|
"Properties": {
|
||||||
|
"Description": "\"simple\" service discovery entry in Cloud Map",
|
||||||
|
"DnsConfig": {
|
||||||
|
"DnsRecords": [
|
||||||
|
{
|
||||||
|
"TTL": 300,
|
||||||
|
"Type": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"RoutingPolicy": "MULTIVALUE"
|
||||||
|
},
|
||||||
|
"Name": "simple",
|
||||||
|
"NamespaceId": {
|
||||||
|
"Ref": "CloudMap"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Type": "AWS::ServiceDiscovery::Service"
|
||||||
|
},
|
||||||
|
"simpleTaskDefinition": {
|
||||||
|
"Properties": {
|
||||||
|
"ContainerDefinitions": [
|
||||||
|
{
|
||||||
|
"Environment": [
|
||||||
|
{
|
||||||
|
"Name": "LOCALDOMAIN",
|
||||||
|
"Value": {
|
||||||
|
"Fn::Join": [
|
||||||
|
"",
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Ref": "AWS::Region"
|
||||||
|
},
|
||||||
|
".compute.internal",
|
||||||
|
" TestSimpleWithOverrides.local"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Essential": true,
|
||||||
|
"Image": "docker.io/library/haproxy",
|
||||||
|
"LinuxParameters": {},
|
||||||
|
"LogConfiguration": {
|
||||||
|
"LogDriver": "awslogs",
|
||||||
|
"Options": {
|
||||||
|
"awslogs-group": {
|
||||||
|
"Ref": "LogGroup"
|
||||||
|
},
|
||||||
|
"awslogs-region": {
|
||||||
|
"Ref": "AWS::Region"
|
||||||
|
},
|
||||||
|
"awslogs-stream-prefix": "simple"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Name": "simple"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Cpu": "256",
|
||||||
|
"ExecutionRoleArn": {
|
||||||
|
"Ref": "simpleTaskExecutionRole"
|
||||||
|
},
|
||||||
|
"Family": "TestSimpleWithOverrides-simple",
|
||||||
|
"Memory": "512",
|
||||||
|
"NetworkMode": "awsvpc",
|
||||||
|
"RequiresCompatibilities": [
|
||||||
|
"FARGATE"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Type": "AWS::ECS::TaskDefinition"
|
||||||
|
},
|
||||||
|
"simpleTaskExecutionRole": {
|
||||||
|
"Properties": {
|
||||||
|
"AssumeRolePolicyDocument": {
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Action": [
|
||||||
|
"sts:AssumeRole"
|
||||||
|
],
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Principal": {
|
||||||
|
"Service": "ecs-tasks.amazonaws.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Version": "2012-10-17"
|
||||||
|
},
|
||||||
|
"ManagedPolicyArns": [
|
||||||
|
"arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Type": "AWS::IAM::Role"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue