model

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound = errors.New("not found")
	ErrInvalid  = errors.New("invalid")
)

Functions

This section is empty.

Types

type ID

type ID int64

func ParseID

func ParseID(s string) (ID, error)

func (ID) Hash

func (id ID) Hash() string

Hash is a short, consistent hash for the ID.

type Nodegroup

type Nodegroup string
const (
	NodegroupUndergraduate Nodegroup = "undergraduate"
	NodegroupGraduate      Nodegroup = "graduate"
)

func (Nodegroup) Valid

func (n Nodegroup) Valid() bool

type Resource

type Resource string
const (
	ResCPURequest     Resource = "requests.cpu"
	ResCPULimit       Resource = "limits.cpu"
	ResMemoryRequest  Resource = "requests.memory"
	ResMemoryLimit    Resource = "limits.memory"
	ResStorageRequest Resource = "requests.storage"
	ResGPURequest     Resource = "requests.nvidia.com/gpu"
)

func (Resource) Valid

func (r Resource) Valid() bool

type Workspace

type Workspace struct {
	ID

	Created   bool
	Enabled   bool
	Nodegroup Nodegroup
	Userdata  string

	Quotas map[Resource]uint64
	Users  []string

	Request *WorkspaceUpdate
}

func (*Workspace) InitialRequest

func (ws *Workspace) InitialRequest() *WorkspaceUpdate

InitialRequest returns the initial request for a new workspace. It has the same attributes as the workspace itself, but enabled.

func (Workspace) Valid

func (ws Workspace) Valid() bool

type WorkspaceService

type WorkspaceService interface {
	// Accept user-provided fields only.
	CreateWorkspace(ctx context.Context, ws *Workspace) (*Workspace, error)

	// Full scan every workspace.
	ListAllWorkspaces(ctx context.Context) ([]*Workspace, error)
	// Only list workspaces for a given user.
	ListUserWorkspaces(ctx context.Context, user string) ([]*Workspace, error)
	// List all created workspaces.
	ListCreatedWorkspaces(ctx context.Context) ([]*Workspace, error)

	GetWorkspace(ctx context.Context, id ID) (*Workspace, error)
	// Return ErrNotFound if not owned.
	GetUserWorkspace(ctx context.Context, id ID, user string) (*Workspace, error)

	// Immediately apply any changes, for admins.
	UpdateWorkspace(ctx context.Context, upd *WorkspaceUpdate) (*Workspace, error)
	// Requetst an update, for uesrs. Ignore admin-controlled fields.
	RequestUpdateWorkspace(ctx context.Context, upd *WorkspaceUpdate) (*Workspace, error)

	DeleteWorkspace(ctx context.Context, id ID) error
}

type WorkspaceUpdate

type WorkspaceUpdate struct {
	WorkspaceID ID
	ByUser      string

	Enabled   bool
	Nodegroup Nodegroup
	Userdata  string

	Quotas map[Resource]uint64
	Users  []string
}

func (WorkspaceUpdate) Valid

func (ws WorkspaceUpdate) Valid() bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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