mirror of
https://github.com/containers/podman.git
synced 2025-06-19 08:09:12 +08:00
Health Check is not handled in the compat LibpodToContainerJSON
Added parsing and handling for the healthCheck status within containers.go. Also modified tests fixes #10457 Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
This commit is contained in:
@ -403,6 +403,24 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,
|
|||||||
state.Status = define.ContainerStateCreated.String()
|
state.Status = define.ContainerStateCreated.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state.Health = &types.Health{
|
||||||
|
Status: inspect.State.Healthcheck.Status,
|
||||||
|
FailingStreak: inspect.State.Healthcheck.FailingStreak,
|
||||||
|
}
|
||||||
|
|
||||||
|
log := inspect.State.Healthcheck.Log
|
||||||
|
|
||||||
|
for _, item := range log {
|
||||||
|
res := &types.HealthcheckResult{}
|
||||||
|
s, _ := time.Parse(time.RFC3339Nano, item.Start)
|
||||||
|
e, _ := time.Parse(time.RFC3339Nano, item.End)
|
||||||
|
res.Start = s
|
||||||
|
res.End = e
|
||||||
|
res.ExitCode = item.ExitCode
|
||||||
|
res.Output = item.Output
|
||||||
|
state.Health.Log = append(state.Health.Log, res)
|
||||||
|
}
|
||||||
|
|
||||||
formatCapabilities(inspect.HostConfig.CapDrop)
|
formatCapabilities(inspect.HostConfig.CapDrop)
|
||||||
formatCapabilities(inspect.HostConfig.CapAdd)
|
formatCapabilities(inspect.HostConfig.CapAdd)
|
||||||
|
|
||||||
|
@ -14,6 +14,13 @@ class ContainerTestCase(APITestCase):
|
|||||||
obj = r.json()
|
obj = r.json()
|
||||||
self.assertEqual(len(obj), 1)
|
self.assertEqual(len(obj), 1)
|
||||||
|
|
||||||
|
def test_list_filters(self):
|
||||||
|
r = requests.get(self.podman_url + "/v1.40/containers/json?filters%3D%7B%22status%22%3A%5B%22running%22%5D%7D")
|
||||||
|
self.assertEqual(r.status_code, 200, r.text)
|
||||||
|
payload = r.json()
|
||||||
|
containerAmnt = len(payload)
|
||||||
|
self.assertGreater(containerAmnt, 0)
|
||||||
|
|
||||||
def test_list_all(self):
|
def test_list_all(self):
|
||||||
r = requests.get(self.uri("/containers/json?all=true"))
|
r = requests.get(self.uri("/containers/json?all=true"))
|
||||||
self.assertEqual(r.status_code, 200, r.text)
|
self.assertEqual(r.status_code, 200, r.text)
|
||||||
@ -25,6 +32,22 @@ class ContainerTestCase(APITestCase):
|
|||||||
self.assertId(r.content)
|
self.assertId(r.content)
|
||||||
_ = parse(r.json()["Created"])
|
_ = parse(r.json()["Created"])
|
||||||
|
|
||||||
|
r = requests.post(
|
||||||
|
self.podman_url + "/v1.40/containers/create?name=topcontainer",
|
||||||
|
json={"Cmd": ["top"], "Image": "alpine:latest"},
|
||||||
|
)
|
||||||
|
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/{payload['Id']}/json")
|
||||||
|
self.assertEqual(r.status_code, 200, r.text)
|
||||||
|
self.assertId(r.content)
|
||||||
|
out = r.json()
|
||||||
|
state = out["State"]["Health"]
|
||||||
|
self.assertIsInstance(state, dict)
|
||||||
|
|
||||||
def test_stats(self):
|
def test_stats(self):
|
||||||
r = requests.get(self.uri(self.resolve_container("/containers/{}/stats?stream=false")))
|
r = requests.get(self.uri(self.resolve_container("/containers/{}/stats?stream=false")))
|
||||||
self.assertIn(r.status_code, (200, 409), r.text)
|
self.assertIn(r.status_code, (200, 409), r.text)
|
||||||
|
Reference in New Issue
Block a user