clonebox 1.1.6__tar.gz → 1.1.7__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 (59) hide show
  1. {clonebox-1.1.6/src/clonebox.egg-info → clonebox-1.1.7}/PKG-INFO +1 -1
  2. {clonebox-1.1.6 → clonebox-1.1.7}/pyproject.toml +1 -1
  3. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/cli.py +2 -0
  4. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/validator.py +14 -1
  5. {clonebox-1.1.6 → clonebox-1.1.7/src/clonebox.egg-info}/PKG-INFO +1 -1
  6. {clonebox-1.1.6 → clonebox-1.1.7}/LICENSE +0 -0
  7. {clonebox-1.1.6 → clonebox-1.1.7}/README.md +0 -0
  8. {clonebox-1.1.6 → clonebox-1.1.7}/setup.cfg +0 -0
  9. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/__init__.py +0 -0
  10. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/__main__.py +0 -0
  11. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/backends/libvirt_backend.py +0 -0
  12. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/backends/qemu_disk.py +0 -0
  13. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/backends/subprocess_runner.py +0 -0
  14. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/cloner.py +0 -0
  15. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/container.py +0 -0
  16. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/dashboard.py +0 -0
  17. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/detector.py +0 -0
  18. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/di.py +0 -0
  19. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/exporter.py +0 -0
  20. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/health/__init__.py +0 -0
  21. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/health/manager.py +0 -0
  22. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/health/models.py +0 -0
  23. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/health/probes.py +0 -0
  24. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/importer.py +0 -0
  25. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/interfaces/disk.py +0 -0
  26. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/interfaces/hypervisor.py +0 -0
  27. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/interfaces/network.py +0 -0
  28. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/interfaces/process.py +0 -0
  29. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/logging.py +0 -0
  30. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/models.py +0 -0
  31. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/monitor.py +0 -0
  32. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/p2p.py +0 -0
  33. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/profiles.py +0 -0
  34. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/resource_monitor.py +0 -0
  35. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/resources.py +0 -0
  36. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/rollback.py +0 -0
  37. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/secrets.py +0 -0
  38. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/snapshots/__init__.py +0 -0
  39. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/snapshots/manager.py +0 -0
  40. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/snapshots/models.py +0 -0
  41. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/templates/profiles/ml-dev.yaml +0 -0
  42. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox/templates/profiles/web-stack.yaml +0 -0
  43. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox.egg-info/SOURCES.txt +0 -0
  44. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox.egg-info/dependency_links.txt +0 -0
  45. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox.egg-info/entry_points.txt +0 -0
  46. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox.egg-info/requires.txt +0 -0
  47. {clonebox-1.1.6 → clonebox-1.1.7}/src/clonebox.egg-info/top_level.txt +0 -0
  48. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_cli.py +0 -0
  49. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_cloner.py +0 -0
  50. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_cloner_simple.py +0 -0
  51. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_container.py +0 -0
  52. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_coverage_additional.py +0 -0
  53. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_coverage_boost_final.py +0 -0
  54. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_dashboard_coverage.py +0 -0
  55. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_detector.py +0 -0
  56. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_models.py +0 -0
  57. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_network.py +0 -0
  58. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_profiles.py +0 -0
  59. {clonebox-1.1.6 → clonebox-1.1.7}/tests/test_validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clonebox
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Clone your workstation environment to an isolated VM with selective apps, paths and services
5
5
  Author: CloneBox Team
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "clonebox"
7
- version = "1.1.6"
7
+ version = "1.1.7"
8
8
  description = "Clone your workstation environment to an isolated VM with selective apps, paths and services"
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
@@ -92,6 +92,7 @@ def _resolve_vm_name_and_config_file(name: Optional[str]) -> Tuple[str, Optional
92
92
 
93
93
  def _qga_ping(vm_name: str, conn_uri: str) -> bool:
94
94
  import subprocess
95
+ import json
95
96
 
96
97
  try:
97
98
  result = subprocess.run(
@@ -116,6 +117,7 @@ def _qga_exec(vm_name: str, conn_uri: str, command: str, timeout: int = 10) -> O
116
117
  import subprocess
117
118
  import base64
118
119
  import time
120
+ import json
119
121
 
120
122
  try:
121
123
  payload = {
@@ -728,7 +728,20 @@ class VMValidator:
728
728
  return None if out is None else out.strip() == "yes"
729
729
 
730
730
  def _run_test(app: str) -> Optional[bool]:
731
- user_env = f"sudo -u {vm_user} env HOME=/home/{vm_user} XDG_RUNTIME_DIR=/run/user/1000"
731
+ uid_out = self._exec_in_vm(f"id -u {vm_user} 2>/dev/null || true", timeout=10)
732
+ vm_uid = (uid_out or "").strip()
733
+ if not vm_uid.isdigit():
734
+ vm_uid = "1000"
735
+
736
+ runtime_dir = f"/run/user/{vm_uid}"
737
+ self._exec_in_vm(
738
+ f"mkdir -p {runtime_dir} && chown {vm_uid}:{vm_uid} {runtime_dir} && chmod 700 {runtime_dir}",
739
+ timeout=10,
740
+ )
741
+
742
+ user_env = (
743
+ f"sudo -u {vm_user} env HOME=/home/{vm_user} USER={vm_user} LOGNAME={vm_user} XDG_RUNTIME_DIR={runtime_dir}"
744
+ )
732
745
 
733
746
  if app == "pycharm-community":
734
747
  out = self._exec_in_vm(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clonebox
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Clone your workstation environment to an isolated VM with selective apps, paths and services
5
5
  Author: CloneBox Team
6
6
  License: Apache-2.0
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