portacode 1.4.17.dev0__py3-none-any.whl → 1.4.17.dev1__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.
- portacode/_version.py +2 -2
- portacode/connection/handlers/proxmox_infra.py +22 -19
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/METADATA +1 -1
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/RECORD +8 -8
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/WHEEL +0 -0
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/entry_points.txt +0 -0
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/licenses/LICENSE +0 -0
- {portacode-1.4.17.dev0.dist-info → portacode-1.4.17.dev1.dist-info}/top_level.txt +0 -0
portacode/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.4.17.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 4, 17, '
|
|
31
|
+
__version__ = version = '1.4.17.dev1'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 17, 'dev1')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -48,6 +48,7 @@ UNIT_DIR = Path("/etc/systemd/system")
|
|
|
48
48
|
_MANAGED_CONTAINERS_CACHE_TTL_S = 30.0
|
|
49
49
|
_MANAGED_CONTAINERS_CACHE: Dict[str, Any] = {"timestamp": 0.0, "summary": None}
|
|
50
50
|
_MANAGED_CONTAINERS_CACHE_LOCK = threading.Lock()
|
|
51
|
+
_CAPACITY_LOCK = threading.Lock()
|
|
51
52
|
TEMPLATES_REFRESH_INTERVAL_S = 300
|
|
52
53
|
|
|
53
54
|
ProgressCallback = Callable[[int, int, Dict[str, Any], str, Optional[Dict[str, Any]]], None]
|
|
@@ -1153,18 +1154,19 @@ def _start_container(proxmox: Any, node: str, vmid: int) -> Tuple[Dict[str, Any]
|
|
|
1153
1154
|
logger.info("Container %s already running (%ss)", vmid, uptime)
|
|
1154
1155
|
return status, 0.0
|
|
1155
1156
|
|
|
1156
|
-
# Validate capacity using the same math as the dashboard.
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1157
|
+
# Validate capacity using the same math as the dashboard and serialize allocation.
|
|
1158
|
+
with _CAPACITY_LOCK:
|
|
1159
|
+
summary = _get_managed_containers_summary(force=True)
|
|
1160
|
+
cfg = proxmox.nodes(node).lxc(vmid).config.get()
|
|
1161
|
+
payload = {
|
|
1162
|
+
"ram_mib": _to_mib(cfg.get("memory")),
|
|
1163
|
+
"disk_gib": _pick_container_disk_gib("lxc", cfg, {"rootfs": cfg.get("rootfs")}),
|
|
1164
|
+
"cpus": _pick_container_cpu_share("lxc", cfg, {}),
|
|
1165
|
+
}
|
|
1166
|
+
try:
|
|
1167
|
+
_assert_capacity_for_payload(payload, summary)
|
|
1168
|
+
except RuntimeError as exc:
|
|
1169
|
+
raise RuntimeError(f"Not enough resources to start container {vmid}: {exc}") from exc
|
|
1168
1170
|
|
|
1169
1171
|
upid = proxmox.nodes(node).lxc(vmid).status.start.post()
|
|
1170
1172
|
return _wait_for_task(proxmox, node, upid)
|
|
@@ -1902,12 +1904,14 @@ class CreateProxmoxContainerHandler(SyncHandler):
|
|
|
1902
1904
|
payload["cores"] = int(max(math.ceil(payload["cpus"]), 1))
|
|
1903
1905
|
payload["memory"] = int(payload["ram_mib"])
|
|
1904
1906
|
payload["node"] = node
|
|
1905
|
-
# Validate against current free resources (same math as dashboard charts).
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1907
|
+
# Validate against current free resources (same math as dashboard charts) with serialization.
|
|
1908
|
+
with _CAPACITY_LOCK:
|
|
1909
|
+
summary = _get_managed_containers_summary(force=True)
|
|
1910
|
+
try:
|
|
1911
|
+
_assert_capacity_for_payload(payload, summary)
|
|
1912
|
+
except RuntimeError as exc:
|
|
1913
|
+
raise RuntimeError(f"Not enough resources to create the container safely: {exc}") from exc
|
|
1914
|
+
vmid, _ = _instantiate_container(proxmox, node, payload)
|
|
1911
1915
|
logger.debug(
|
|
1912
1916
|
"Provisioning container node=%s template=%s ram=%s cpu=%s storage=%s",
|
|
1913
1917
|
node,
|
|
@@ -1916,7 +1920,6 @@ class CreateProxmoxContainerHandler(SyncHandler):
|
|
|
1916
1920
|
payload["cpus"],
|
|
1917
1921
|
payload["storage"],
|
|
1918
1922
|
)
|
|
1919
|
-
vmid, _ = _instantiate_container(proxmox, node, payload)
|
|
1920
1923
|
payload["vmid"] = vmid
|
|
1921
1924
|
payload["created_at"] = datetime.utcnow().isoformat() + "Z"
|
|
1922
1925
|
payload["status"] = "creating"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
portacode/README.md,sha256=4dKtpvR8LNgZPVz37GmkQCMWIr_u25Ao63iW56s7Ke4,775
|
|
2
2
|
portacode/__init__.py,sha256=oB3sV1wXr-um-RXio73UG8E5Xx6cF2ZVJveqjNmC-vQ,1086
|
|
3
3
|
portacode/__main__.py,sha256=jmHTGC1hzmo9iKJLv-SSYe9BSIbPPZ2IOpecI03PlTs,296
|
|
4
|
-
portacode/_version.py,sha256=
|
|
4
|
+
portacode/_version.py,sha256=30JbXF45c9c1UEsvLScl1Hcz0g1qPk9RGMCBErXUK0c,719
|
|
5
5
|
portacode/cli.py,sha256=mGLKoZ-T2FBF7IA9wUq0zyG0X9__-A1ao7gajjcVRH8,21828
|
|
6
6
|
portacode/data.py,sha256=5-s291bv8J354myaHm1Y7CQZTZyRzMU3TGe5U4hb-FA,1591
|
|
7
7
|
portacode/keypair.py,sha256=0OO4vHDcF1XMxCDqce61xFTlFwlTcmqe5HyGsXFEt7s,5838
|
|
@@ -22,7 +22,7 @@ portacode/connection/handlers/diff_handlers.py,sha256=iYTIRCcpEQ03vIPKZCsMTE5aZb
|
|
|
22
22
|
portacode/connection/handlers/file_handlers.py,sha256=nAJH8nXnX07xxD28ngLpgIUzcTuRwZBNpEGEKdRqohw,39507
|
|
23
23
|
portacode/connection/handlers/project_aware_file_handlers.py,sha256=AqgMnDqX2893T2NsrvUSCwjN5VKj4Pb2TN0S_SuboOE,9803
|
|
24
24
|
portacode/connection/handlers/project_state_handlers.py,sha256=v6ZefGW9i7n1aZLq2jOGumJIjYb6aHlPI4m1jkYewm8,1686
|
|
25
|
-
portacode/connection/handlers/proxmox_infra.py,sha256=
|
|
25
|
+
portacode/connection/handlers/proxmox_infra.py,sha256=afndfVsjcHWHsa8F2PkRnHmc67c39k5VMmJeUoSSnok,87601
|
|
26
26
|
portacode/connection/handlers/registry.py,sha256=qXGE60sYEWg6ZtVQzFcZ5YI2XWR6lMgw4hAL9x5qR1I,6181
|
|
27
27
|
portacode/connection/handlers/session.py,sha256=uNGfiO_1B9-_yjJKkpvmbiJhIl6b-UXlT86UTfd6WYE,42219
|
|
28
28
|
portacode/connection/handlers/system_handlers.py,sha256=fr12QpOr_Z8KYGUU-AYrTQwRPAcrLK85hvj3SEq1Kw8,14757
|
|
@@ -65,7 +65,7 @@ portacode/utils/__init__.py,sha256=NgBlWTuNJESfIYJzP_3adI1yJQJR0XJLRpSdVNaBAN0,3
|
|
|
65
65
|
portacode/utils/diff_apply.py,sha256=4Oi7ft3VUCKmiUE4VM-OeqO7Gk6H7PF3WnN4WHXtjxI,15157
|
|
66
66
|
portacode/utils/diff_renderer.py,sha256=S76StnQ2DLfsz4Gg0m07UwPfRp8270PuzbNaQq-rmYk,13850
|
|
67
67
|
portacode/utils/ntp_clock.py,sha256=VqCnWCTehCufE43W23oB-WUdAZGeCcLxkmIOPwInYHc,2499
|
|
68
|
-
portacode-1.4.17.
|
|
68
|
+
portacode-1.4.17.dev1.dist-info/licenses/LICENSE,sha256=2FGbCnUDgRYuQTkB1O1dUUpu5CVAjK1j4_p6ack9Z54,1066
|
|
69
69
|
test_modules/README.md,sha256=Do_agkm9WhSzueXjRAkV_xEj6Emy5zB3N3VKY5Roce8,9274
|
|
70
70
|
test_modules/__init__.py,sha256=1LcbHodIHsB0g-g4NGjSn6AMuCoGbymvXPYLOb6Z7F0,53
|
|
71
71
|
test_modules/test_device_online.py,sha256=QtYq0Dq9vME8Gp2O4fGSheqVf8LUtpsSKosXXk56gGM,1654
|
|
@@ -91,8 +91,8 @@ testing_framework/core/playwright_manager.py,sha256=Tw46qwxIhOFkS48C2IWIQHHNpEe-
|
|
|
91
91
|
testing_framework/core/runner.py,sha256=j2QwNJmAxVBmJvcbVS7DgPJUKPNzqfLmt_4NNdaKmZU,19297
|
|
92
92
|
testing_framework/core/shared_cli_manager.py,sha256=BESSNtyQb7BOlaOvZmm04T8Uezjms4KCBs2MzTxvzYQ,8790
|
|
93
93
|
testing_framework/core/test_discovery.py,sha256=2FZ9fJ8Dp5dloA-fkgXoJ_gCMC_nYPBnA3Hs2xlagzM,4928
|
|
94
|
-
portacode-1.4.17.
|
|
95
|
-
portacode-1.4.17.
|
|
96
|
-
portacode-1.4.17.
|
|
97
|
-
portacode-1.4.17.
|
|
98
|
-
portacode-1.4.17.
|
|
94
|
+
portacode-1.4.17.dev1.dist-info/METADATA,sha256=fiXLmOIToLe48UzncEAQCZnpib1ITZpl0gS06M5fmFA,13051
|
|
95
|
+
portacode-1.4.17.dev1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
96
|
+
portacode-1.4.17.dev1.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
|
|
97
|
+
portacode-1.4.17.dev1.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
|
|
98
|
+
portacode-1.4.17.dev1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|