konduktor-nightly 0.1.0.dev20250414104837__tar.gz → 0.1.0.dev20250415104823__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 (96) hide show
  1. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/PKG-INFO +1 -1
  2. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/__init__.py +2 -2
  3. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/adaptors/common.py +31 -0
  4. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/adaptors/gcp.py +7 -32
  5. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/backends/jobset.py +3 -1
  6. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/aws/s3.py +9 -4
  7. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/accelerator_registry.py +1 -0
  8. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/pyproject.toml +1 -1
  9. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/LICENSE +0 -0
  10. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/README.md +0 -0
  11. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/adaptors/__init__.py +0 -0
  12. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/adaptors/aws.py +0 -0
  13. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/backends/__init__.py +0 -0
  14. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/backends/backend.py +0 -0
  15. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/backends/jobset_utils.py +0 -0
  16. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/check.py +0 -0
  17. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/cli.py +0 -0
  18. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/config.py +0 -0
  19. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/constants.py +0 -0
  20. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/controller/__init__.py +0 -0
  21. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/controller/constants.py +0 -0
  22. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/controller/launch.py +0 -0
  23. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/controller/node.py +0 -0
  24. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/controller/parse.py +0 -0
  25. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/README.md +0 -0
  26. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/backend/main.py +0 -0
  27. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/backend/sockets.py +0 -0
  28. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/.eslintrc.json +0 -0
  29. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/.gitignore +0 -0
  30. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/api/jobs/route.js +0 -0
  31. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/api/namespaces/route.js +0 -0
  32. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/Grafana.jsx +0 -0
  33. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/JobsData.jsx +0 -0
  34. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/LogsData.jsx +0 -0
  35. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/NavMenu.jsx +0 -0
  36. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/NavTabs.jsx +0 -0
  37. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/NavTabs2.jsx +0 -0
  38. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/SelectBtn.jsx +0 -0
  39. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/lib/utils.js +0 -0
  40. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/ui/chip-select.jsx +0 -0
  41. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/ui/input.jsx +0 -0
  42. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/ui/navigation-menu.jsx +0 -0
  43. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/components/ui/select.jsx +0 -0
  44. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/favicon.ico +0 -0
  45. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/globals.css +0 -0
  46. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/jobs/page.js +0 -0
  47. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/layout.js +0 -0
  48. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/logs/page.js +0 -0
  49. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/app/page.js +0 -0
  50. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/jsconfig.json +0 -0
  51. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/next.config.mjs +0 -0
  52. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/package-lock.json +0 -0
  53. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/package.json +0 -0
  54. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/postcss.config.mjs +0 -0
  55. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/server.js +0 -0
  56. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/dashboard/frontend/tailwind.config.js +0 -0
  57. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/__init__.py +0 -0
  58. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/aws/__init__.py +0 -0
  59. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/constants.py +0 -0
  60. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/data_utils.py +0 -0
  61. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/gcp/__init__.py +0 -0
  62. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/gcp/constants.py +0 -0
  63. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/gcp/gcs.py +0 -0
  64. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/gcp/utils.py +0 -0
  65. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/registry.py +0 -0
  66. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/storage.py +0 -0
  67. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/data/storage_utils.py +0 -0
  68. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/execution.py +0 -0
  69. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/kube_client.py +0 -0
  70. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/logging.py +0 -0
  71. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/manifests/controller_deployment.yaml +0 -0
  72. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/manifests/dashboard_deployment.yaml +0 -0
  73. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/manifests/dmesg_daemonset.yaml +0 -0
  74. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/manifests/pod_cleanup_controller.yaml +0 -0
  75. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/resource.py +0 -0
  76. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/task.py +0 -0
  77. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/templates/jobset.yaml.j2 +0 -0
  78. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/templates/pod.yaml.j2 +0 -0
  79. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/usage/__init__.py +0 -0
  80. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/usage/constants.py +0 -0
  81. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/__init__.py +0 -0
  82. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/annotations.py +0 -0
  83. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/base64_utils.py +0 -0
  84. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/common_utils.py +0 -0
  85. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/constants.py +0 -0
  86. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/env_options.py +0 -0
  87. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/exceptions.py +0 -0
  88. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/kubernetes_enums.py +0 -0
  89. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/kubernetes_utils.py +0 -0
  90. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/log_utils.py +0 -0
  91. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/loki_utils.py +0 -0
  92. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/rich_utils.py +0 -0
  93. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/schemas.py +0 -0
  94. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/subprocess_utils.py +0 -0
  95. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/ux_utils.py +0 -0
  96. {konduktor_nightly-0.1.0.dev20250414104837 → konduktor_nightly-0.1.0.dev20250415104823}/konduktor/utils/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: konduktor-nightly
3
- Version: 0.1.0.dev20250414104837
3
+ Version: 0.1.0.dev20250415104823
4
4
  Summary: GPU Cluster Health Management
5
5
  Author: Andrew Aikawa
6
6
  Author-email: asai@berkeley.edu
@@ -14,7 +14,7 @@ __all__ = [
14
14
  ]
15
15
 
16
16
  # Replaced with the current commit when building the wheels.
17
- _KONDUKTOR_COMMIT_SHA = 'c7becbf4b64d992f56aad47b69770f3345a37297'
17
+ _KONDUKTOR_COMMIT_SHA = 'db987d020cad5afaafe4fd3c7ff858fd9bcb264d'
18
18
  os.makedirs(os.path.expanduser('~/.konduktor'), exist_ok=True)
19
19
 
20
20
 
@@ -48,5 +48,5 @@ def _get_git_commit():
48
48
 
49
49
 
50
50
  __commit__ = _get_git_commit()
51
- __version__ = '1.0.0.dev0.1.0.dev20250414104837'
51
+ __version__ = '1.0.0.dev0.1.0.dev20250415104823'
52
52
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
@@ -14,9 +14,12 @@
14
14
 
15
15
  import functools
16
16
  import importlib
17
+ import os
17
18
  import threading
18
19
  from typing import Any, Callable, Optional, Tuple
19
20
 
21
+ from filelock import FileLock
22
+
20
23
 
21
24
  class LazyImport:
22
25
  """Lazy importer for heavy modules or cloud modules only when enabled.
@@ -86,3 +89,31 @@ def load_lazy_modules(modules: Tuple[LazyImport, ...]):
86
89
  return wrapper
87
90
 
88
91
  return decorator
92
+
93
+
94
+ class LockedClientProxy:
95
+ """Proxy for GCP client that locks access to the client."""
96
+
97
+ def __init__(
98
+ self,
99
+ client,
100
+ lock_path=os.path.expanduser('~/.konduktor/gcs_storage.lock'),
101
+ timeout=10,
102
+ ):
103
+ self._client = client
104
+ self._lock = FileLock(lock_path, timeout=timeout)
105
+
106
+ def __getattr__(self, attr):
107
+ target = getattr(self._client, attr)
108
+
109
+ if callable(target):
110
+
111
+ @functools.wraps(target)
112
+ def locked_method(*args, **kwargs):
113
+ with self._lock:
114
+ return target(*args, **kwargs)
115
+
116
+ return locked_method
117
+ else:
118
+ # Attribute (not method) access just passes through
119
+ return target
@@ -14,9 +14,6 @@
14
14
 
15
15
  import json
16
16
  import os
17
- from functools import wraps
18
-
19
- from filelock import FileLock
20
17
 
21
18
  from konduktor.adaptors import common
22
19
 
@@ -29,33 +26,7 @@ googleapiclient = common.LazyImport(
29
26
  google = common.LazyImport('google', import_error_message=_IMPORT_ERROR_MESSAGE)
30
27
  _LAZY_MODULES = (google, googleapiclient)
31
28
 
32
-
33
- class LockedClientProxy:
34
- """Proxy for GCP client that locks access to the client."""
35
-
36
- def __init__(
37
- self,
38
- client,
39
- lock_path=os.path.expanduser('~/.konduktor/gcs_storage.lock'),
40
- timeout=10,
41
- ):
42
- self._client = client
43
- self._lock = FileLock(lock_path, timeout=timeout)
44
-
45
- def __getattr__(self, attr):
46
- target = getattr(self._client, attr)
47
-
48
- if callable(target):
49
-
50
- @wraps(target)
51
- def locked_method(*args, **kwargs):
52
- with self._lock:
53
- return target(*args, **kwargs)
54
-
55
- return locked_method
56
- else:
57
- # Attribute (not method) access just passes through
58
- return target
29
+ _LOCK_PATH = '~/.konduktor/gcs_storage.lock'
59
30
 
60
31
 
61
32
  @common.load_lazy_modules(_LAZY_MODULES)
@@ -75,7 +46,9 @@ def storage_client():
75
46
  """Helper that connects to GCS Storage Client for GCS Bucket"""
76
47
  from google.cloud import storage
77
48
 
78
- return LockedClientProxy(storage.Client())
49
+ return common.LockedClientProxy(
50
+ storage.Client(), lock_path=os.path.expanduser(_LOCK_PATH)
51
+ )
79
52
 
80
53
 
81
54
  @common.load_lazy_modules(_LAZY_MODULES)
@@ -83,7 +56,9 @@ def anonymous_storage_client():
83
56
  """Helper that connects to GCS Storage Client for Public GCS Buckets"""
84
57
  from google.cloud import storage
85
58
 
86
- return LockedClientProxy(storage.Client.create_anonymous_client())
59
+ return common.LockedClientProxy(
60
+ storage.Client(), lock_path=os.path.expanduser(_LOCK_PATH)
61
+ )
87
62
 
88
63
 
89
64
  @common.load_lazy_modules(_LAZY_MODULES)
@@ -185,7 +185,9 @@ class JobsetBackend(backend.Backend):
185
185
  if not dryrun and not detach_run:
186
186
  with ux_utils.print_exception_no_traceback():
187
187
  with rich_utils.safe_status(
188
- ux_utils.spinner_message('waiting for job to start\n')
188
+ ux_utils.spinner_message(
189
+ 'waiting for job to start. ' 'Press Ctrl+C to detach. \n'
190
+ )
189
191
  ):
190
192
  _wait_for_jobset_start(namespace, task.name)
191
193
  try:
@@ -24,11 +24,11 @@ import typing
24
24
  import uuid
25
25
  from typing import Any, Dict, List, Optional, Tuple
26
26
 
27
- import boto3
28
27
  import colorama
29
28
 
30
29
  from konduktor import config, logging
31
30
  from konduktor.adaptors import aws
31
+ from konduktor.adaptors.aws import boto3
32
32
  from konduktor.data import constants, data_utils, storage_utils
33
33
  from konduktor.utils import (
34
34
  annotations,
@@ -40,6 +40,9 @@ from konduktor.utils import (
40
40
  ux_utils,
41
41
  )
42
42
 
43
+ if typing.TYPE_CHECKING:
44
+ from konduktor.adaptors.aws import boto3
45
+
43
46
  logger = logging.get_logger(__name__)
44
47
 
45
48
  # Maximum number of concurrent rsync upload processes
@@ -54,6 +57,8 @@ DEFAULT_AWS_CREDENTIALS_DIR = '~/.aws/'
54
57
  DEFAULT_AWS_CREDENTIAL_PATH = '~/.aws/credentials'
55
58
  DEFAULT_AWS_CONFIG_PATH = '~/.aws/config'
56
59
 
60
+ _LOCK_PATH = '~/.konduktor/s3_storage.lock'
61
+
57
62
 
58
63
  class AWSIdentityType(enum.Enum):
59
64
  """AWS identity type.
@@ -148,7 +153,7 @@ class S3Store(storage_utils.AbstractStore):
148
153
  sync_on_reconstruction: Optional[bool] = True,
149
154
  _bucket_sub_path: Optional[str] = None,
150
155
  ):
151
- self.client: 'boto3.client.Client'
156
+ self.client: 'boto3.client.Client' # type: ignore[name-defined]
152
157
  self.bucket: 'constants.StorageHandle'
153
158
  if region in self._CUSTOM_ENDPOINT_REGIONS:
154
159
  logger.warning(
@@ -908,7 +913,7 @@ class S3Store(storage_utils.AbstractStore):
908
913
  )
909
914
 
910
915
  try:
911
- s3 = boto3.client('s3')
916
+ s3 = aws.client('s3')
912
917
 
913
918
  suffix = uuid.uuid4().hex[:6]
914
919
  test_bucket = f'konduktor-check-s3-{int(time.time())}-{suffix}'
@@ -1039,7 +1044,7 @@ class S3Store(storage_utils.AbstractStore):
1039
1044
  )
1040
1045
 
1041
1046
  try:
1042
- identity = boto3.client('sts').get_caller_identity()
1047
+ identity = aws.client('sts').get_caller_identity()
1043
1048
  logger.info(
1044
1049
  f"Using AWS credentials for ARN: {identity['Arn']} "
1045
1050
  f"(UserId: {identity['UserId']}, Account: {identity['Account']})"
@@ -4,6 +4,7 @@ _ACCELERATORS = [
4
4
  'A100',
5
5
  'A100-80GB',
6
6
  'H100',
7
+ 'H200',
7
8
  'L40S',
8
9
  ]
9
10
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "konduktor-nightly"
3
- version = "0.1.0.dev20250414104837"
3
+ version = "0.1.0.dev20250415104823"
4
4
  description = "GPU Cluster Health Management"
5
5
  packages = [
6
6
  {include = "konduktor"}