Files
podman/test/apiv2/80-kube.at
fixomatic-ctrl 1dd90dbe20 feat(libpod): support kube play tar content-type (#24015)
feat(libpod): support kube play tar content-type

Signed-off-by: fixomatic-ctrl <180758136+fixomatic-ctrl@users.noreply.github.com>
2024-09-27 15:40:55 +02:00

150 lines
4.5 KiB
Bash

# -*- sh -*-
#
# test more container-related endpoints
#
podman create $IMAGE true
t GET libpod/containers/json?last=1 200 \
length=1 \
.[0].Id~[0-9a-f]\\{64\\} \
.[0].Image=$IMAGE \
.[0].Command[0]="true" \
.[0].IsInfra=false
cid=$(jq -r '.[0].Id' <<<"$output")
# Make sure that generate-kube works
t GET libpod/generate/kube?names=$cid 200
like "$output" ".*apiVersion:.*" "Check generated kube yaml - apiVersion"
like "$output" ".*kind:\\sPod.*" "Check generated kube yaml - kind: Pod"
like "$output" ".*metadata:.*" "Check generated kube yaml - metadata"
like "$output" ".*spec:.*" "Check generated kube yaml - spec"
t GET "libpod/generate/kube?service=true&names=$cid" 200
like "$output" ".*apiVersion:.*" "Check generated kube yaml(service=true) - apiVersion"
like "$output" ".*kind:\\sPod.*" "Check generated kube yaml(service=true) - kind: Pod"
like "$output" ".*metadata:.*" "Check generated kube yaml(service=true) - metadata"
like "$output" ".*spec:.*" "Check generated kube yaml(service=true) - spec"
like "$output" ".*kind:\\sService.*" "Check generated kube yaml(service=true) - kind: Service"
t GET "libpod/generate/kube?type=deployment&names=$cid" 200
like "$output" ".*apiVersion:.*" "Check generated kube yaml - apiVersion"
like "$output" ".*kind:\\sDeployment.*" "Check generated kube yaml - kind: Deployment"
like "$output" ".*metadata:.*" "Check generated kube yaml - metadata"
like "$output" ".*spec:.*" "Check generated kube yaml - spec"
t GET "libpod/generate/kube?type=job&names=$cid" 200
like "$output" ".*apiVersion:.*" "Check generated kube yaml - apiVersion"
like "$output" ".*kind:\\sJob.*" "Check generated kube yaml - kind: Job"
like "$output" ".*metadata:.*" "Check generated kube yaml - metadata"
like "$output" ".*spec:.*" "Check generated kube yaml - spec"
TMPD=$(mktemp -d podman-apiv2-test-kube.XXXXXX)
YAML="${TMPD}/kube.yaml"
echo "$output" > $YAML
t DELETE libpod/containers/$cid 200 .[0].Id=$cid
# Make sure that kube-play works
t POST libpod/kube/play $YAML 200 \
.Pods[0].ID~[0-9a-f]\\{64\\} \
.Pods[0].ContainerErrors=null \
.Pods[0].Containers[0]~[0-9a-f]\\{64\\}
t POST libpod/kube/play $YAML 500
t POST 'libpod/kube/play?replace=true' $YAML 200 \
.Pods[0].ID~[0-9a-f]\\{64\\} \
.Pods[0].ContainerErrors=null \
.Pods[0].Containers[0]~[0-9a-f]\\{64\\}
t DELETE libpod/kube/play $YAML 200 \
.StopReport[0].Id~[0-9a-f]\\{64\\} \
.RmReport[0].Id~[0-9a-f]\\{64\\}
# Make sure that play-kube works
t POST libpod/play/kube $YAML 200 \
.Pods[0].ID~[0-9a-f]\\{64\\} \
.Pods[0].ContainerErrors=null \
.Pods[0].Containers[0]~[0-9a-f]\\{64\\}
t DELETE libpod/play/kube $YAML 200 \
.StopReport[0].Id~[0-9a-f]\\{64\\} \
.RmReport[0].Id~[0-9a-f]\\{64\\}
rm -rf $TMPD
# check kube play works when uploading body as a tar
TMPD=$(mktemp -d podman-apiv2-test-kube.XXXXXX)
KUBE_PLAY_TAR="${TMPD}/kubeplay.tar"
cat > $TMPD/play.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
name: demo-tar-remote
spec:
containers:
- name: container
image: ${IMAGE}
EOF
# Tar the content of the tmp folder
tar --format=posix -C $TMPD -cvf ${KUBE_PLAY_TAR} play.yaml &> /dev/null
t POST "libpod/play/kube" $KUBE_PLAY_TAR 200 \
.Pods[0].ID~[0-9a-f]\\{64\\} \
.Pods[0].ContainerErrors=null \
.Pods[0].Containers[0]~[0-9a-f]\\{64\\}
# Cleanup
t DELETE libpod/kube/play $TMPD/play.yaml 200 \
.StopReport[0].Id~[0-9a-f]\\{64\\} \
.RmReport[0].Id~[0-9a-f]\\{64\\}
rm -rf $TMPD
# check kube play is capable of building the image when uploading body as a tar
TMPD=$(mktemp -d podman-apiv2-test-kube-build.XXXXXX)
KUBE_PLAY_TAR="${TMPD}/kubeplay.tar"
# Generate an unique label value
LABEL_VALUE="foo-$(date +%s)"
cat > $TMPD/play.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
name: demo-build-remote
spec:
containers:
- name: container
image: barfoo
EOF
mkdir $TMPD/barfoo
cat > $TMPD/barfoo/Containerfile << EOF
FROM ${IMAGE}
LABEL bar="${LABEL_VALUE}"
EOF
tar --format=posix -C $TMPD -cvf ${KUBE_PLAY_TAR} . &> /dev/null
t POST "libpod/play/kube?build=true" $KUBE_PLAY_TAR 200 \
.Pods[0].ID~[0-9a-f]\\{64\\} \
.Pods[0].ContainerErrors=null \
.Pods[0].Containers[0]~[0-9a-f]\\{64\\}
# Get the container id created
cid=$(jq -r '.Pods[0].Containers[0]' <<<"$output")
# Ensure the image build has the label defined in the Containerfile
t GET containers/$cid/json 200 \
.Config.Labels.bar="${LABEL_VALUE}"
# Cleanup
t DELETE "libpod/kube/play" $TMPD/play.yaml 200 \
.StopReport[0].Id~[0-9a-f]\\{64\\} \
.RmReport[0].Id~[0-9a-f]\\{64\\}
rm -rf $TMPD
# vim: filetype=sh