nova

package
v0.0.0-...-ffa1b64 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// This error is returned from the step at any time when the step should be skipped.
	ErrStepSkipped = errors.New("step skipped")
)
View Source
var SupportedSteps = []Step{
	&plugins.DemoStep{},
}

Configuration of steps supported by the descheduler. The steps actually used by the scheduler are defined through the configuration file.

Functions

This section is empty.

Types

type CycleDetector

type CycleDetector interface {
	// Filter descheduling decisions to avoid cycles.
	Filter(ctx context.Context, vmIDs []string) ([]string, error)
}

func NewCycleDetector

func NewCycleDetector(novaAPI NovaAPI, config conf.DeschedulerConfig) CycleDetector

type Executor

type Executor interface {
	// Deschedule the vm ids provided.
	Deschedule(ctx context.Context, vmIDs []string) error
}

func NewExecutor

func NewExecutor(novaAPI NovaAPI, m Monitor, config conf.DeschedulerConfig) Executor

Create a new executor for the Nova descheduler.

type Monitor

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

func NewPipelineMonitor

func NewPipelineMonitor(registry *monitoring.Registry) Monitor

type NovaAPI

type NovaAPI interface {
	// Initialize the Nova API with the Keystone authentication.
	Init(ctx context.Context)
	// Get a server by ID.
	Get(ctx context.Context, id string) (server, error)
	// Live migrate a server to a new host (doesnt wait for it to complete).
	LiveMigrate(ctx context.Context, id string) error
	// Get migrations for a server by ID.
	GetServerMigrations(ctx context.Context, id string) ([]migration, error)
}

func NewNovaAPI

func NewNovaAPI(keystoneAPI keystone.KeystoneAPI, conf conf.NovaDeschedulerConfig) NovaAPI

type Pipeline

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

func NewDescheduler

func NewDescheduler(config conf.DeschedulerConfig, m Monitor, keystoneAPI keystone.KeystoneAPI) *Pipeline

func (*Pipeline) DeschedulePeriodically

func (p *Pipeline) DeschedulePeriodically(ctx context.Context)

func (*Pipeline) Init

func (p *Pipeline) Init(supported []Step, ctx context.Context, db db.DB, config conf.DeschedulerConfig)

type Step

type Step interface {
	// Get the VM ids to de-schedule.
	Run() ([]string, error)
	// Get the name of this step, used for identification in config, logs, metrics, etc.
	GetName() string
	// Configure the step with a database and options.
	Init(db db.DB, opts conf.RawOpts) error
}

type StepMonitor

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

func (StepMonitor) GetName

func (m StepMonitor) GetName() string

Get the name of the step being monitored.

func (StepMonitor) Init

func (m StepMonitor) Init(db db.DB, opts conf.RawOpts) error

Initialize the step with the database and options.

func (StepMonitor) Run

func (m StepMonitor) Run() ([]string, error)

Run the step and measure its execution time.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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