Concat and merge service fields when merging compose files (#1186) (#1226)

according to docker compose specs, certain fields are merged and
certain others are concatented
This commit is contained in:
Chander G
2020-01-03 23:17:29 +08:00
committed by Hang Yan
parent ae12a2e39a
commit 5732a555cb
8 changed files with 319 additions and 9 deletions
+4
View File
@@ -138,6 +138,10 @@ cmd="kompose --provider=openshift convert -f $KOMPOSE_ROOT/script/test/fixtures/
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/output-openshift-template.json > /tmp/output-os.json
convert::expect_success "$cmd" "/tmp/output-os.json"
cmd="kompose convert -f $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/service-merge-concat-base.yml -f $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/service-merge-concat-override.yml --stdout -j"
sed -e "s;%VERSION%;$version;g" -e "s;%CMD%;$cmd;g" $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/output-service-merge-concat-template.json > /tmp/output-k8s.json
convert::expect_success_and_warning "$cmd" "/tmp/output-k8s.json" "Volume mount on the host \"/override/dir\" isn't supported - ignoring path on the host"
# Test other top level keys
# In merge
cmd="kompose convert -f $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/other-toplevel-dev.yml -f $KOMPOSE_ROOT/script/test/fixtures/merge-multiple-compose/other-toplevel-ext.yml --stdout -j"
@@ -19,6 +19,11 @@
},
"spec": {
"ports": [
{
"name": "3000",
"port": 3000,
"targetPort": 3000
},
{
"name": "5000",
"port": 5000,
@@ -123,6 +128,9 @@
"imagePullPolicy": "",
"name": "test-server",
"ports": [
{
"containerPort": 3000
},
{
"containerPort": 5000
}
@@ -19,6 +19,11 @@
},
"spec": {
"ports": [
{
"name": "3000",
"port": 3000,
"targetPort": 3000
},
{
"name": "5000",
"port": 5000,
@@ -73,6 +78,9 @@
"imagePullPolicy": "",
"name": "test-server",
"ports": [
{
"containerPort": 3000
},
{
"containerPort": 5000
}
@@ -19,6 +19,11 @@
},
"spec": {
"ports": [
{
"name": "3000",
"port": 3000,
"targetPort": 3000
},
{
"name": "5000",
"port": 5000,
@@ -177,6 +182,9 @@
"name": "test-server",
"image": " ",
"ports": [
{
"containerPort": 3000
},
{
"containerPort": 5000
}
@@ -0,0 +1,198 @@
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": [
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {
"complexlabel": "override",
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%",
"simplelabel.first": "Foo",
"simplelabel.second": "Bar"
},
"creationTimestamp": null,
"labels": {
"io.kompose.service": "server"
},
"name": "server"
},
"spec": {
"replicas": 1,
"selector": {
"matchLabels": {
"io.kompose.service": "server"
}
},
"strategy": {
"type": "Recreate"
},
"template": {
"metadata": {
"annotations": {
"complexlabel": "override",
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%",
"simplelabel.first": "Foo",
"simplelabel.second": "Bar"
},
"creationTimestamp": null,
"labels": {
"io.kompose.service": "server"
}
},
"spec": {
"containers": [
{
"env": [
{
"name": "NEW_ONE",
"value": "1234"
},
{
"name": "SAMPLE_TO_BE_OVERRIDDEN",
"value": "new"
},
{
"name": "SIMPLE_ONE",
"value": "true"
}
],
"image": "test",
"imagePullPolicy": "",
"name": "test-server",
"resources": {},
"volumeMounts": [
{
"mountPath": "/simple/base/volume",
"name": "server-claim0"
},
{
"mountPath": "/common/mount/point",
"name": "server-claim1"
},
{
"mountPath": "/additional/added/volume",
"name": "server-claim2"
},
{
"mountPath": "/base-tmpdir",
"name": "server-tmpfs0"
},
{
"mountPath": "/additional-tmpdir",
"name": "server-tmpfs1"
}
]
}
],
"restartPolicy": "Always",
"serviceAccountName": "",
"volumes": [
{
"name": "server-claim0",
"persistentVolumeClaim": {
"claimName": "server-claim0"
}
},
{
"name": "server-claim1",
"persistentVolumeClaim": {
"claimName": "server-claim1"
}
},
{
"name": "server-claim2",
"persistentVolumeClaim": {
"claimName": "server-claim2"
}
},
{
"emptyDir": {
"medium": "Memory"
},
"name": "server-tmpfs0"
},
{
"emptyDir": {
"medium": "Memory"
},
"name": "server-tmpfs1"
}
]
}
}
},
"status": {}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "server-claim0",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "server-claim0"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "100Mi"
}
}
},
"status": {}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "server-claim1",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "server-claim1"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "100Mi"
}
}
},
"status": {}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "server-claim2",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "server-claim2"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "100Mi"
}
}
},
"status": {}
}
]
}
@@ -0,0 +1,27 @@
version: '3'
services:
server:
image: test
container_name: test_server
environment:
- SIMPLE_ONE=true
- SAMPLE_TO_BE_OVERRIDDEN=original
expose:
- "3000"
dns:
- 1.1.1.1
- 8.8.8.8
dns_search: first.search.domain.com
external_links:
- other_service_1
- common_service:alias1
labels:
- "simplelabel.first=Foo"
- "complexlabel=original"
tmpfs:
- /base-tmpdir
volumes:
- /simple/base/volume
- /base/dir:/common/mount/point
@@ -0,0 +1,24 @@
version: '3'
services:
server:
image: test
container_name: test_server
environment:
- SAMPLE_TO_BE_OVERRIDDEN=new
- NEW_ONE=1234
expose:
- "5000"
dns: 9.9.9.9
dns_search:
- second.search.domain.com
external_links:
- other_service_2
- common_service:alias2
labels:
simplelabel.second: "Bar"
complexlabel: override
tmpfs: /additional-tmpdir
volumes:
- /additional/added/volume
- /override/dir:/common/mount/point