paperspace

package module
v0.0.0-...-2236132 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: ISC Imports: 12 Imported by: 0

README

paperspace-go

Usage

package main

import (
    paperspace "github.com/Paperspace/paperspace-go"
)

func getClient() *paperspace.Client {
    client := paperspace.NewClient()
    client.APIKey = p.APIKey
    return client
}

Environment Variables

  • PAPERSPACE_APIKEY: Paperspace API key
  • PAPERSPACE_BASEURL: Paperspace API url
  • PAPERSPACE_DEBUG: Enable debugging
  • PAPERSPACE_DEBUG_BODY: Enable debug for response body

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ClusterAWSRegions = []string{
	"us-east-1",
	"us-east-2",
	"us-west-1",
	"us-west-2",
	"ca-central-1",
	"eu-west-1",
	"eu-west-2",
	"eu-central-1",
	"ap-northeast-1",
	"ap-northeast-2",
	"ap-southeast-1",
	"ap-southeast-2",
}
View Source
var ClusterAzureRegions = []string{
	"australiacentral",
	"australiaeast",
	"australiasoutheast",
	"brazilsouth",
	"brazilsoutheast",
	"canadacentral",
	"canadaeast",
	"centralindia",
	"centralus",
	"eastasia",
	"eastus",
	"eastus2",
	"francecentral",
	"francesouth",
	"germanynorth",
	"germanywestcentral",
	"japaneast",
	"japanwest",
	"koreacentral",
	"koreasouth",
	"northcentralus",
	"northeurope",
	"norwayeast",
	"norwaywest",
	"southafricanorth",
	"southcentralus",
	"southindia",
	"southeastasia",
	"switzerlandnorth",
	"switzerlandwest",
	"uaecentral",
	"uaenorth",
	"uksouth",
	"ukwest",
	"westcentralus",
	"westeurope",
	"westus",
	"westus2",
}
View Source
var ClusterGCPRegions = []string{
	"asia-east1",
	"europe-west1",
	"europe-west4",
	"us-central1",
	"us-east1",
	"us-west1",
}
View Source
var DefaultBaseURL = "https://api.paperspace.io"
View Source
var DefaultClusterType = 3
View Source
var RegionMap = map[string]int{
	"East Coast (NY2)": 1,
	"West Coast (CA1)": 2,
	"Europe (AMS1)":    3,
}

Functions

func Boolean

func Boolean(v bool) *bool

func Int

func Int(v int) *int

func String

func String(v string) *string

Types

type APIBackend

type APIBackend struct {
	BaseURL    string
	Debug      bool
	DebugBody  bool
	HTTPClient *http.Client
	RetryCount int
}

func NewAPIBackend

func NewAPIBackend() *APIBackend

func (*APIBackend) Request

func (c *APIBackend) Request(method string, url string,
	params, result interface{}, requestParams RequestParams) (res *http.Response, err error)

type APIToken

type APIToken struct {
	Key string `json:"key"`
}

type AutoscalingGroup

type AutoscalingGroup struct {
	ID          string    `json:"id"`
	Name        string    `json:"name"`
	Min         int       `json:"min"`
	Max         int       `json:"max"`
	Current     int       `json:"current"`
	ClusterID   string    `json:"clusterId"`
	MachineType string    `json:"machineType"`
	TemplateID  string    `json:"templateId"`
	ScriptID    string    `json:"startupScriptId"`
	NetworkID   string    `json:"networkId"`
	Nodes       []Machine `json:"nodes"`
}

type AutoscalingGroupCreateParams

type AutoscalingGroupCreateParams struct {
	RequestParams

	Name        string `json:"name"`
	Min         int    `json:"min"`
	Max         int    `json:"max"`
	ClusterID   string `json:"clusterId"`
	MachineType string `json:"machineType"`
	TemplateID  string `json:"templateId"`
	ScriptID    string `json:"startupScriptId,omitempty"`
	NetworkID   string `json:"networkId"`
}

type AutoscalingGroupDeleteParams

type AutoscalingGroupDeleteParams struct {
	RequestParams
}

type AutoscalingGroupGetParams

type AutoscalingGroupGetParams struct {
	RequestParams

	IncludeNodes bool `json:"includeNodes,omitempty"`
}

type AutoscalingGroupListParams

type AutoscalingGroupListParams struct {
	RequestParams

	Filter       Filter `json:"filter,omitempty"`
	IncludeNodes bool   `json:"includeNodes,omitempty"`
}

type AutoscalingGroupUpdateAttributeParams

type AutoscalingGroupUpdateAttributeParams struct {
	Name        string `json:"name,omitempty"`
	Min         *int   `json:"min,omitempty"`
	Max         *int   `json:"max,omitempty"`
	Current     *int   `json:"current,omitempty"`
	MachineType string `json:"machineType,omitempty"`
	TemplateID  string `json:"templateId,omitempty"`
	ScriptID    string `json:"startupScriptId,omitempty"`
	NetworkID   string `json:"networkId,omitempty"`
}

type AutoscalingGroupUpdateParams

type AutoscalingGroupUpdateParams struct {
	RequestParams

	Attributes AutoscalingGroupUpdateAttributeParams `json:"attributes,omitempty"`
}

type Backend

type Backend interface {
	Request(method string, url string, params, result interface{}, requestParams RequestParams) (*http.Response, error)
}

type Client

type Client struct {
	APIKey  string
	Backend Backend
}

func NewClient

func NewClient() *Client

client that makes requests to Gradient API

func NewClientWithBackend

func NewClientWithBackend(backend Backend) *Client

func (Client) CreateAutoscalingGroup

func (c Client) CreateAutoscalingGroup(params AutoscalingGroupCreateParams) (AutoscalingGroup, error)

func (Client) CreateCluster

func (c Client) CreateCluster(params ClusterCreateParams) (Cluster, error)

func (Client) CreateMachine

func (c Client) CreateMachine(params MachineCreateParams) (Machine, error)

func (Client) CreateNetwork

func (c Client) CreateNetwork(params NetworkCreateParams) (Network, error)

func (Client) DeleteAutoscalingGroup

func (c Client) DeleteAutoscalingGroup(id string, params AutoscalingGroupDeleteParams) error

func (Client) DeleteMachine

func (c Client) DeleteMachine(id string, params MachineDeleteParams) error

func (Client) DeleteNetwork

func (c Client) DeleteNetwork(id string, params NetworkDeleteParams) error

func (Client) GetAutoscalingGroup

func (c Client) GetAutoscalingGroup(id string, params AutoscalingGroupGetParams) (AutoscalingGroup, error)

func (Client) GetAutoscalingGroups

func (c Client) GetAutoscalingGroups(params AutoscalingGroupListParams) ([]AutoscalingGroup, error)

func (Client) GetCluster

func (c Client) GetCluster(id string, params ClusterGetParams) (Cluster, error)

func (Client) GetClusters

func (c Client) GetClusters(params ClusterListParams) ([]Cluster, error)

func (Client) GetMachine

func (c Client) GetMachine(id string, params MachineGetParams) (Machine, error)

func (Client) GetMachines

func (c Client) GetMachines(params MachineListParams) ([]Machine, error)

func (Client) GetNetwork

func (c Client) GetNetwork(id string, params NetworkGetParams) (Network, error)

func (Client) GetNetworks

func (c Client) GetNetworks(params NetworkListParams) ([]Network, error)

func (*Client) Request

func (c *Client) Request(method string, url string, params, result interface{}, requestParams RequestParams) (*http.Response, error)

func (Client) UpdateAutoscalingGroup

func (c Client) UpdateAutoscalingGroup(id string, params AutoscalingGroupUpdateParams) error

func (Client) UpdateCluster

func (c Client) UpdateCluster(id string, params ClusterUpdateParams) (Cluster, error)

func (Client) UpdateMachine

func (c Client) UpdateMachine(params MachineUpdateParams) (Machine, error)

type Cluster

type Cluster struct {
	APIToken          APIToken            `json:"apiToken"`
	ClusterSecret     string              `json:"clusterSecret,omitempty"`
	Domain            string              `json:"fqdn"`
	Platform          ClusterPlatformType `json:"cloud"`
	Name              string              `json:"name"`
	ID                string              `json:"id"`
	Region            string              `json:"region,omitempty"`
	S3Credential      S3Credential        `json:"s3Credential"`
	ContainerRegistry *ContainerRegistry  `json:"containerRegistry,omitempty"`
	TeamID            string              `json:"teamId"`
	Type              string              `json:"type,omitempty"`
}

type ClusterCreateParams

type ClusterCreateParams struct {
	RequestParams

	ArtifactsAccessKeyID        string `json:"accessKey,omitempty" yaml:"artifactsAccessKeyId,omitempty"`
	ArtifactsBucketPath         string `json:"bucketPath,omitempty" yaml:"artifactsBucketPath,omitempty"`
	ArtifactsSecretAccessKey    string `json:"secretKey,omitempty" yaml:"artifactsSecretAccessKey,omitempty"`
	Domain                      string `json:"fqdn" yaml:"domain"`
	IsDefault                   bool   `json:"isDefault,omitempty" yaml:"isDefault,omitempty"`
	Name                        string `json:"name" yaml:"name"`
	Platform                    string `json:"cloud,omitempty" yaml:"platform,omitempty"`
	Region                      string `json:"region,omitempty" yaml:"region,omitempty"`
	Type                        int    `json:"type,omitempty" yaml:"type,omitempty"`
	ContainerRegistryURL        string `json:"containerRegistryUrl,omitempty" yaml:"containerRegistryUrl,omitempty"`
	ContainerRegistryRepository string `json:"containerRegistryRepository,omitempty" yaml:"containerRegistryRepository,omitempty"`
	ContainerRegistryUsername   string `json:"containerRegistryUsername,omitempty" yaml:"containerRegistryUsername,omitempty"`
	ContainerRegistryPassword   string `json:"containerRegistryPassword,omitempty" yaml:"containerRegistryPassword,omitempty"`
}

type ClusterGetParams

type ClusterGetParams struct {
	RequestParams
}

type ClusterListParams

type ClusterListParams struct {
	RequestParams

	Filter Filter `json:"filter,omitempty"`
}

func NewClusterListParams

func NewClusterListParams() ClusterListParams

type ClusterPlatformType

type ClusterPlatformType string
const (
	ClusterPlatformAWS        ClusterPlatformType = "aws"
	ClusterPlatformAzure      ClusterPlatformType = "azure"
	ClusterPlatformGCP        ClusterPlatformType = "gcp"
	ClusterPlatformDGX        ClusterPlatformType = "nvidia-dgx"
	ClusterPlatformMetal      ClusterPlatformType = "metal"
	ClusterPlatformPaperspace ClusterPlatformType = "paperspace-cloud"
	ClusterPlatformGraphcore  ClusterPlatformType = "graphcore"
	ClusterPlatformSambaNova  ClusterPlatformType = "sambanova"
)

type ClusterUpdateAttributeParams

type ClusterUpdateAttributeParams struct {
	RequestParams

	Domain string `json:"fqdn,omitempty" yaml:"domain"`
	Name   string `json:"name,omitempty" yaml:"name"`
}

type ClusterUpdateParams

type ClusterUpdateParams struct {
	RequestParams

	Attributes             ClusterUpdateAttributeParams `json:"attributes,omitempty"`
	CreateNewToken         bool                         `json:"createNewToken,omitempty"`
	CreateNewClusterSecret bool                         `json:"createNewClusterSecret,omitempty"`
	RegistryAttributes     ClusterUpdateRegistryParams  `json:"registryAttributes,omitempty"`
	ID                     string                       `json:"id"`
	RetryWorkflow          bool                         `json:"retryWorkflow,omitempty"`
	S3Attributes           ClusterUpdateS3Params        `json:"s3Attributes,omitempty"`
}

type ClusterUpdateRegistryParams

type ClusterUpdateRegistryParams struct {
	RequestParams

	URL        string `json:"url,omitempty"`
	Password   string `json:"password,omitempty"`
	Repository string `json:"repository,omitempty"`
	Username   string `json:"username,omitempty"`
}

type ClusterUpdateS3Params

type ClusterUpdateS3Params struct {
	RequestParams

	AccessKey string `json:"accessKey,omitempty"`
	Bucket    string `json:"bucket,omitempty"`
	SecretKey string `json:"secretKey,omitempty"`
}

type ContainerRegistry

type ContainerRegistry struct {
	Username   string `json:"username,omitempty"`
	Password   string `json:"password,omitempty"`
	URL        string `json:"url,omitempty"`
	Repository string `json:"repository,omitempty"`
}

type Filter

type Filter struct {
	Where map[string]interface{} `json:"where,omitempty"`
	Limit int64                  `json:"limit,omitempty"`
	Order string                 `json:"order,omitempty"`
}

type Machine

type Machine struct {
	ID                     string       `json:"id"`
	Name                   string       `json:"name"`
	OS                     string       `json:"os"`
	RAM                    int64        `json:"ram,string"`
	CPUs                   int          `json:"cpus"`
	GPU                    string       `json:"gpu"`
	State                  MachineState `json:"state"`
	Region                 string       `json:"region"`
	StorageTotal           int64        `json:"storageTotal,string"`
	StorageUsed            int64        `json:"storageUsed,string"`
	UsageRate              string       `json:"usageRate"`
	ShutdownTimeoutInHours int          `json:"shutdownTimeoutInHours"`
	ShutdownTimeoutForces  bool         `json:"shutdownTimeoutForces"`
	AutoSnapshotFrequency  int          `json:"autoSnapshotFrequency"`
	AutoSnapshotSaveCount  int          `json:"autoSnapshotSaveCount"`
	RestorePointSnapshotID string       `json:"restorePointSnapshotId"`
	RestorePointFrequency  string       `json:"restorePointFrequency"`
	AgentType              string       `json:"agentType"`
	NetworkID              string       `json:"networkId"`
	PrivateIpAddress       string       `json:"privateIpAddress"`
	PublicIpAddress        string       `json:"publicIpAddress"`
	DtCreated              time.Time    `json:"dtCreated"`
	DtDeleted              time.Time    `json:"dtDeleted"`
	UserID                 string       `json:"userId"`
	TeamID                 string       `json:"teamId"`
	ScriptID               string       `json:"scriptId"`
	DtLastRun              string       `json:"dtLastRun"`
	IsManaged              bool         `json:"isManaged"`
	MachineType            string       `json:"machineType"`
	DynamicPublicIP        bool         `json:"dynamicPublicIp,omitempty"`
}

type MachineCreateParams

type MachineCreateParams struct {
	RequestParams

	Name                       string `json:"machineName"`
	Region                     string `json:"region"`
	MachineType                string `json:"machineType"`
	Size                       int    `json:"size"`
	BillingType                string `json:"billingType"`
	TemplateID                 string `json:"templateId"`
	UserID                     string `json:"userId,omitempty"`
	TeamID                     string `json:"teamId,omitempty"`
	ScriptID                   string `json:"scriptId,omitempty"`
	NetworkID                  string `json:"networkId,omitempty"`
	ShutdownTimeoutInHours     int    `json:"shutdownTimeoutInHours,omitempty"`
	AssignPublicIP             *bool  `json:"assignPublicIP,omitempty"`
	IsManaged                  *bool  `json:"isManaged,omitempty"`
	StartOnCreate              *bool  `json:"startOnCreate,omitempty"`
	TakeInitialSnapshot        *bool  `json:"takeInitialSnapshot,omitempty"`
	MarkSnapshotAsRestorePoint *bool  `json:"markSnapshotAsRestorePoint,omitempty"`
	RestorePointFrequency      string `json:"restorePointFrequency,omitempty"`
	DynamicPublicIP            *bool  `json:"dynamicPublicIp,omitempty"`
}

type MachineDeleteParams

type MachineDeleteParams struct {
	RequestParams
}

type MachineGetParams

type MachineGetParams struct {
	RequestParams
}

type MachineListParams

type MachineListParams struct {
	RequestParams

	Filter Filter `json:"filter,omitempty"`
}

func NewMachineListParams

func NewMachineListParams() MachineListParams

type MachineState

type MachineState string
const (
	MachineStateOff          MachineState = "off"
	MachineStateProvisioning MachineState = "provisioning"
	MachineStateReady        MachineState = "ready"
	MachineStateStarting     MachineState = "starting"
)

type MachineUpdateAttributeParams

type MachineUpdateAttributeParams struct {
	RequestParams

	Name string `json:"name,omitempty" yaml:"name"`
}

type MachineUpdateParams

type MachineUpdateParams struct {
	RequestParams

	ID                     string `json:"machineId"`
	Name                   string `json:"machineName,omitempty"`
	ShutdownTimeoutInHours int    `json:"shutdownTimeoutInHours,omitempty"`
	ShutdownTimeoutForces  *bool  `json:"shutdownTimeoutForces,omitempty"`
	AutoSnapshotFrequency  string `json:"autoSnapshotFrequency,omitempty"`
	AutoSnapshotSaveCount  int    `json:"autoSnapshotSaveCount,omitempty"`
	PerformAutoSnapshot    *bool  `json:"performAutoSnapshot,omitempty"`
	DynamicPublicIP        *bool  `json:"dynamicPublicIp,omitempty"`
}

type Network

type Network struct {
	ID        string    `json:"id"`
	Name      string    `json:"name"`
	Network   string    `json:"network"`
	Netmask   string    `json:"netmask"`
	TeamID    string    `json:"teamId"`
	IsManaged bool      `json:"isManaged"`
	DtCreated time.Time `json:"dtCreated"`
	DtDeleted time.Time `json:"dtDeleted"`
}

type NetworkCreateParams

type NetworkCreateParams struct {
	RequestParams

	Name   string `json:"name"`
	Region string `json:"region"`
}

type NetworkDeleteParams

type NetworkDeleteParams struct {
	RequestParams
}

type NetworkGetParams

type NetworkGetParams struct {
	RequestParams
}

type NetworkListParams

type NetworkListParams struct {
	RequestParams
	ID      string `json:"id,omitempty"`
	Name    string `json:"name,omitempty"`
	Region  string `json:"region,omitempty"`
	Network string `json:"network,omitempty"`
	Netmask string `json:"netmask,omitempty"`
	TeamID  string `json:"teamId,omitempty"`
}

type PaperspaceError

type PaperspaceError struct {
	Name    string `json:"name"`
	Message string `json:"message"`
	Status  int    `json:"status"`
}

func (PaperspaceError) Error

func (e PaperspaceError) Error() string

type PaperspaceErrorResponse

type PaperspaceErrorResponse struct {
	Error *PaperspaceError `json:"error"`
}

type RequestParams

type RequestParams struct {
	Context context.Context   `json:"-"`
	Headers map[string]string `json:"-"`
}

type S3Credential

type S3Credential struct {
	AccessKey string `json:"accessKey"`
	Bucket    string `json:"bucket"`
	SecretKey string `json:"secretKey,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL