runpod-client
Version:
This unofficial runpod.io client provides functionality to interact with the Runpod.io API.
109 lines (108 loc) • 5.67 kB
JavaScript
(function(s,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(s=typeof globalThis<"u"?globalThis:s||self,s["runpod-client"]=p())})(this,function(){"use strict";var s=(e=>(e.create="create",e.list="list",e.start="start",e.stop="stop",e.get="get",e.getGPUTypes="getGPUTypes",e.getGPU="getGPU",e))(s||{});const p=async e=>(await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
query
Pods {
myself {
pods {
id
name
runtime {
uptimeInSeconds
ports {
ip
isIpPublic
privatePort
publicPort
type
}
gpus {
id
gpuUtilPercent
memoryUtilPercent
} container {
cpuPercent
memoryPercent
}
}
}
}
}
`})})).json()).data.myself.pods,i=async e=>(await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
query GpuTypes {
gpuTypes {
id
displayName
memoryInGb
}
}
`})})).json()).data.gpuTypes,a=async(e,n,t=1)=>(await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
mutation {
podResume(
input: {
podId: "${n}",
gpuCount: ${t}
} )
{
id
desiredStatus
imageName
env
machineId
machine {
podHostId
}
}
}`})})).json()).data,d=async(e,n)=>(await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
mutation {
podStop(
input:
{podId: "${n}"
})
{
id
desiredStatus
}
}`})})).json()).data,u=async(e,n)=>(await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
query
Pod {
pod(
input: {
podId: "${n}"
}
)
{
id
name
runtime {
uptimeInSeconds
ports {
ip
isIpPublic
privatePort
publicPort
type
}
gpus {
id
gpuUtilPercent
memoryUtilPercent
} container {
cpuPercent
memoryPercent
}
}
}
}`})})).json()).data,c=async(e,n,t)=>{const o=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:`
query GpuTypes {
gpuTypes(input: {id: "${n}"}) {
id
displayName
memoryInGb
secureCloud
communityCloud
lowestPrice(input: {gpuCount: ${t||1}}) {
minimumBidPrice
uninterruptablePrice
}
}
}
`})})).json();if(o.errors)console.log(o.errors[0].message);else return o.data.gpuTypes};return e=>({action:n,id:t,count:r})=>{const o="https://api.runpod.io/graphql?api_key="+e;switch(n){case s.list:return p(o);case s.start:return t?a(o,t,r):"Please provide a pod id";case s.stop:return t?d(o,t):"Please provide a pod id";case s.get:return t?u(o,t):"Please provide a pod id";case s.getGPU:return t?c(o,t,r):"Please provide a gpu id";case s.getGPUTypes:return i(o)}}});