Documentation
¶
Index ¶
- Constants
- func GetAnnotations(resource metav1.Object) map[string]string
- type CloudConfig
- type ExternalNetwork
- type ExternalNetworks
- type Flavor
- type FlavorList
- type GPU
- type GPUVendor
- type Image
- type ImageList
- type OpenStackCloudConfig
- type OpenStackCloudCredentials
- type OpenStackCloudState
- type Provider
- type ProviderType
Constants ¶
const (
MetdataDomain = "provider.unikorn-cloud.org"
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CloudConfig ¶ added in v0.1.2
type CloudConfig struct {
// Type defines the provider type.
Type ProviderType
// OpenStack is populated when the type is "openstack"
OpenStack *OpenStackCloudConfig
}
CloudConfig is a top level provider "agnostic" type to be passed to the HTTP handler.
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.
type FlavorList ¶
type FlavorList []Flavor
FlavorList allows us to attach sort functions and the like.
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
// 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
}
Image represents an operating system image.
type OpenStackCloudConfig ¶ added in v0.1.2
type OpenStackCloudConfig struct {
// Credentials contain login data, bound to a user and project.
Credentials *OpenStackCloudCredentials
// State holds other pertinent metadata.
State *OpenStackCloudState
}
OpenStackCloudConfig bundles together various OpenStack specific state.
type OpenStackCloudCredentials ¶ added in v0.1.2
OpenStackCloudCredentials define OpenStack specific identity information which is usually in the form of a cloud config for most uses.
type OpenStackCloudState ¶ added in v0.1.2
type OpenStackCloudState struct {
// UserID is the unique user ID.
UserID string
// ProjectID is the unique project ID.
ProjectID string
}
OpenStackCloudState is used to propagate pertinent inforamtion up to the client which is especially relevant for piecing together API logs and provider logs.
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, *CloudConfig, error)
// DeleteIdentity cleans up an identity for cloud infrastructure.
DeleteIdentity(ctx context.Context, identityID string) 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.
type ProviderType ¶ added in v0.1.2
type ProviderType string
ProviderType defines the provider to the client, while this is implicit, as you had to select a region in the first instance, it's handy to refer to to perform provider specific configuration.
const (
ProviderTypeOpenStack ProviderType = "openstack"
)