mirror of
https://github.com/containers/podman.git
synced 2025-05-16 22:48:46 +08:00
Merge pull request #26116 from inknos/compat-post-containers-create-cgroupsnsmode
compat: Add CgroupnsMode to POST /containers/create
This commit is contained in:
@ -507,6 +507,14 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*container.InspectResp
|
||||
}
|
||||
sort.Strings(hc.Binds)
|
||||
|
||||
// Map CgroupMode to CgroupnsMode for Docker API compatibility
|
||||
switch inspect.HostConfig.CgroupMode {
|
||||
case "private":
|
||||
hc.CgroupnsMode = container.CgroupnsModePrivate
|
||||
case "host":
|
||||
hc.CgroupnsMode = container.CgroupnsModeHost
|
||||
}
|
||||
|
||||
// k8s-file == json-file
|
||||
if hc.LogConfig.Type == define.KubernetesLogging {
|
||||
hc.LogConfig.Type = define.JSONLogging
|
||||
|
@ -474,6 +474,7 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
|
||||
User: cc.Config.User,
|
||||
UserNS: string(cc.HostConfig.UsernsMode),
|
||||
UTS: string(cc.HostConfig.UTSMode),
|
||||
CgroupNS: string(cc.HostConfig.CgroupnsMode),
|
||||
Mount: mounts,
|
||||
VolumesFrom: cc.HostConfig.VolumesFrom,
|
||||
Workdir: cc.Config.WorkingDir,
|
||||
|
@ -458,6 +458,32 @@ class ContainerTestCase(APITestCase):
|
||||
self.assertTrue("8080/tcp" in inspect_response["HostConfig"]["PortBindings"])
|
||||
self.assertFalse("8081/tcp" in inspect_response["HostConfig"]["PortBindings"])
|
||||
|
||||
def test_host_config_cgroupns_mode(self):
|
||||
for mode in ["private", "host"]:
|
||||
r = requests.post(
|
||||
self.podman_url + "/v1.40/containers/create",
|
||||
json={
|
||||
"Name": "cgroupns_" + mode,
|
||||
"Cmd": ["top"],
|
||||
"Image": "alpine:latest",
|
||||
"HostConfig": {
|
||||
"CgroupnsMode": mode
|
||||
}
|
||||
},
|
||||
)
|
||||
self.assertEqual(r.status_code, 201, r.text)
|
||||
payload = r.json()
|
||||
container_id = payload["Id"]
|
||||
self.assertIsNotNone(container_id)
|
||||
|
||||
r = requests.get(self.podman_url + f"/v1.40/containers/{container_id}/json")
|
||||
self.assertEqual(r.status_code, 200, r.text)
|
||||
inspect_response = r.json()
|
||||
self.assertEqual(mode, inspect_response["HostConfig"]["CgroupnsMode"])
|
||||
|
||||
r = requests.delete(self.podman_url + f"/v1.40/containers/{container_id}")
|
||||
self.assertEqual(r.status_code, 204, r.text)
|
||||
|
||||
def execute_process(cmd):
|
||||
return subprocess.run(
|
||||
cmd,
|
||||
|
Reference in New Issue
Block a user