market

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2023 License: AGPL-3.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateToken

func GenerateToken() *string

func MakeClient

func MakeClient(region *string, ctx context.Context) (*ec2.Client, error)

func Optimize

func Optimize(jobFile *cedana.JobFile) []cedana.Instance

Every optimization function should be adding instances to o.output at every stage.

func OptimizeOrchestrator

func OptimizeOrchestrator() []cedana.Instance

func ReverseLookupInstancesById

func ReverseLookupInstancesById(instances []*cedana.Instance, id string) *cedana.Instance

func StringPtrToString

func StringPtrToString(p *string) string

Types

type CreateMachinePaperspaceResponse

type CreateMachinePaperspaceResponse struct {
	ID                     string `json:"id"`
	Name                   string `json:"name"`
	OS                     string `json:"os"`
	RAM                    string `json:"ram"`
	CPUs                   int    `json:"cpus"`
	GPU                    string `json:"gpu"`
	StorageTotal           string `json:"storageTotal"`
	StorageUsed            string `json:"storageUsed"`
	MachineType            string `json:"machineType"`
	UsageRate              string `json:"usageRate"`
	ShutdownTimeoutInHours int    `json:"shutdownTimeoutInHours"`
	ShutdownTimeoutForces  bool   `json:"shutdownTimeoutForces"`
	PerformAutoSnapshot    bool   `json:"performAutoSnapshot"`
	AutoSnapshotFrequency  string `json:"autoSnapshotFrequency"`
	AutoSnapshotSaveCount  int    `json:"autoSnapshotSaveCount"`
	DynamicPublicIP        bool   `json:"dynamicPublicIp"`
	AgentType              string `json:"agentType"`
	DTCreated              string `json:"dtCreated"`
	State                  string `json:"state"`
	UpdatesPending         bool   `json:"updatesPending"`
	NetworkID              string `json:"networkId"`
	PrivateIPAddress       string `json:"privateIpAddress"`
	PublicIPAddress        string `json:"publicIpAddress"`
	Region                 string `json:"region"`
	ScriptID               string `json:"scriptId"`
	DTLastRun              string `json:"dtLastRun"`
	RestorePointSnapshotID string `json:"restorePointSnapshotId"`
	RestorePointFrequency  string `json:"restorePointFrequency"`
}

response and curl function created w/ GPT the golang paperspace api is.... lacking

type EC2CreateInstanceAPI

type EC2CreateInstanceAPI interface {
	CreateFleet(ctx context.Context,
		params *ec2.CreateFleetInput,
		optFns ...func(*ec2.Options)) (*ec2.CreateFleetOutput, error)

	CreateTags(ctx context.Context,
		params *ec2.CreateTagsInput,
		optFns ...func(*ec2.Options)) (*ec2.CreateTagsOutput, error)

	GetSpotPlacementScores(ctx context.Context,
		params *ec2.GetSpotPlacementScoresInput,
		optFns ...func(*ec2.Options)) (*ec2.GetSpotPlacementScoresOutput, error)

	DescribeLaunchTemplateVersions(ctx context.Context,
		params *ec2.DescribeLaunchTemplateVersionsInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeLaunchTemplateVersionsOutput, error)

	CreateLaunchTemplate(ctx context.Context,
		params *ec2.CreateLaunchTemplateInput,
		optFns ...func(*ec2.Options)) (*ec2.CreateLaunchTemplateOutput, error)

	DescribeInstances(ctx context.Context,
		params *ec2.DescribeInstancesInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeInstancesOutput, error)

	TerminateInstances(ctx context.Context,
		params *ec2.TerminateInstancesInput,
		optFns ...func(*ec2.Options)) (*ec2.TerminateInstancesOutput, error)

	DescribeAvailabilityZones(ctx context.Context,
		params *ec2.DescribeAvailabilityZonesInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeAvailabilityZonesOutput, error)

	DescribeSubnets(ctx context.Context,
		params *ec2.DescribeSubnetsInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeSubnetsOutput, error)

	DescribeVpcs(ctx context.Context,
		params *ec2.DescribeVpcsInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeVpcsOutput, error)

	CreateSubnet(ctx context.Context,
		params *ec2.CreateSubnetInput,
		optFns ...func(*ec2.Options)) (*ec2.CreateSubnetOutput, error)

	DescribeSpotInstanceRequests(ctx context.Context,
		params *ec2.DescribeSpotInstanceRequestsInput,
		optFns ...func(*ec2.Options)) (*ec2.DescribeSpotInstanceRequestsOutput, error)
}

type LocalProvider

type LocalProvider struct {
	// contains filtered or unexported fields
}

func GenLocalClient

func GenLocalClient() *LocalProvider

func (*LocalProvider) CreateInstance

func (l *LocalProvider) CreateInstance(Candidate *cedana.Instance) (*cedana.Instance, error)

func (*LocalProvider) DescribeInstance

func (l *LocalProvider) DescribeInstance(Instances []*cedana.Instance, filter string) error

func (*LocalProvider) DestroyInstance

func (l *LocalProvider) DestroyInstance(i cedana.Instance) error

func (*LocalProvider) GetInstanceStatus

func (l *LocalProvider) GetInstanceStatus(i cedana.Instance) (*cedana.ProviderEvent, error)

func (*LocalProvider) Name

func (l *LocalProvider) Name() string

type MockProvider

type MockProvider struct {
	MockTermination bool // helps fiddle with the termination logic
}

func (*MockProvider) CreateInstance

func (m *MockProvider) CreateInstance(Candidate *cedana.Instance) (*cedana.Instance, error)

func (*MockProvider) DescribeInstance

func (m *MockProvider) DescribeInstance(Instances []*cedana.Instance, filter string) error

func (*MockProvider) DestroyInstance

func (m *MockProvider) DestroyInstance(i cedana.Instance) error

func (*MockProvider) GetInstanceStatus

func (m *MockProvider) GetInstanceStatus(i cedana.Instance) (*cedana.ProviderEvent, error)

func (*MockProvider) Name

func (m *MockProvider) Name() string

type Optimizer

type Optimizer struct {
	// contains filtered or unexported fields
}

func Build

func Build(jobFile *cedana.JobFile) *Optimizer

func (*Optimizer) CedanaBasicPriceOptimizer

func (o *Optimizer) CedanaBasicPriceOptimizer() *Optimizer

func (*Optimizer) FilterAWSCapacity

func (o *Optimizer) FilterAWSCapacity() *Optimizer

func (*Optimizer) FilterByRegions

func (o *Optimizer) FilterByRegions(maxInstancesToConsider int) *Optimizer

func (*Optimizer) FilterForGPUs

func (o *Optimizer) FilterForGPUs() *Optimizer

Only call if GPU is asked for, as this will return empty otherwise

func (*Optimizer) FilterUsingConfig

func (o *Optimizer) FilterUsingConfig() *Optimizer

func (*Optimizer) FilterUsingConfigOrch

func (o *Optimizer) FilterUsingConfigOrch() *Optimizer

func (*Optimizer) FilterUsingMaxPrice

func (o *Optimizer) FilterUsingMaxPrice() *Optimizer

func (*Optimizer) LoadCatalogsFromR2

func (o *Optimizer) LoadCatalogsFromR2()

type Paperspace

type Paperspace struct {
	// contains filtered or unexported fields
}

implementation of Provider for paperspace

func GenPaperspaceClient

func GenPaperspaceClient() *Paperspace

func (*Paperspace) CreateInstance

func (p *Paperspace) CreateInstance(i *cedana.Instance) (*cedana.Instance, error)

func (*Paperspace) DescribeInstance

func (p *Paperspace) DescribeInstance(instances []*cedana.Instance, filter string) error

func (*Paperspace) DestroyInstance

func (p *Paperspace) DestroyInstance(i cedana.Instance) error

func (*Paperspace) GetInstanceStatus

func (p *Paperspace) GetInstanceStatus(i cedana.Instance) (*cedana.ProviderEvent, error)

TODO: Unimplemented

func (*Paperspace) Name

func (p *Paperspace) Name() string

type Spot

type Spot struct {
	Ctx          context.Context
	Cfg          *utils.CedanaConfig
	Logger       *zerolog.Logger
	Client       EC2CreateInstanceAPI
	LaunchParams *ec2.CreateFleetInput
	// contains filtered or unexported fields
}

func GenSpotClient

func GenSpotClient() *Spot

func (*Spot) AMIByRegion

func (s *Spot) AMIByRegion(region string) *string

func (*Spot) CreateInstance

func (s *Spot) CreateInstance(i *cedana.Instance) (*cedana.Instance, error)

func (*Spot) DescribeInstance

func (s *Spot) DescribeInstance(instances []*cedana.Instance, filter string) error

func (*Spot) DestroyInstance

func (s *Spot) DestroyInstance(instance cedana.Instance) error

TODO: should only take one instance at a time!

func (*Spot) FetchSpotEvents

func (s *Spot) FetchSpotEvents(ctx context.Context) error

func (*Spot) GetInstanceStatus

func (s *Spot) GetInstanceStatus(instance cedana.Instance) (*cedana.ProviderEvent, error)

func (*Spot) Name

func (s *Spot) Name() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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