Merge pull request #25844 from ygalblum/quadlet-network-delete

Quadlet - allow deleting the network when stopping the service
This commit is contained in:
openshift-merge-bot[bot]
2025-04-14 17:57:45 +00:00
committed by GitHub
5 changed files with 95 additions and 17 deletions

View File

@ -0,0 +1,7 @@
## assert-podman-stop-post-args "network"
## assert-podman-stop-post-args "rm"
## assert-podman-stop-post-final-args "test-network"
[Network]
NetworkName=test-network
NetworkDeleteOnStop=true

View File

@ -1017,6 +1017,7 @@ BOGUS=foo
Entry("Network - subnet, gateway and range", "subnet-trio.network"),
Entry("Network - global args", "globalargs.network"),
Entry("Network - Containers Conf Modules", "containersconfmodule.network"),
Entry("Network - Delete on stop", "delete.network"),
Entry("Image - Basic", "basic.image"),
Entry("Image - Architecture", "arch.image"),

View File

@ -517,6 +517,63 @@ EOF
run_podman network rm $network_name
}
@test "quadlet - network delete with dependencies" {
# Save the unit name to use as the network for the container
local network_name=$(safename)
local quadlet_network_unit=dep_$(safename).network
local quadlet_network_file=$PODMAN_TMPDIR/${quadlet_network_unit}
cat > $quadlet_network_file <<EOF
[Network]
NetworkName=${network_name}
NetworkDeleteOnStop=true
EOF
local quadlet_tmpdir=$(mktemp -d --tmpdir=$PODMAN_TMPDIR quadlet.XXXXXX)
# Have quadlet create the systemd unit file for the network unit
run_quadlet "$quadlet_network_file" "$quadlet_tmpdir"
# Save the network service name since the variable will be overwritten
local network_service=$QUADLET_SERVICE_NAME
local quadlet_container_file=$PODMAN_TMPDIR/user_$(safename).container
cat > $quadlet_container_file <<EOF
[Container]
Image=$IMAGE
Exec=top
Network=$quadlet_network_unit
EOF
run_quadlet "$quadlet_container_file" "$quadlet_tmpdir"
# Save the container service name for readability
local container_service=$QUADLET_SERVICE_NAME
# Network should not exist
run_podman 1 network exists $network_name
# Start the container service
service_setup $container_service
# Network system unit should be active
run systemctl show --property=ActiveState "$network_service"
assert "$output" = "ActiveState=active" \
"network should be active via dependency"
# Network should exist
run_podman network exists $network_name
# Stop the Network Service
service_cleanup $network_service inactive
# Container system unit should be active
run systemctl show --property=ActiveState "$container_service"
assert "$output" = "ActiveState=failed" \
"container service should be failed via dependency"
# Network should not exist
run_podman 1 network exists $network_name
}
# A quadlet container depends on a quadlet network
@test "quadlet - network dependency" {
# Save the unit name to use as the network for the container