portacode 1.4.13.dev6__py3-none-any.whl → 1.4.13.dev8__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 +24 -14
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.dist-info}/METADATA +1 -1
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.dist-info}/RECORD +8 -8
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.dist-info}/WHEEL +0 -0
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.dist-info}/entry_points.txt +0 -0
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.dist-info}/licenses/LICENSE +0 -0
- {portacode-1.4.13.dev6.dist-info → portacode-1.4.13.dev8.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.dev8'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 13, 'dev8')
|
|
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()
|
|
@@ -976,13 +979,24 @@ def _bootstrap_portacode(
|
|
|
976
979
|
history_snippet = ""
|
|
977
980
|
if isinstance(history, list) and history:
|
|
978
981
|
history_snippet = f" history={history[-3:]}"
|
|
982
|
+
command = details.get("cmd")
|
|
983
|
+
command_text = ""
|
|
984
|
+
if command:
|
|
985
|
+
if isinstance(command, (list, tuple)):
|
|
986
|
+
command_text = shlex.join(str(entry) for entry in command)
|
|
987
|
+
else:
|
|
988
|
+
command_text = str(command)
|
|
989
|
+
command_suffix = f" command={command_text}" if command_text else ""
|
|
979
990
|
if summary:
|
|
980
991
|
logger.warning(
|
|
981
|
-
"Portacode bootstrap failure summary=%s%s",
|
|
992
|
+
"Portacode bootstrap failure summary=%s%s%s",
|
|
982
993
|
summary,
|
|
983
994
|
f" history_len={len(history)}" if history else "",
|
|
995
|
+
f" command={command_text}" if command_text else "",
|
|
996
|
+
)
|
|
997
|
+
raise RuntimeError(
|
|
998
|
+
f"Portacode bootstrap steps failed: {summary}{history_snippet}{command_suffix}"
|
|
984
999
|
)
|
|
985
|
-
raise RuntimeError(f"Portacode bootstrap steps failed: {summary}{history_snippet}")
|
|
986
1000
|
raise RuntimeError("Portacode bootstrap steps failed.")
|
|
987
1001
|
key_step = next((entry for entry in results if entry.get("name") == "portacode_connect"), None)
|
|
988
1002
|
public_key = key_step.get("public_key") if key_step else default_public_key
|
|
@@ -1034,17 +1048,13 @@ def configure_infrastructure(token_identifier: str, token_value: str, verify_ssl
|
|
|
1034
1048
|
network = _ensure_bridge()
|
|
1035
1049
|
# Wait for network convergence before validating connectivity
|
|
1036
1050
|
time.sleep(2)
|
|
1037
|
-
if _verify_connectivity():
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
logger.warning("Bridge setup skipped: %s", exc)
|
|
1045
|
-
except Exception as exc: # pragma: no cover - best effort
|
|
1046
|
-
network = {"applied": False, "message": str(exc), "bridge": DEFAULT_BRIDGE}
|
|
1047
|
-
logger.warning("Bridge setup failed: %s", exc)
|
|
1051
|
+
if not _verify_connectivity():
|
|
1052
|
+
raise RuntimeError("Connectivity check failed; bridge reverted")
|
|
1053
|
+
network["health"] = "healthy"
|
|
1054
|
+
except Exception as exc:
|
|
1055
|
+
logger.warning("Bridge setup failed; reverting previous changes: %s", exc)
|
|
1056
|
+
_revert_bridge()
|
|
1057
|
+
raise
|
|
1048
1058
|
config = {
|
|
1049
1059
|
"host": DEFAULT_HOST,
|
|
1050
1060
|
"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=YBDBPaROqFisxZ_FDGVz2X8528vah3gRidVgpzkvUbc,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=v2IftCXnNO8ta8dWfdXf_eRBAeFO6YxkFTCSuTrp5ss,61134
|
|
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.dev8.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.dev8.dist-info/METADATA,sha256=7RHT2uUSDkC1UZZH_jl86SqIgQejC5TSkm3MsNneI_M,13051
|
|
95
|
+
portacode-1.4.13.dev8.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
96
|
+
portacode-1.4.13.dev8.dist-info/entry_points.txt,sha256=lLUUL-BM6_wwe44Xv0__5NQ1BnAz6jWjSMFvZdWW3zU,48
|
|
97
|
+
portacode-1.4.13.dev8.dist-info/top_level.txt,sha256=TGhTYUxfW8SyVZc_zGgzjzc24gGT7nSw8Qf73liVRKM,41
|
|
98
|
+
portacode-1.4.13.dev8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|