dayhoff-tools 1.6.9__py3-none-any.whl → 1.6.10__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.
- dayhoff_tools/cli/engine_commands.py +11 -17
- {dayhoff_tools-1.6.9.dist-info → dayhoff_tools-1.6.10.dist-info}/METADATA +1 -1
- {dayhoff_tools-1.6.9.dist-info → dayhoff_tools-1.6.10.dist-info}/RECORD +5 -5
- {dayhoff_tools-1.6.9.dist-info → dayhoff_tools-1.6.10.dist-info}/WHEEL +0 -0
- {dayhoff_tools-1.6.9.dist-info → dayhoff_tools-1.6.10.dist-info}/entry_points.txt +0 -0
@@ -1862,33 +1862,29 @@ def _attempt_studio_attach(studio, engine, target_user, public_key):
|
|
1862
1862
|
|
1863
1863
|
# --- determine if we should retry ---
|
1864
1864
|
recoverable = False
|
1865
|
+
error_text = response.json().get("error", "Unknown error")
|
1866
|
+
err_msg = error_text.lower()
|
1867
|
+
|
1868
|
+
# Check for "Studio is not available (status: in-use)" which means it's already attached
|
1869
|
+
if response.status_code == 400 and "not available" in err_msg and "in-use" in err_msg:
|
1870
|
+
# Studio is already attached somewhere - check if it's to THIS engine
|
1871
|
+
if _is_studio_attached(studio["studio_id"], engine["instance_id"]):
|
1872
|
+
return True, None # It's attached to our target engine - success!
|
1873
|
+
else:
|
1874
|
+
return False, error_text # It's attached elsewhere - fatal error
|
1875
|
+
|
1865
1876
|
if response.status_code in (409, 503):
|
1866
|
-
# Special-case: 409 because studio is already in-use. If it's attached to
|
1867
|
-
# *this* engine we can safely treat it as success.
|
1868
|
-
if response.status_code == 409:
|
1869
|
-
try:
|
1870
|
-
err_text = response.json().get("error", "").lower()
|
1871
|
-
except Exception:
|
1872
|
-
err_text = ""
|
1873
|
-
# Fast path – avoid another API call when we know why we got 409.
|
1874
|
-
if "in-use" in err_text or "already attached" in err_text:
|
1875
|
-
if _is_studio_attached(studio["studio_id"], engine["instance_id"]):
|
1876
|
-
return True, None
|
1877
1877
|
recoverable = True
|
1878
1878
|
else:
|
1879
|
-
err_msg = response.json().get("error", "").lower()
|
1880
1879
|
RECOVERABLE_PATTERNS = [
|
1881
1880
|
"not ready",
|
1882
1881
|
"still starting",
|
1883
1882
|
"initializing",
|
1884
1883
|
"failed to mount",
|
1885
1884
|
"device busy",
|
1886
|
-
"not available",
|
1887
1885
|
"pending", # VM state pending
|
1888
1886
|
]
|
1889
1887
|
FATAL_PATTERNS = [
|
1890
|
-
"in-use",
|
1891
|
-
"already attached",
|
1892
1888
|
"permission",
|
1893
1889
|
]
|
1894
1890
|
if any(p in err_msg for p in FATAL_PATTERNS):
|
@@ -1896,8 +1892,6 @@ def _attempt_studio_attach(studio, engine, target_user, public_key):
|
|
1896
1892
|
elif any(p in err_msg for p in RECOVERABLE_PATTERNS):
|
1897
1893
|
recoverable = True
|
1898
1894
|
|
1899
|
-
error_text = response.json().get("error", "Unknown error")
|
1900
|
-
|
1901
1895
|
if not recoverable:
|
1902
1896
|
# fatal – abort immediately
|
1903
1897
|
return False, error_text
|
@@ -3,7 +3,7 @@ dayhoff_tools/chemistry/standardizer.py,sha256=uMn7VwHnx02nc404eO6fRuS4rsl4dvSPf
|
|
3
3
|
dayhoff_tools/chemistry/utils.py,sha256=jt-7JgF-GeeVC421acX-bobKbLU_X94KNOW24p_P-_M,2257
|
4
4
|
dayhoff_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
dayhoff_tools/cli/cloud_commands.py,sha256=33qcWLmq-FwEXMdL3F0OHm-5Stlh2r65CldyEZgQ1no,40904
|
6
|
-
dayhoff_tools/cli/engine_commands.py,sha256=
|
6
|
+
dayhoff_tools/cli/engine_commands.py,sha256=Uu8LKUOp3-tRnix1op82i4NCiGnGswfxysUJ_X4WnPQ,96225
|
7
7
|
dayhoff_tools/cli/main.py,sha256=tRN7WCBHg6uyNp6rA54pKTCoVmBntta2i0Yas3bUpZ4,4853
|
8
8
|
dayhoff_tools/cli/swarm_commands.py,sha256=5EyKj8yietvT5lfoz8Zx0iQvVaNgc3SJX1z2zQR6o6M,5614
|
9
9
|
dayhoff_tools/cli/utility_commands.py,sha256=FRZTPrjsG_qmIIqoNxd1Q1vVkS_5w8aY33IrVYVNCLg,18131
|
@@ -27,7 +27,7 @@ dayhoff_tools/intake/uniprot.py,sha256=BZYJQF63OtPcBBnQ7_P9gulxzJtqyorgyuDiPeOJq
|
|
27
27
|
dayhoff_tools/logs.py,sha256=DKdeP0k0kliRcilwvX0mUB2eipO5BdWUeHwh-VnsICs,838
|
28
28
|
dayhoff_tools/sqlite.py,sha256=jV55ikF8VpTfeQqqlHSbY8OgfyfHj8zgHNpZjBLos_E,18672
|
29
29
|
dayhoff_tools/warehouse.py,sha256=heaYc64qplgN3_1WVPFmqj53goStioWwY5NqlWc4c0s,24453
|
30
|
-
dayhoff_tools-1.6.
|
31
|
-
dayhoff_tools-1.6.
|
32
|
-
dayhoff_tools-1.6.
|
33
|
-
dayhoff_tools-1.6.
|
30
|
+
dayhoff_tools-1.6.10.dist-info/METADATA,sha256=3wjYx1af4pg7bKiYv3LTeWd2xuc6MOf-g38aJnGmRZ4,2915
|
31
|
+
dayhoff_tools-1.6.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
32
|
+
dayhoff_tools-1.6.10.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
|
33
|
+
dayhoff_tools-1.6.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|