Skip to content

Commit a9bbb06

Browse files
authored
feat(data-warehouse): implement runpod import source (#70710)
1 parent 2197999 commit a9bbb06

9 files changed

Lines changed: 1056 additions & 8 deletions

File tree

Lines changed: 10 additions & 0 deletions
Loading

products/warehouse_sources/backend/temporal/data_imports/sources/SOURCES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ the row lists both.
379379
| rootly | HTTP | requests ||
380380
| rss | HTTP | requests ||
381381
| ruddr | HTTP | requests ||
382+
| runpod | HTTP | requests ||
382383
| safetyculture | HTTP | requests ||
383384
| sage_hr | HTTP | requests ||
384385
| salesforce | HTTP | requests + `rest_source.RESTClient` ||
@@ -843,7 +844,6 @@ doesn't conflict with concurrent PRs.
843844
- rocketlane
844845
- rss
845846
- rudderstack
846-
- runpod
847847
- safetyculture
848848
- sage_intacct
849849
- sailthru

products/warehouse_sources/backend/temporal/data_imports/sources/generated_configs.py

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
from products.warehouse_sources.backend.temporal.data_imports.sources.common.canonical_descriptions import (
2+
CanonicalDescriptions,
3+
)
4+
5+
_API_DOCS = "https://rest.runpod.io/v1/docs"
6+
7+
CANONICAL_DESCRIPTIONS: CanonicalDescriptions = {
8+
"pods": {
9+
"description": "GPU and CPU Pods in your RunPod account, including on-demand instances and Serverless workers.",
10+
"docs_url": _API_DOCS,
11+
"columns": {
12+
"id": "Unique identifier for the Pod.",
13+
"name": "User-defined name for the Pod. Does not need to be unique.",
14+
"desiredStatus": "The current expected status of the Pod.",
15+
"image": "The image tag for the container run on the Pod.",
16+
"gpuTypeId": "The GPU type attached to the Pod.",
17+
"costPerHr": "The cost in RunPod credits per hour of running the Pod, before Savings Plans.",
18+
"adjustedCostPerHr": "The effective cost per hour of running the Pod, adjusted by active Savings Plans.",
19+
"machineId": "Unique identifier of the host machine the Pod is running on.",
20+
"endpointId": "If the Pod is a Serverless worker, the identifier of the associated endpoint.",
21+
"templateId": "If the Pod was created from a template, the identifier of that template.",
22+
"networkVolumeId": "If a network volume is attached, the identifier of that network volume.",
23+
"vcpuCount": "The number of virtual CPUs attached to the Pod.",
24+
"memoryInGb": "The amount of RAM, in gigabytes, attached to the Pod.",
25+
"containerDiskInGb": "Disk space, in gigabytes, allocated on the container disk (wiped on restart).",
26+
"volumeInGb": "Disk space, in gigabytes, allocated on the Pod volume (persisted across restarts).",
27+
"interruptible": "True if the Pod is rented as interruptible (lower cost, can be stopped at any time).",
28+
"publicIp": "The public IP address of the Pod, once initialized.",
29+
"lastStartedAt": "UTC timestamp when the Pod was last started.",
30+
"lastStatusChange": "Description of the last lifecycle event on the Pod.",
31+
"locked": "True if the Pod is locked, disabling stop and reset.",
32+
},
33+
},
34+
"endpoints": {
35+
"description": "Serverless endpoints in your RunPod account, including autoscaling configuration.",
36+
"docs_url": _API_DOCS,
37+
"columns": {
38+
"id": "Unique identifier for the Serverless endpoint.",
39+
"name": "User-defined name for the endpoint. Does not need to be unique.",
40+
"createdAt": "UTC timestamp when the endpoint was created.",
41+
"computeType": "The type of compute used by workers on the endpoint.",
42+
"gpuTypeIds": "RunPod GPU types which can be attached to the endpoint.",
43+
"gpuCount": "The number of GPUs attached to each worker.",
44+
"dataCenterIds": "RunPod data center IDs where workers can be located.",
45+
"templateId": "Identifier of the template used to create the endpoint.",
46+
"networkVolumeId": "Identifier of the network volume attached to the endpoint.",
47+
"workersMin": "The minimum number of workers kept running at the same time.",
48+
"workersMax": "The maximum number of workers that can run at the same time.",
49+
"idleTimeout": "Seconds a worker can run without a job before being scaled down.",
50+
"scalerType": "The method used to scale up workers (QUEUE_DELAY or REQUEST_COUNT).",
51+
"scalerValue": "The threshold value used by the configured scaler type.",
52+
"executionTimeoutMs": "Maximum milliseconds a request can run before the worker is stopped.",
53+
"version": "The latest version of the endpoint, updated on template or env changes.",
54+
"userId": "Identifier of the RunPod user who created the endpoint.",
55+
},
56+
},
57+
"templates": {
58+
"description": "Pod and Serverless templates in your RunPod account.",
59+
"docs_url": _API_DOCS,
60+
"columns": {
61+
"id": "Unique identifier for the template.",
62+
"name": "User-defined name for the template. Must be unique.",
63+
"imageName": "The image tag for the container run on Pods or workers created from the template.",
64+
"category": "The template category (NVIDIA, AMD, or CPU).",
65+
"isServerless": "True if instances created from the template are Serverless workers, false for Pods.",
66+
"isPublic": "True if the template is public and usable by any RunPod user.",
67+
"isRunpod": "True if the template is an official template managed by RunPod.",
68+
"containerDiskInGb": "Disk space, in gigabytes, allocated on the container disk (wiped on restart).",
69+
"volumeInGb": "Disk space, in gigabytes, allocated on the local volume (persisted across restarts).",
70+
"volumeMountPath": "Absolute path where the volume is mounted in the filesystem.",
71+
"ports": "Ports exposed on Pods or workers, formatted as [port]/[protocol].",
72+
"earned": "RunPod credits earned by the template creator from all instances created from it.",
73+
},
74+
},
75+
"network_volumes": {
76+
"description": "Network volumes in your RunPod account, attachable to Pods and Serverless endpoints.",
77+
"docs_url": _API_DOCS,
78+
"columns": {
79+
"id": "Unique identifier for the network volume.",
80+
"name": "User-defined name for the network volume. Does not need to be unique.",
81+
"size": "The amount of disk space, in gigabytes, allocated to the network volume.",
82+
"dataCenterId": "The RunPod data center ID where the network volume is located.",
83+
},
84+
},
85+
"billing_pods": {
86+
"description": "Daily billing history for Pods, one record per Pod per day bucket.",
87+
"docs_url": _API_DOCS,
88+
"columns": {
89+
"id": "Surrogate key derived from the bucket start and Pod ID.",
90+
"time": "The start of the day bucket the billing record applies to.",
91+
"podId": "The Pod the billing record applies to.",
92+
"amount": "The amount charged for the bucket, in USD.",
93+
"timeBilledMs": "The total time billed for the bucket, in milliseconds.",
94+
"diskSpaceBilledGb": "The amount of disk space billed for the bucket, in gigabytes.",
95+
},
96+
},
97+
"billing_endpoints": {
98+
"description": "Daily billing history for Serverless endpoints, one record per endpoint per day bucket.",
99+
"docs_url": _API_DOCS,
100+
"columns": {
101+
"id": "Surrogate key derived from the bucket start and endpoint ID.",
102+
"time": "The start of the day bucket the billing record applies to.",
103+
"endpointId": "The Serverless endpoint the billing record applies to.",
104+
"amount": "The amount charged for the bucket, in USD.",
105+
"timeBilledMs": "The total time billed for the bucket, in milliseconds.",
106+
"diskSpaceBilledGb": "The amount of disk space billed for the bucket, in gigabytes.",
107+
},
108+
},
109+
"billing_network_volumes": {
110+
"description": "Daily billing history for network volume storage, aggregated account-wide per day bucket.",
111+
"docs_url": _API_DOCS,
112+
"columns": {
113+
"id": "Surrogate key derived from the bucket start.",
114+
"time": "The start of the day bucket the billing record applies to.",
115+
"amount": "The amount charged for the bucket, in USD.",
116+
"diskSpaceBilledGb": "The amount of disk space billed for the bucket, in gigabytes.",
117+
"highPerformanceStorageAmount": "The amount charged for high performance storage for the bucket, in USD.",
118+
"highPerformanceStorageDiskSpaceBilledGb": "High performance storage disk space billed for the bucket, in gigabytes.",
119+
},
120+
},
121+
}

0 commit comments

Comments
 (0)