mirror of
https://github.com/containers/podman.git
synced 2025-05-17 06:59:07 +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)
|
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
|
// k8s-file == json-file
|
||||||
if hc.LogConfig.Type == define.KubernetesLogging {
|
if hc.LogConfig.Type == define.KubernetesLogging {
|
||||||
hc.LogConfig.Type = define.JSONLogging
|
hc.LogConfig.Type = define.JSONLogging
|
||||||
|
@ -474,6 +474,7 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
|
|||||||
User: cc.Config.User,
|
User: cc.Config.User,
|
||||||
UserNS: string(cc.HostConfig.UsernsMode),
|
UserNS: string(cc.HostConfig.UsernsMode),
|
||||||
UTS: string(cc.HostConfig.UTSMode),
|
UTS: string(cc.HostConfig.UTSMode),
|
||||||
|
CgroupNS: string(cc.HostConfig.CgroupnsMode),
|
||||||
Mount: mounts,
|
Mount: mounts,
|
||||||
VolumesFrom: cc.HostConfig.VolumesFrom,
|
VolumesFrom: cc.HostConfig.VolumesFrom,
|
||||||
Workdir: cc.Config.WorkingDir,
|
Workdir: cc.Config.WorkingDir,
|
||||||
|
@ -458,6 +458,32 @@ class ContainerTestCase(APITestCase):
|
|||||||
self.assertTrue("8080/tcp" in inspect_response["HostConfig"]["PortBindings"])
|
self.assertTrue("8080/tcp" in inspect_response["HostConfig"]["PortBindings"])
|
||||||
self.assertFalse("8081/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):
|
def execute_process(cmd):
|
||||||
return subprocess.run(
|
return subprocess.run(
|
||||||
cmd,
|
cmd,
|
||||||
|
Reference in New Issue
Block a user