resource

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2024 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Overview

Package resource defines the interface that each resource manager needs to implement to get compute units

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrDuplID         = errors.New("duplicate ID found in clusters config")
	ErrUnknownManager = errors.New("unknown resource manager found in the config")
	ErrInvalidID      = errors.New("invalid cluster ID. It must contain only [a-zA-Z0-9-_]")
)

Custom errors.

Functions

func Register added in v0.2.0

func Register(
	manager string,
	factory func(cluster models.Cluster, logger log.Logger) (Fetcher, error),
)

Register registers the resource manager into factory.

Types

type Config

type Config[T any] struct {
	Clusters []T `yaml:"clusters"`
}

Config contains the configuration of resource manager cluster(s).

type Fetcher

type Fetcher interface {
	// FetchUnits fetches compute units between start and end times
	FetchUnits(ctx context.Context, start time.Time, end time.Time) ([]models.ClusterUnits, error)
	// FetchUsersProjects fetches latest projects, users and their associations
	FetchUsersProjects(ctx context.Context, currentTime time.Time) ([]models.ClusterUsers, []models.ClusterProjects, error)
}

Fetcher is the interface resource manager has to implement.

func NewDefaultResourceManager

func NewDefaultResourceManager(cluster models.Cluster, logger log.Logger) (Fetcher, error)

NewDefaultResourceManager returns a new defaultResourceManager that returns empty compute units.

type Manager

type Manager struct {
	Fetchers []Fetcher
	Logger   log.Logger
}

Manager implements the interface to fetch compute units from different resource managers.

func New added in v0.2.0

func New(logger log.Logger) (*Manager, error)

New creates a new Manager struct instance.

func (Manager) FetchUnits

func (b Manager) FetchUnits(ctx context.Context, start time.Time, end time.Time) ([]models.ClusterUnits, error)

FetchUnits implements collection jobs between start and end times.

func (Manager) FetchUsersProjects

func (b Manager) FetchUsersProjects(ctx context.Context, currentTime time.Time) ([]models.ClusterUsers, []models.ClusterProjects, error)

FetchUsersProjects fetches latest projects and users for each cluster.

Directories

Path Synopsis
Package slurm implements the fetcher interface to fetch compute units from SLURM resource manager
Package slurm implements the fetcher interface to fetch compute units from SLURM resource manager

Jump to

Keyboard shortcuts

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