ceph-devstack 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ceph_devstack/host.py CHANGED
@@ -73,6 +73,7 @@ class Host:
73
73
  self._kernel_version = parse_version(raw_version.split("-")[0])
74
74
  return self._kernel_version
75
75
 
76
+ @property
76
77
  def os_type(self) -> str:
77
78
  if not hasattr(self, "_os_type"):
78
79
  proc = self.run(["uname"])
@@ -1,6 +1,5 @@
1
1
  import shlex
2
2
 
3
- from pathlib import Path
4
3
  from packaging.version import parse as parse_version, Version
5
4
  from typing import List
6
5
 
@@ -56,7 +55,7 @@ class PodmanPlatform(LocalFixableRequirement):
56
55
 
57
56
  @property
58
57
  def fix_cmd(self):
59
- host_os = self.host.os_type()
58
+ host_os = self.host.os_type
60
59
  if host_os == "darwin":
61
60
  return ["brew", "install", "podman"]
62
61
  return ["sudo", host.package_manager(), "install", "-y", "podman"]
@@ -161,28 +160,19 @@ class PodmanVersion(Requirement):
161
160
  return True
162
161
 
163
162
 
164
- class PodmanRuntime(Requirement):
163
+ class PodmanRuntime(FixableRequirement):
164
+ suggest_msg = "Could not find the 'crun' container runtime"
165
+
165
166
  @property
166
167
  def fix_cmd(self):
167
- if self.host.os_type() != "darwin":
168
+ if self.host.os_type != "darwin":
168
169
  return ["sudo", self.host.package_manager(), "install", "-y", "crun"]
169
170
  return []
170
171
 
171
172
  async def check(self):
172
173
  podman_info = await self.host.podman_info()
173
- storage_conf_path = podman_info["store"]["configFile"]
174
174
  runtime = podman_info["host"]["ociRuntime"]["name"]
175
- if runtime == "crun":
176
- return True
177
- else:
178
- containers_conf_path = Path(storage_conf_path).parent / "containers.conf"
179
- cmd = host.cmd(["podman", "system", "reset"])
180
- logger.error(
181
- f"The configured runtime is '{runtime}'. "
182
- f"It must be set to 'crun' in {containers_conf_path}. "
183
- f"Afterward, run '{cmd}'."
184
- )
185
- return False
175
+ return runtime == "crun"
186
176
 
187
177
 
188
178
  class SELinuxBoolean(FixableRequirement):
@@ -214,7 +204,7 @@ class PodmanDNSPlugin(FixableRequirement):
214
204
 
215
205
  @property
216
206
  def dns_plugin_path(self):
217
- os_type = self.host.os_type()
207
+ os_type = self.host.os_type
218
208
  if os_type in ["ubuntu", "debian"]:
219
209
  return "/usr/lib/cni/dnsname"
220
210
  return "/usr/libexec/cni/dnsname"
@@ -225,7 +215,7 @@ class PodmanDNSPlugin(FixableRequirement):
225
215
 
226
216
  @property
227
217
  def fix_cmd(self):
228
- os_type = self.host.os_type()
218
+ os_type = self.host.os_type
229
219
  if os_type == "centos":
230
220
  return ["sudo", "dnf", "install", "-y", self.dns_plugin_path]
231
221
  elif os_type in ["ubuntu", "debian"]:
@@ -261,7 +251,7 @@ class AppArmorProfile(FixableRequirement):
261
251
  async def check_requirements():
262
252
  if not await PodmanPlatform().evaluate():
263
253
  return False
264
- if local_host.os_type() == "darwin":
254
+ if local_host.os_type == "darwin":
265
255
  if not await PodmanMachinePresent().evaluate():
266
256
  return False
267
257
  if not await PodmanMachineRunning().evaluate():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ceph-devstack
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Run a full teuthology lab on your laptop!
5
5
  Author-email: Zack Cerza <zack@cerza.org>
6
6
  License-Expression: MIT
@@ -5,10 +5,10 @@ ceph_devstack/ceph_devstack.te,sha256=68i9sBb1TAEnCJn2JtyM-ECzPSuZck4vKoymcTbptX
5
5
  ceph_devstack/cli.py,sha256=lSYwXrwfP8D-k60XuwSqhwZSZNKJFFQfvRM-av1rePM,2057
6
6
  ceph_devstack/config.toml,sha256=HsxO3FhwZkHomde69QfElztuN8U1bxk7cQk1_iWB4w0,562
7
7
  ceph_devstack/exec.py,sha256=gn95GEQttB6xgdWXXvTsxUxcQsx9TUu6PC8QVQ0_Y7w,2674
8
- ceph_devstack/host.py,sha256=IRLhQaE_jl4VyHLArkqGzYWi3mxT8_sCG6Y7iDol4vU,5456
8
+ ceph_devstack/host.py,sha256=w_Hx912y1g62yXkTuPJsw_UdUwxJr_Pbxrj8iZtEP7Y,5470
9
9
  ceph_devstack/logging.conf,sha256=bGlswYcL_fz522y9EoKZOLInrSss8D44glNq0FievFY,521
10
10
  ceph_devstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- ceph_devstack/requirements.py,sha256=7Ashf6qfXW1k-L1Gakj5_Q-fPOBEhMQWnh0hIvtUjh0,9980
11
+ ceph_devstack/requirements.py,sha256=aE7PjSdcNuD1no12anidTZhjlYxEig8O0iatlz8EeHw,9536
12
12
  ceph_devstack/resources/__init__.py,sha256=D0vhJBU9Pqslq7hg2qreW_ZhndcRIOHZVVUA0zAIeDM,3386
13
13
  ceph_devstack/resources/container.py,sha256=suJNOQ9fMRfCnXQwvEZOcg4jnPtrxb-d17a3Y1s1xG0,5388
14
14
  ceph_devstack/resources/misc.py,sha256=iGD_3Xsqako-dOZrHJFEJbMWoQIzy7Q_KkEnkdBb8m0,552
@@ -17,13 +17,13 @@ ceph_devstack/resources/ceph/containers.py,sha256=3QEwkh3I7f3r47SnlnMB-_mU8fYGR0
17
17
  ceph_devstack/resources/ceph/exceptions.py,sha256=C4ldyEA7Cukp-QUOwL-MnQ8kpgMDIQ6r_JQe0E9q4eM,101
18
18
  ceph_devstack/resources/ceph/requirements.py,sha256=ZJt7Eeb5y2bOc7dJN3-15ftAyySi80phD7erBsGdqSU,2691
19
19
  ceph_devstack/resources/ceph/utils.py,sha256=6-1sageEiLMcx53KHo_GKlIjaGw3swoZk8cQ-e-tDP0,1276
20
- ceph_devstack-0.2.0.dist-info/licenses/LICENSE,sha256=bFeYufyeS1qw0W8pkW1Wj09F2itqX7TAGTnA2NIpApU,1067
20
+ ceph_devstack-0.2.2.dist-info/licenses/LICENSE,sha256=bFeYufyeS1qw0W8pkW1Wj09F2itqX7TAGTnA2NIpApU,1067
21
21
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  tests/conftest.py,sha256=qulfsMZz3PyAFMdWQ_VWpOFT9L_BiavRax_yQF2Ne24,128
23
23
  tests/test_config.py,sha256=RLAjt9DAcAo8GQXgv9dc3Ka3hhtongMs6ioz5YQwKhY,4394
24
24
  tests/test_deep_merge.py,sha256=IP9zzCThmhVghl9XjAAiSrKsPdouH3KbEUaKq8n3Soc,2178
25
25
  tests/test_parse_args.py,sha256=2JDAT4Id88Ywl5QmiUHqq5IDGm_j5Yl3Kk7pbl3sOEk,7550
26
- tests/test_requirements_core.py,sha256=t7dE53E6N3owO1aHd0nLjXGZ9WDGFFUNIQKZQd1jJBY,19985
26
+ tests/test_requirements_core.py,sha256=MnhENRBFQkhIYD9sI1HBYBEocqiDBChRw7bOuSI-kPk,20089
27
27
  tests/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  tests/resources/test_container.py,sha256=Xc4IGLf0PViSBIhUQXZHZQtRc-uI2R3PyNjU8lpX6BE,9081
29
29
  tests/resources/test_misc.py,sha256=dtOAPngMCTE9bYuYjNuxBiRaxvEibXuBq5VwVsWBdnY,1560
@@ -37,8 +37,8 @@ tests/resources/ceph/test_ssh_keypair.py,sha256=M8Tc1CY9zb_1WaccMSfnSN35tyjR-Cbl
37
37
  tests/resources/ceph/test_testnode.py,sha256=wiftdOU058z9IKp5LeUNlv81U9XjojRUI0fYt8mrbgg,1253
38
38
  tests/resources/ceph/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  tests/resources/ceph/fixtures/testnode-config.toml,sha256=XaI4VACYHeshb7LLxN3viKBNxOBLOUpPuwlcQJyQO-U,44
40
- ceph_devstack-0.2.0.dist-info/METADATA,sha256=6QrXrp1vvd4eAAtp8rmKlzPnh6FdyBD9HLBPW-thmjI,6877
41
- ceph_devstack-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
42
- ceph_devstack-0.2.0.dist-info/entry_points.txt,sha256=3cXOGOSb23ATcOZVQFBTY_imM4VFgFddXlYi-m8PA10,57
43
- ceph_devstack-0.2.0.dist-info/top_level.txt,sha256=NzTr-vAk2OWL08T8PsmfqkJZNEuezF5oaiHCMJBhHPM,20
44
- ceph_devstack-0.2.0.dist-info/RECORD,,
40
+ ceph_devstack-0.2.2.dist-info/METADATA,sha256=2wMAY48hHHICXdTTIlrXLl0ZM1fsqXJtl0kN-soxBFQ,6877
41
+ ceph_devstack-0.2.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
42
+ ceph_devstack-0.2.2.dist-info/entry_points.txt,sha256=3cXOGOSb23ATcOZVQFBTY_imM4VFgFddXlYi-m8PA10,57
43
+ ceph_devstack-0.2.2.dist-info/top_level.txt,sha256=NzTr-vAk2OWL08T8PsmfqkJZNEuezF5oaiHCMJBhHPM,20
44
+ ceph_devstack-0.2.2.dist-info/RECORD,,
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
  import pytest
3
3
  from packaging.version import parse as parse_version
4
- from unittest.mock import AsyncMock, MagicMock, patch
4
+ from unittest.mock import AsyncMock, MagicMock, patch, PropertyMock
5
5
 
6
6
 
7
7
  from ceph_devstack import config, requirements
@@ -303,7 +303,10 @@ class TestPodmanDNSPluginInit:
303
303
  return "/usr/lib/cni/dnsname"
304
304
 
305
305
  def test_podman_dns_plugin_config(self, cls, os_type, dns_plugin_path):
306
- with patch.object(cls.host, "os_type", return_value=os_type):
306
+ with patch(
307
+ "ceph_devstack.host.Host.os_type", new_callable=PropertyMock
308
+ ) as MockHost:
309
+ MockHost.return_value = os_type
307
310
  req = cls()
308
311
  assert req.check_cmd == ["test", "-x", dns_plugin_path]
309
312