bug: fix annotation bug (#1887)

#### What type of PR is this?

<!--
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
-->

#### What this PR does / why we need it:

When supplying a label in the compose file, it should stay in the output
too.

#### Which issue(s) this PR fixes:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->

Fixes https://github.com/kubernetes/kompose/issues/1885

#### Special notes for your reviewer:

Signed-off-by: Charlie Drage <charlie@charliedrage.com>
This commit is contained in:
Charlie Drage 2024-06-02 14:46:39 -04:00 committed by GitHub
parent 50ec43d1e0
commit 1f7441845e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 71 additions and 7 deletions

View File

@ -249,10 +249,6 @@ func ConfigAllLabels(name string, service *kobject.ServiceConfig) map[string]str
func ConfigAnnotations(service kobject.ServiceConfig) map[string]string {
annotations := map[string]string{}
if !service.WithKomposeAnnotation {
return annotations
}
for key, value := range service.Annotations {
annotations[key] = value
}
@ -270,6 +266,15 @@ func ConfigAnnotations(service kobject.ServiceConfig) map[string]string {
annotations["kompose.version"] = version.VERSION + " (" + version.GITCOMMIT + ")"
}
// if service.WithKomposeAnnotation = false, we remove **all** kompose annotations (io.kompose.*)
if !service.WithKomposeAnnotation {
for key := range annotations {
if strings.HasPrefix(key, "kompose.") {
delete(annotations, key)
}
}
}
return annotations
}

View File

@ -386,3 +386,8 @@ os_cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/envvars-with-status/compos
os_output="$KOMPOSE_ROOT/script/test/fixtures/envvars-with-status/output-os.yaml"
convert::expect_success "$k8s_cmd" "$k8s_output" || exit 1
convert::expect_success "$os_cmd" "$os_output" || exit 1
# Test label in compose.yaml appears in the output annotation
k8s_cmd="kompose -f $KOMPOSE_ROOT/script/test/fixtures/label/compose.yaml convert --stdout --with-kompose-annotation=false"
k8s_output="$KOMPOSE_ROOT/script/test/fixtures/label/output-k8s.yaml"
convert::expect_success "$k8s_cmd" "$k8s_output" || exit 1

View File

@ -5,6 +5,4 @@ services:
- "8081:8080"
- "8026:8025"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /tmp:/tmp:ro

View File

@ -45,3 +45,4 @@ spec:
- containerPort: 8025
protocol: TCP
restartPolicy: Always

View File

@ -73,3 +73,4 @@ spec:
name: latest
referencePolicy:
type: ""

View File

@ -0,0 +1,7 @@
services:
app:
image: node:18-alpine
ports:
- 3000:3000
labels:
- "com.example.label=foo"

View File

@ -0,0 +1,47 @@
---
apiVersion: v1
kind: Service
metadata:
annotations:
com.example.label: foo
labels:
io.kompose.service: app
name: app
spec:
ports:
- name: "3000"
port: 3000
targetPort: 3000
selector:
io.kompose.service: app
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
com.example.label: foo
labels:
io.kompose.service: app
name: app
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: app
template:
metadata:
annotations:
com.example.label: foo
labels:
io.kompose.network/label-default: "true"
io.kompose.service: app
spec:
containers:
- image: node:18-alpine
name: app
ports:
- containerPort: 3000
protocol: TCP
restartPolicy: Always