portacode 1.4.13.dev5__py3-none-any.whl → 1.4.13.dev7__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 +16 -13
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.dist-info}/METADATA +1 -1
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.dist-info}/RECORD +8 -8
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.dist-info}/WHEEL +0 -0
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.dist-info}/entry_points.txt +0 -0
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.dist-info}/licenses/LICENSE +0 -0
- {portacode-1.4.13.dev5.dist-info → portacode-1.4.13.dev7.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.13.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 4, 13, '
|
|
31
|
+
__version__ = version = '1.4.13.dev7'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 13, 'dev7')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -263,7 +263,10 @@ def _ensure_bridge(bridge: str = DEFAULT_BRIDGE) -> Dict[str, Any]:
|
|
|
263
263
|
apt = shutil.which("apt-get")
|
|
264
264
|
if not apt:
|
|
265
265
|
raise RuntimeError("dnsmasq is missing and apt-get unavailable to install it")
|
|
266
|
-
_call_subprocess([apt, "update"], check=
|
|
266
|
+
update = _call_subprocess([apt, "update"], check=False)
|
|
267
|
+
if update.returncode not in (0, 100):
|
|
268
|
+
msg = update.stderr or update.stdout or f"exit status {update.returncode}"
|
|
269
|
+
raise RuntimeError(f"apt-get update failed: {msg}")
|
|
267
270
|
_call_subprocess([apt, "install", "-y", "dnsmasq"], check=True)
|
|
268
271
|
_write_bridge_config(bridge)
|
|
269
272
|
_ensure_sysctl()
|
|
@@ -714,6 +717,7 @@ def _push_bytes_to_container(
|
|
|
714
717
|
parent_str = parent.as_posix()
|
|
715
718
|
if parent_str not in {"", ".", "/"}:
|
|
716
719
|
_run_pct_exec_check(vmid, ["mkdir", "-p", parent_str])
|
|
720
|
+
_run_pct_exec_check(vmid, ["chown", "-R", f"{user}:{user}", parent_str])
|
|
717
721
|
|
|
718
722
|
with tempfile.NamedTemporaryFile(delete=False) as tmp:
|
|
719
723
|
tmp.write(data)
|
|
@@ -742,7 +746,10 @@ def _push_bytes_to_container(
|
|
|
742
746
|
def _resolve_portacode_key_dir(vmid: int, user: str) -> str:
|
|
743
747
|
data_dir_cmd = f"su - {user} -c 'echo -n ${{XDG_DATA_HOME:-$HOME/.local/share}}'"
|
|
744
748
|
data_home = _run_pct_check(vmid, data_dir_cmd)["stdout"].strip()
|
|
745
|
-
|
|
749
|
+
portacode_dir = f"{data_home}/portacode"
|
|
750
|
+
_run_pct_exec_check(vmid, ["mkdir", "-p", portacode_dir])
|
|
751
|
+
_run_pct_exec_check(vmid, ["chown", "-R", f"{user}:{user}", portacode_dir])
|
|
752
|
+
return f"{portacode_dir}/keys"
|
|
746
753
|
|
|
747
754
|
|
|
748
755
|
def _deploy_device_keypair(vmid: int, user: str, private_key: str, public_key: str) -> None:
|
|
@@ -1030,17 +1037,13 @@ def configure_infrastructure(token_identifier: str, token_value: str, verify_ssl
|
|
|
1030
1037
|
network = _ensure_bridge()
|
|
1031
1038
|
# Wait for network convergence before validating connectivity
|
|
1032
1039
|
time.sleep(2)
|
|
1033
|
-
if _verify_connectivity():
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
logger.warning("Bridge setup skipped: %s", exc)
|
|
1041
|
-
except Exception as exc: # pragma: no cover - best effort
|
|
1042
|
-
network = {"applied": False, "message": str(exc), "bridge": DEFAULT_BRIDGE}
|
|
1043
|
-
logger.warning("Bridge setup failed: %s", exc)
|
|
1040
|
+
if not _verify_connectivity():
|
|
1041
|
+
raise RuntimeError("Connectivity check failed; bridge reverted")
|
|
1042
|
+
network["health"] = "healthy"
|
|
1043
|
+
except Exception as exc:
|
|
1044
|
+
logger.warning("Bridge setup failed; reverting previous changes: %s", exc)
|
|
1045
|
+
_revert_bridge()
|
|
1046
|
+
raise
|
|
1044
1047
|
config = {
|
|
1045
1048
|
"host": DEFAULT_HOST,
|
|
1046
1049
|
"node": node,
|
|
@@ -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=iXNm9XA0Hf5UtyMc434neHqt0hbFCvLPPvzu1ohmHu4,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=vvu1ZGVNxGJ0qoG-cobgVtqHH58Lr_5WO11Un4txFOs,60671
|
|
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=AKh7IbwptlLYrbSw5f-DHigvlaKHsg9lDP-lkAUm8cE,10755
|
|
@@ -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.13.
|
|
68
|
+
portacode-1.4.13.dev7.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.13.
|
|
95
|
-
portacode-1.4.13.
|
|
96
|
-
portacode-1.4.13.
|
|
97
|
-
portacode-1.4.13.
|
|
98
|
-
portacode-1.4.13.
|
|
94
|
+
portacode-1.4.13.dev7.dist-info/METADATA,sha256=wsfXxckiSZD5SHEvrxPJGx6EGfCxscZBAsGjC5Ivur4,13051
|
|
95
|
+
portacode-1.4.13.dev7.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
96
|
+
portacode-1.4.13.dev7.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
|
|
97
|
+
portacode-1.4.13.dev7.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
|
|
98
|
+
portacode-1.4.13.dev7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|