UNPKG

@pipedream.in/cloud-compute-sdk

Version:

Official SDK for Pipedream Cloud Compute Platform

195 lines (194 loc) 7.7 kB
/** * SDK Client for Cloud Compute Platform * * Example usage: * * import { CloudComputeSDK } from './lib/sdkClient' * * const sdk = new CloudComputeSDK({ * baseUrl: 'https://your-project.supabase.co/functions/v1', * apiKey: 'your-api-key' * }) * * // Check wallet balance * const balance = await sdk.wallet.getBalance() * * // Create deployment * const deployment = await sdk.deployments.create({ * cloud_inventory_id: 'uuid', * rental_duration_hours: 24 * }) */ export interface SDKConfig { baseUrl: string; apiKey: string; } export interface CloudProvider { id: string; name: string; display_name: string; description?: string; logo_url?: string; is_active: boolean; } export interface CloudRegion { id: string; provider_id: string; region_code: string; region_name: string; is_active: boolean; } export interface CloudInventory { id: string; provider_id: string; region_id: string; instance_type: string; price_usd_hr: number; vcpu?: number; memory?: string; storage_type?: string; storage_total_gb?: number; accel_model?: string; accel_count?: number; accel_mem_mib?: number; is_active: boolean; minimum_hours: number; availability_type: string; class?: string; } export interface ProviderTemplate { id: string; provider_id: string; template_name: string; display_name: string; description?: string; operating_system: string; os_family: string; template_type: string; default_username: string; supported_instance_types?: string[]; is_active: boolean; } export interface CreateDeploymentRequest { cloud_inventory_id: string; rental_duration_hours?: number; deployment_type?: 'cloud' | 'private'; ssh_public_key?: string; tags?: Record<string, any>; } export interface Deployment { deployment_id: string; status: string; cost_usd: number; duration_hours: number; created_at: string; } export interface APIKey { id: string; keyName: string; apiKey?: string; permissions: string[]; isActive: boolean; lastUsedAt?: string; expiresAt?: string; createdAt: string; } export interface UsageSummary { period: { start_date: string; end_date: string; }; summary: { total_calls: number; successful_calls: number; failed_calls: number; total_cost_usd: number; success_rate: string; }; endpoint_breakdown: Array<{ endpoint: string; calls: number; cost_usd: number; }>; } export declare class CloudComputeSDK { private baseUrl; private apiKey; constructor(config: SDKConfig); private request; providers: { list: () => Promise<{ data: CloudProvider[]; }>; getRegions: (providerId?: string) => Promise<{ data: CloudRegion[]; }>; getTemplates: (providerId?: string) => Promise<{ data: ProviderTemplate[]; }>; }; inventory: { list: (params?: { provider_id?: string; region_id?: string; instance_type?: string; min_vcpu?: number; max_price_usd_hr?: number; accel_model?: string; availability_type?: string; limit?: number; offset?: number; }) => Promise<{ data: CloudInventory[]; }>; get: (inventoryId: string) => Promise<{ data: CloudInventory; }>; getByProvider: (providerName: string, params?: { region_code?: string; instance_type?: string; min_vcpu?: number; max_price_usd_hr?: number; limit?: number; offset?: number; }) => Promise<{ data: CloudInventory[]; }>; }; deployments: { create: (params: CreateDeploymentRequest) => Promise<{ message: string; data: Deployment; }>; list: (params?: { limit?: number; offset?: number; status?: string; }) => Promise<{ data: any[]; }>; get: (deploymentId: string) => Promise<{ data: any; }>; }; usage: { getLogs: (params?: { limit?: number; offset?: number; start_date?: string; end_date?: string; endpoint?: string; }) => Promise<{ data: any[]; }>; getSummary: (params?: { start_date?: string; end_date?: string; }) => Promise<UsageSummary>; getBilling: (params?: { start_date?: string; end_date?: string; }) => Promise<any>; }; } export declare const EXAMPLE_USAGE = "\n// Initialize the SDK\nconst sdk = new CloudComputeSDK({\n baseUrl: 'https://iblofngyjjxyafjayxkt.supabase.co/functions/v1',\n apiKey: 'your-api-key-here'\n})\n\n// List all available cloud providers\nconst providers = await sdk.providers.list()\nconsole.log('Available providers:', providers.data)\n\n// Get regions for AWS\nconst awsRegions = await sdk.providers.getRegions('aws-provider-id')\nconsole.log('AWS regions:', awsRegions.data)\n\n// Get templates for AWS\nconst awsTemplates = await sdk.providers.getTemplates('aws-provider-id')\nconsole.log('AWS templates:', awsTemplates.data)\n\n// List all inventory\nconst allInventory = await sdk.inventory.list()\nconsole.log('All available machines:', allInventory.data)\n\n// Filter AWS machines by region and specs\nconst awsMachines = await sdk.inventory.getByProvider('aws', {\n region_code: 'us-east-1',\n min_vcpu: 4,\n max_price_usd_hr: 1.0\n})\nconsole.log('Filtered AWS machines:', awsMachines.data)\n\n// Get specific inventory details\nconst machineDetails = await sdk.inventory.get('inventory-id')\nconsole.log('Machine details:', machineDetails.data)\n\n// Create a deployment\nconst deployment = await sdk.deployments.create({\n cloud_inventory_id: 'your-inventory-id',\n rental_duration_hours: 24,\n ssh_public_key: 'ssh-rsa AAAAB3...'\n})\n\n// Get usage summary\nconst usage = await sdk.usage.getSummary({\n start_date: '2025-01-01T00:00:00Z',\n end_date: '2025-01-31T23:59:59Z'\n})\n\n// INVENTORY STRUCTURE EXPLANATION:\n// \n// 1. PROVIDERS: Each provider (AWS, Vultr, VAST AI) has different machine types\n// - AWS: EC2 instances (t3.micro, m5.large, g4dn.xlarge, etc.)\n// - Vultr: VPS instances (vc2-1c-1gb, vcg-g1-1c-3gb, etc.) \n// - VAST AI: GPU instances (RTX 4090, A100, H100, etc.)\n//\n// 2. REGIONS: Each provider has different regions\n// - AWS: us-east-1, eu-west-1, ap-southeast-1, etc.\n// - Vultr: ewr, lax, fra, etc.\n// - VAST AI: Global locations\n//\n// 3. TEMPLATES: Each provider has deployment templates\n// - AWS: AMI images (Ubuntu 20.04, Windows Server, Deep Learning AMI)\n// - Vultr: OS templates (Ubuntu, CentOS, Debian, etc.)\n// - VAST AI: Docker images for ML/AI workloads\n//\n// 4. INVENTORY FILTERING:\n// - By provider: Filter machines by specific cloud provider\n// - By region: Filter by geographical location\n// - By specs: Filter by CPU cores, memory, GPU, price\n// - By availability: instant, on-demand, spot instances\n//\n// Example workflow:\n// 1. List providers \u2192 Choose AWS/Vultr/VAST\n// 2. Get regions for chosen provider \u2192 Select region\n// 3. Get templates for provider \u2192 Choose OS/Docker image\n// 4. List inventory with filters \u2192 Find suitable machine\n// 5. Create deployment with inventory_id + template\n";