api

package
v0.0.0-...-bc95524 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2025 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CinderRequestContext

type CinderRequestContext struct {
	UserID          string   `json:"user"`
	ProjectID       string   `json:"project_id"`
	SystemScope     string   `json:"system_scope"`
	DomainID        string   `json:"domain"`
	UserDomainID    string   `json:"user_domain"`
	ProjectDomainID string   `json:"project_domain"`
	IsAdmin         bool     `json:"is_admin"`
	ReadOnly        bool     `json:"read_only"`
	ShowDeleted     bool     `json:"show_deleted"`
	RequestID       string   `json:"request_id"`
	GlobalRequestID string   `json:"global_request_id"`
	ResourceUUID    string   `json:"resource_uuid"`
	Roles           []string `json:"roles"`
	UserIdentity    string   `json:"user_identity"`
	IsAdminProject  bool     `json:"is_admin_project"`

	RemoteAddress string  `json:"remote_address"`
	Timestamp     string  `json:"timestamp"`
	QuotaClass    *string `json:"quota_class"`
	ProjectName   string  `json:"project_name"`
}

TODO add specs

type ExternalSchedulerHost

type ExternalSchedulerHost struct {
	// Name of the Cinder share host.
	VolumeHost string `json:"host"`
}

Host object from the Cinder scheduler pipeline.

type ExternalSchedulerRequest

type ExternalSchedulerRequest struct {
	// TODO: Use a more specific type for the spec.
	Spec any `json:"spec"`
	// Request context from Cinder that contains additional meta information.
	Context CinderRequestContext `json:"context"`
	// The share hosts that are available for scheduling.
	Hosts []ExternalSchedulerHost `json:"hosts"`
	// Weights map of share hosts to their weights calculated by the Cinder weigher pipeline.
	Weights map[string]float64 `json:"weights"`
	// The name of the pipeline to execute.
	// By default the required pipeline with the name "default" will be used.
	Pipeline string `json:"pipeline"`
}

Request generated by the Cinder scheduler when calling cortex. The request contains a spec of the share to be scheduled, a list of hosts and their status, and a map of weights that were calculated by the Cinder weigher pipeline. Some additional flags are also included.

func (ExternalSchedulerRequest) GetPipeline

func (r ExternalSchedulerRequest) GetPipeline() string

func (ExternalSchedulerRequest) GetSubjects

func (r ExternalSchedulerRequest) GetSubjects() []string

func (ExternalSchedulerRequest) GetTraceLogArgs

func (r ExternalSchedulerRequest) GetTraceLogArgs() []slog.Attr

func (ExternalSchedulerRequest) GetWeights

func (r ExternalSchedulerRequest) GetWeights() map[string]float64

func (ExternalSchedulerRequest) WithPipeline

func (r ExternalSchedulerRequest) WithPipeline(pipeline string) scheduler.PipelineRequest

type ExternalSchedulerResponse

type ExternalSchedulerResponse struct {
	Hosts []string `json:"hosts"`
}

Response generated by cortex for the Cinder scheduler. Cortex returns an ordered list of hosts that the share should be scheduled on.

type Pipeline

type Pipeline interface {
	// Run the scheduling pipeline with the given request.
	Run(request Request) ([]string, error)
}

type Request

type Request interface {
	// Specification of the scheduling request.
	GetSpec() any
	// Request context from Cinder that contains additional meta information.
	GetContext() CinderRequestContext
	// List of hosts to be considered for scheduling.
	// If the list is nil, all hosts are considered.
	GetHosts() []string
	// Map of weights to start with.
	// If the map is nil, all hosts will have the default weight starting.
	GetWeights() map[string]float64
}

Request to the Cortex scheduling pipeline.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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