providers

package
v0.1.31 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MetdataDomain = "provider.unikorn-cloud.org"
)

Variables

This section is empty.

Functions

func GetAnnotations

func GetAnnotations(resource metav1.Object) map[string]string

Types

type ExternalNetwork added in v0.1.3

type ExternalNetwork struct {
	// ID is the provider specific network ID.
	ID string
	// Name is the network name.
	Name string
}

ExternalNetwork represents an external network.

type ExternalNetworks added in v0.1.3

type ExternalNetworks []ExternalNetwork

ExternalNetworks is a list of provider networks.

type Flavor

type Flavor struct {
	// ID must be an immutable ID, preferably a UUID.
	// If the provider doesn't have the concept of an ID, and the name
	// is immutable you can make one out of that.
	ID string
	// Name of the flavor.
	Name string
	// CPU count.
	CPUs int
	// CPUFamily tells you the CPU type.
	CPUFamily *string
	// Memory available.
	Memory *resource.Quantity
	// Disk available.
	Disk *resource.Quantity
	// GPU describes the GPU(s) if any are available to the flavor.
	GPU *GPU
	// Baremetal is a bare-metal flavor.
	Baremetal bool
}

Flavor represents a machine type.

func (Flavor) GPUCount added in v0.1.17

func (f Flavor) GPUCount() int

type FlavorList

type FlavorList []Flavor

FlavorList allows us to attach sort functions and the like.

type GPU added in v0.1.17

type GPU struct {
	// Vendor is who makes the GPU, used to determine the drivers etc.
	Vendor GPUVendor
	// Model is the type of GPU.
	Model string
	// Memory is the amount of memory each GPU has.
	Memory *resource.Quantity
	// Count is the number of GPUs in the flavor.
	Count int
}

type GPUVendor

type GPUVendor string

GPUVendor defines the GPU vendor.

const (
	Nvidia GPUVendor = "NVIDIA"
	AMD    GPUVendor = "AMD"
)

type Image

type Image struct {
	// ID must be an immutable ID, preferably a UUID.
	// If the provider doesn't have the concept of an ID, and the name
	// is immutable you can make one out of that.
	ID string
	// Name of the image.
	Name string
	// Created is when the image was created.
	Created time.Time
	// Modified is when the image was modified.
	Modified time.Time
	// ImageVirtualization defines how the image can be used.
	Virtualization ImageVirtualization
	// KubernetesVersion is only populated if the image contains a pre-installed
	// version of Kubernetes, this acts as a cache and improves provisioning performance.
	// This is pretty much the only source of truth about Kubernetes versions at
	// present, so should be populated.  It must be a semver (starts with a vN.N.N).
	KubernetesVersion string
	// GPU is any GPU specific configuration for scheduling on a specific flavor type.
	GPU *ImageGPU
}

Image represents an operating system image.

type ImageGPU added in v0.1.26

type ImageGPU struct {
	// Vendor is the vendor a GPU is compatible with.
	Vendor GPUVendor
	// Driver is the driver version string.
	Driver string
	// Models is a list of GPU models a driver is certified with.
	Models []string
}

ImageGPU defines image specific GPU compatibility information.

type ImageList

type ImageList []Image

ImageList allows us to attach sort functions and the like.

type ImageVirtualization added in v0.1.26

type ImageVirtualization string
const (
	Virtualized ImageVirtualization = "virtualized"
	Baremetal   ImageVirtualization = "baremetal"
	Any         ImageVirtualization = "any"
)

type Provider

type Provider interface {
	// Flavors list all available flavors.
	Flavors(ctx context.Context) (FlavorList, error)
	// Images lists all available images.
	Images(ctx context.Context) (ImageList, error)
	// CreateIdentity creates a new identity for cloud infrastructure.
	CreateIdentity(ctx context.Context, organizationID, projectID string, request *openapi.IdentityWrite) (*unikornv1.Identity, error)
	// DeleteIdentity cleans up an identity for cloud infrastructure.
	DeleteIdentity(ctx context.Context, identity *unikornv1.Identity) error
	// CreatePhysicalNetwork create a new physical network.
	CreatePhysicalNetwork(ctx context.Context, identity *unikornv1.Identity, request *openapi.PhysicalNetworkWrite) (*unikornv1.PhysicalNetwork, error)
	// ListExternalNetworks returns a list of external networks if the platform
	// supports such a concept.
	ListExternalNetworks(ctx context.Context) (ExternalNetworks, error)
}

Providers are expected to provide a provider agnostic manner. They are also expected to provide any caching or memoization required to provide high performance and a decent UX.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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