Skip to content

Commit

Permalink
API: use no_hosts from containers.conf
Browse files Browse the repository at this point in the history
The API endpoints should properly honour the `no_hosts=true` setting in
containers.conf.

Fixes containers#13719

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
  • Loading branch information
Luap99 committed Apr 6, 2022
1 parent 5e821f7 commit 4daaf35
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 1 deletion.
1 change: 1 addition & 0 deletions cmd/podman/common/create_opts.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ func ContainerCreateToContainerCLIOpts(cc handlers.CreateContainerConfig, rtc *c
Network: nsmode,
PublishPorts: specPorts,
NetworkOptions: netOpts,
NoHosts: rtc.Containers.NoHosts,
}

// network names
Expand Down
13 changes: 12 additions & 1 deletion pkg/api/handlers/libpod/containers_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,18 @@ import (
// the new container ID on success along with any warnings.
func CreateContainer(w http.ResponseWriter, r *http.Request) {
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
var sg specgen.SpecGenerator
conf, err := runtime.GetConfigNoCopy()
if err != nil {
utils.InternalServerError(w, err)
return
}

// we have to set the default before we decode to make sure the correct default is set when the field is unset
sg := specgen.SpecGenerator{
ContainerNetworkConfig: specgen.ContainerNetworkConfig{
UseImageHosts: conf.Containers.NoHosts,
},
}

if err := json.NewDecoder(r.Body).Decode(&sg); err != nil {
utils.Error(w, http.StatusInternalServerError, errors.Wrap(err, "Decode()"))
Expand Down
43 changes: 43 additions & 0 deletions test/apiv2/20-containers.at
Original file line number Diff line number Diff line change
Expand Up @@ -447,3 +447,46 @@ t GET images/$iid/json 200 \

t DELETE containers/$cid 204
t DELETE images/docker.io/library/newrepo:v3?force=false 200

# test create without default no_hosts
t POST containers/create \
Image=$IMAGE \
201 \
.Id~[0-9a-f]\\{64\\}
cid=$(jq -r '.Id' <<<"$output")

t POST libpod/containers/$cid/init 204

t GET libpod/containers/$cid/json 200

cpid_file=$(jq -r '.ConmonPidFile' <<<"$output")
userdata_path=$(dirname $cpid_file)

t GET libpod/containers/$cid/json 200 \
.HostsPath=$userdata_path/hosts

t DELETE containers/$cid 204

# test create with default no_hosts=true
stop_service

CONTAINERS_CONF=$(pwd)/test/apiv2/containers.no_hosts.conf start_service

# check docker and libpod endpoint
for endpoint in containers/create libpod/containers/create; do
t POST $endpoint \
Image=$IMAGE \
201 \
.Id~[0-9a-f]\\{64\\}
cid=$(jq -r '.Id' <<<"$output")

t POST libpod/containers/$cid/init 204

t GET libpod/containers/$cid/json 200 \
.HostsPath=""

t DELETE containers/$cid 204
done

stop_service
start_service
2 changes: 2 additions & 0 deletions test/apiv2/containers.no_host.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[containers]
no_hosts=true

0 comments on commit 4daaf35

Please sign in to comment.