1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
import os
import random
import unittest
import requests
from .fixtures import APITestCase
class VolumeTestCase(APITestCase):
def test_volume(self):
name = f"Volume_{random.getrandbits(160):x}"
ls = requests.get(self.podman_url + "/v1.40/volumes")
self.assertEqual(ls.status_code, 200, ls.text)
# See https://docs.docker.com/engine/api/v1.40/#operation/VolumeList
required_keys = (
"Volumes",
"Warnings",
)
volumes = ls.json()
self.assertIsInstance(volumes, dict)
for key in required_keys:
self.assertIn(key, volumes)
create = requests.post(self.podman_url + "/v1.40/volumes/create", json={"Name": name})
self.assertEqual(create.status_code, 201, create.text)
# See https://docs.docker.com/engine/api/v1.40/#operation/VolumeCreate
# and https://docs.docker.com/engine/api/v1.40/#operation/VolumeInspect
required_keys = (
"Name",
"Driver",
"Mountpoint",
"Labels",
"Scope",
"Options",
)
volume = create.json()
self.assertIsInstance(volume, dict)
for k in required_keys:
self.assertIn(k, volume)
self.assertEqual(volume["Name"], name)
inspect = requests.get(self.podman_url + f"/v1.40/volumes/{name}")
self.assertEqual(inspect.status_code, 200, inspect.text)
volume = inspect.json()
self.assertIsInstance(volume, dict)
for k in required_keys:
self.assertIn(k, volume)
rm = requests.delete(self.podman_url + f"/v1.40/volumes/{name}")
self.assertEqual(rm.status_code, 204, rm.text)
# recreate volume with data and then prune it
r = requests.post(self.podman_url + "/v1.40/volumes/create", json={"Name": name})
self.assertEqual(create.status_code, 201, create.text)
create = r.json()
with open(os.path.join(create["Mountpoint"], "test_prune"), "w") as file:
file.writelines(["This is a test\n", "This is a good test\n"])
prune = requests.post(self.podman_url + "/v1.40/volumes/prune")
self.assertEqual(prune.status_code, 200, prune.text)
payload = prune.json()
self.assertIn(name, payload["VolumesDeleted"])
self.assertGreater(payload["SpaceReclaimed"], 0)
if __name__ == "__main__":
unittest.main()
|