gpu-dev 0.6.3__tar.gz → 0.6.4__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.
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/PKG-INFO +1 -1
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/PKG-INFO +1 -1
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/pyproject.toml +1 -1
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_backend/aws.py +10 -6
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_sync/sandbox.py +56 -5
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda.tf +2 -2
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/.github/workflows/no-gitlinks.yml +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/.github/workflows/publish.yml +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/.gitignore +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/CLAUDE.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/admin/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/admin/generate_stats.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/admin/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/ZERO_CONFIG_SETUP.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/SOURCES.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/dependency_links.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/entry_points.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/requires.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev.egg-info/top_level.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/auth.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/cli.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/config.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/disks.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/interactive.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/name_generator.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/reservations.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/gpu_dev_cli/ssh_proxy.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/gpu-dev-cli/minimal-iam-policy.json +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/cli-tools/scripts/clear_stale_disk_locks.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/docs/USER_GUIDE.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/docs/devgpu-features.html +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/docs/docker-mark-blue.svg +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/docs/icons8-cursor-ai.svg +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/examples/batch_multi_gpu.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/examples/interactive_debug.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/examples/quickstart.ipynb +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/examples/run_tests.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/examples/submit_job.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/pyproject.toml +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_async/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_backend/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_backend/protocol.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_sync/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_sync/client.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_transport/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/_transport/ssh.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/common/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/common/config.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/common/enums.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/common/errors.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/common/models.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/src/gpu_dev/py.typed +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/tests/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/sdk/python/tests/test_models.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/setup.cfg +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/.claude/skills/deploy.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/.terraform.lock.hcl +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/alb.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ami-baker.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/availability.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/backend.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/check_b200.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/cluster-autoscaler.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/cmd_proxy.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/.dockerignore +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/Dockerfile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/backup-dotfiles +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/bash_profile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/bashrc +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/bashrc_ext +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/build-with-efa.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/dotfiles-shutdown-handler +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/list-dotfile-versions +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/motd_script +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/nproc_wrapper +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/profile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/restore-dotfiles +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/restore-dotfiles-version +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/setup-dotfiles-persistence +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/shell_env +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/ssh_config +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/zprofile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/zshrc +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker/zshrc_ext +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker-build.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker-example/Dockerfile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/docker-example/hello.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ecr.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/efs.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/eks.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/expiry.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/git-cache.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/gpu-dev-pod-irsa.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/kubernetes.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/availability_updater/index.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/availability_updater/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/migration/tag_largest_snapshots.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_expiry/index.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_expiry/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_processor/buildkit_job.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_processor/index.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_processor/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/__init__.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/alb_utils.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/dns_utils.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/k8s_client.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/k8s_resource_tracker.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/snapshot_utils.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/list_b200.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/main.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/mig-config.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/mig-parted-config.yaml +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/backfill_snapshot_contents.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/backfill_snapshot_contents.py.bak +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/check_snapshots.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/migrate_disks_to_named.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/run_backfill.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/monitoring.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/node-termination-handler.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/outputs.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/pyproject.toml +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/queue.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/route53.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/s3-disk-contents.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/scripts/CLEANUP_GUIDE.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/scripts/detect_empty_volumes.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/scripts/ec2_avail_probe.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/scripts/inspect_user_data.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ssh-proxy/Dockerfile +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ssh-proxy/proxy.py +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ssh-proxy/requirements.txt +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ssh-proxy-service.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/ssh-proxy.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/subnet-0fe3a2c45570091ad +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/switch-to.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/al2023-cpu-user-data.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/al2023-user-data.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/ami-baker-user-data.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/user-data-self-managed.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/user-data.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/variables.tf +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/tests/submit/README.md +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/tests/submit/fail/run.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/tests/submit/multinode/run.sh +0 -0
- {gpu_dev-0.6.3 → gpu_dev-0.6.4}/tests/submit/success/run.sh +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "gpu-dev"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.4"
|
|
8
8
|
description = "CLI tool for PyTorch GPU developer server reservations"
|
|
9
9
|
authors = [{name = "PyTorch Team"}]
|
|
10
10
|
readme = "cli-tools/gpu-dev-cli/README.md"
|
|
@@ -189,13 +189,17 @@ class AwsBackend:
|
|
|
189
189
|
return self._item_to_info(item)
|
|
190
190
|
return None
|
|
191
191
|
|
|
192
|
-
|
|
193
|
-
IndexName
|
|
194
|
-
KeyConditionExpression
|
|
195
|
-
FilterExpression
|
|
196
|
-
ExpressionAttributeValues
|
|
197
|
-
|
|
192
|
+
query_kwargs = {
|
|
193
|
+
"IndexName": "UserIndex",
|
|
194
|
+
"KeyConditionExpression": "user_id = :uid",
|
|
195
|
+
"FilterExpression": "begins_with(reservation_id, :rid)",
|
|
196
|
+
"ExpressionAttributeValues": {":uid": user_id, ":rid": reservation_id},
|
|
197
|
+
}
|
|
198
|
+
resp = self._reservations.query(**query_kwargs)
|
|
198
199
|
items = resp.get("Items", [])
|
|
200
|
+
while not items and "LastEvaluatedKey" in resp:
|
|
201
|
+
resp = self._reservations.query(**query_kwargs, ExclusiveStartKey=resp["LastEvaluatedKey"])
|
|
202
|
+
items = resp.get("Items", [])
|
|
199
203
|
if len(items) == 1:
|
|
200
204
|
return self._item_to_info(items[0])
|
|
201
205
|
return None
|
|
@@ -136,11 +136,6 @@ class Sandbox:
|
|
|
136
136
|
"""Owner's user ID."""
|
|
137
137
|
return self._info.user_id
|
|
138
138
|
|
|
139
|
-
@property
|
|
140
|
-
def node_ip(self) -> str | None:
|
|
141
|
-
"""Node public IP."""
|
|
142
|
-
return self._info.node_ip
|
|
143
|
-
|
|
144
139
|
@property
|
|
145
140
|
def is_active(self) -> bool:
|
|
146
141
|
"""Whether the sandbox is running and ready for commands."""
|
|
@@ -322,6 +317,62 @@ class Sandbox:
|
|
|
322
317
|
except Exception:
|
|
323
318
|
return []
|
|
324
319
|
|
|
320
|
+
def timing(self) -> list[dict[str, str | float]]:
|
|
321
|
+
"""Get a performance breakdown of reservation setup.
|
|
322
|
+
|
|
323
|
+
Computes time deltas between status transitions to show
|
|
324
|
+
where time was spent.
|
|
325
|
+
|
|
326
|
+
Returns:
|
|
327
|
+
List of ``{"step": "...", "duration": seconds, "timestamp": "..."}`` dicts.
|
|
328
|
+
|
|
329
|
+
Example::
|
|
330
|
+
|
|
331
|
+
for step in sandbox.timing():
|
|
332
|
+
print(f"{step['duration']:5.1f}s {step['step']}")
|
|
333
|
+
"""
|
|
334
|
+
from datetime import datetime
|
|
335
|
+
|
|
336
|
+
entries = self.logs()
|
|
337
|
+
if not entries:
|
|
338
|
+
return []
|
|
339
|
+
|
|
340
|
+
result = []
|
|
341
|
+
prev_ts = None
|
|
342
|
+
for entry in entries:
|
|
343
|
+
ts_str = entry.get("timestamp", "")
|
|
344
|
+
msg = entry.get("message", "")
|
|
345
|
+
try:
|
|
346
|
+
ts = datetime.fromisoformat(ts_str)
|
|
347
|
+
except (ValueError, TypeError):
|
|
348
|
+
continue
|
|
349
|
+
if prev_ts:
|
|
350
|
+
delta = (ts - prev_ts).total_seconds()
|
|
351
|
+
if delta >= 0.05:
|
|
352
|
+
result.append({
|
|
353
|
+
"step": msg,
|
|
354
|
+
"duration": round(delta, 2),
|
|
355
|
+
"timestamp": ts_str,
|
|
356
|
+
})
|
|
357
|
+
else:
|
|
358
|
+
result.append({
|
|
359
|
+
"step": msg,
|
|
360
|
+
"duration": 0.0,
|
|
361
|
+
"timestamp": ts_str,
|
|
362
|
+
})
|
|
363
|
+
prev_ts = ts
|
|
364
|
+
|
|
365
|
+
if result and len(entries) >= 2:
|
|
366
|
+
first_ts = datetime.fromisoformat(entries[0]["timestamp"])
|
|
367
|
+
last_ts = datetime.fromisoformat(entries[-1]["timestamp"])
|
|
368
|
+
result.append({
|
|
369
|
+
"step": "TOTAL",
|
|
370
|
+
"duration": round((last_ts - first_ts).total_seconds(), 2),
|
|
371
|
+
"timestamp": "",
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
return result
|
|
375
|
+
|
|
325
376
|
def pod_logs(self, lines: int = 50) -> str:
|
|
326
377
|
"""Fetch container stdout from the running pod via SSH.
|
|
327
378
|
|
|
@@ -186,8 +186,8 @@ resource "aws_lambda_function" "reservation_processor" {
|
|
|
186
186
|
HOSTED_ZONE_ID = local.effective_domain_name != "" ? local.hosted_zone_id : ""
|
|
187
187
|
SSH_DOMAIN_MAPPINGS_TABLE = local.effective_domain_name != "" ? aws_dynamodb_table.ssh_domain_mappings.name : ""
|
|
188
188
|
SSL_CERTIFICATE_ARN = local.effective_domain_name != "" ? aws_acm_certificate.wildcard[0].arn : ""
|
|
189
|
-
LAMBDA_VERSION = "0.6.
|
|
190
|
-
MIN_CLI_VERSION = "0.6.
|
|
189
|
+
LAMBDA_VERSION = "0.6.4"
|
|
190
|
+
MIN_CLI_VERSION = "0.6.4"
|
|
191
191
|
# Comma-separated GPU types that require --spot flag, or "all" for every type.
|
|
192
192
|
# Empty = no spot types (on-demand / reserved). Set per-workspace.
|
|
193
193
|
ASG_NAME_PREFIX = "${var.prefix}-gpu-nodes"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/availability_updater/index.py
RENAMED
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/migration/tag_largest_snapshots.py
RENAMED
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_expiry/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/reservation_processor/index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/lambda/shared/k8s_resource_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/backfill_snapshot_contents.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/migrations/migrate_disks_to_named.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gpu_dev-0.6.3 → gpu_dev-0.6.4}/terraform-gpu-devservers/templates/user-data-self-managed.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|