ceph-devstack 0.2.0__tar.gz → 0.2.2__tar.gz

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.
Files changed (62) hide show
  1. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/PKG-INFO +1 -1
  2. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/host.py +1 -0
  3. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/requirements.py +9 -19
  4. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/PKG-INFO +1 -1
  5. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/test_requirements_core.py +5 -2
  6. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.flake8 +0 -0
  7. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.github/workflows/ci.yml +0 -0
  8. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.github/workflows/release.yml +0 -0
  9. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.github/workflows/tox.yml +0 -0
  10. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.gitignore +0 -0
  11. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/.pre-commit-config.yaml +0 -0
  12. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/Jenkinsfile +0 -0
  13. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/LICENSE +0 -0
  14. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/README.md +0 -0
  15. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/build_selinux_module.sh +0 -0
  16. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/Dockerfile.selinux +0 -0
  17. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/__init__.py +0 -0
  18. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/ceph_devstack.pp +0 -0
  19. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/ceph_devstack.te +0 -0
  20. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/cli.py +0 -0
  21. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/config.toml +0 -0
  22. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/exec.py +0 -0
  23. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/logging.conf +0 -0
  24. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/py.typed +0 -0
  25. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/__init__.py +0 -0
  26. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/ceph/__init__.py +0 -0
  27. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/ceph/containers.py +0 -0
  28. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/ceph/exceptions.py +0 -0
  29. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/ceph/requirements.py +0 -0
  30. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/ceph/utils.py +0 -0
  31. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/container.py +0 -0
  32. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack/resources/misc.py +0 -0
  33. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/SOURCES.txt +0 -0
  34. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/dependency_links.txt +0 -0
  35. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/entry_points.txt +0 -0
  36. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/requires.txt +0 -0
  37. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ceph_devstack.egg-info/top_level.txt +0 -0
  38. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/docs/cgroup_v2.md +0 -0
  39. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/pyproject.toml +0 -0
  40. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/pytest.ini +0 -0
  41. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/ruff.toml +0 -0
  42. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/setup.cfg +0 -0
  43. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/__init__.py +0 -0
  44. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/conftest.py +0 -0
  45. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/__init__.py +0 -0
  46. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/__init__.py +0 -0
  47. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/fixtures/__init__.py +0 -0
  48. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/fixtures/testnode-config.toml +0 -0
  49. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_cephdevstack_core.py +0 -0
  50. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_devstack.py +0 -0
  51. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_env_vars.py +0 -0
  52. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_requirements_ceph.py +0 -0
  53. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_ssh_keypair.py +0 -0
  54. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/ceph/test_testnode.py +0 -0
  55. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/test_container.py +0 -0
  56. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/test_misc.py +0 -0
  57. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/resources/test_podmanresource.py +0 -0
  58. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/test_config.py +0 -0
  59. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/test_deep_merge.py +0 -0
  60. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tests/test_parse_args.py +0 -0
  61. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/tox.ini +0 -0
  62. {ceph_devstack-0.2.0 → ceph_devstack-0.2.2}/uv.lock +0 -0
@@ -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
@@ -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
@@ -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
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes