resourcemanager

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const NoopResourceManagerID = "noopresourcemanager"
View Source
const RedisSetKeyPrefix = "redisresourcemanager"

This is the key that will point to the Redis Set. https://redis.io/commands#set

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseResourceConstraint

type BaseResourceConstraint struct {
	Value int64
}

func (*BaseResourceConstraint) IsAllowed

func (brc *BaseResourceConstraint) IsAllowed(actualValue int64) bool

type BaseResourceManager

type BaseResourceManager interface {
	GetID() string
	AllocateResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token, constraints []FullyQualifiedResourceConstraint) (pluginCore.AllocationStatus, error)
	ReleaseResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token) error
}

type Builder

type Builder interface {
	GetID() string
	GetResourceRegistrar(namespacePrefix pluginCore.ResourceNamespace) pluginCore.ResourceRegistrar
	BuildResourceManager(ctx context.Context) (BaseResourceManager, error)
}

func GetResourceManagerBuilderByType

func GetResourceManagerBuilderByType(ctx context.Context, managerType rmConfig.Type, scope promutils.Scope) (
	Builder, error)

type FullyQualifiedResourceConstraint

type FullyQualifiedResourceConstraint struct {
	TargetedPrefixString string
	Value                int64
}

func (*FullyQualifiedResourceConstraint) IsAllowed

func (fqrc *FullyQualifiedResourceConstraint) IsAllowed(actualValue int64) bool

type Metrics

type Metrics interface {
	GetScope() promutils.Scope
}

type NoopResourceManager

type NoopResourceManager struct {
}

func (*NoopResourceManager) AllocateResource

func (*NoopResourceManager) AllocateResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token, constraints []FullyQualifiedResourceConstraint) (
	pluginCore.AllocationStatus, error)

func (*NoopResourceManager) GetID

func (*NoopResourceManager) GetID() string

func (*NoopResourceManager) ReleaseResource

func (*NoopResourceManager) ReleaseResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token) error

type NoopResourceManagerBuilder

type NoopResourceManagerBuilder struct {
}

func (*NoopResourceManagerBuilder) BuildResourceManager

func (r *NoopResourceManagerBuilder) BuildResourceManager(ctx context.Context) (BaseResourceManager, error)

func (*NoopResourceManagerBuilder) GetID

func (*NoopResourceManagerBuilder) GetResourceRegistrar

func (r *NoopResourceManagerBuilder) GetResourceRegistrar(namespacePrefix pluginCore.ResourceNamespace) pluginCore.ResourceRegistrar

func (*NoopResourceManagerBuilder) RegisterResourceQuota

func (r *NoopResourceManagerBuilder) RegisterResourceQuota(ctx context.Context, namespace pluginCore.ResourceNamespace, quota int) error

type Proxy

type Proxy struct {
	// pluginCore.ResourceManager
	BaseResourceManager
	ResourceNamespacePrefix pluginCore.ResourceNamespace
	ExecutionIdentifier     *core.TaskExecutionIdentifier
	ResourcePoolInfo        map[string]*event.ResourcePoolInfo
}

A proxy will be created for each TaskExecutionContext. The Proxy of an execution contains the resource namespace prefix (e.g., "qubole-hive-executor" for a hive task) and the token prefix (e.g., ex:<project>:<domain>:<exec_id>) of that execution. The plugins will only have access to a Proxy but not directly the underlying resource manager. The Proxy will prepend proper prefixes for the resource namespace and the allocation token.

func (Proxy) AllocateResource

func (p Proxy) AllocateResource(ctx context.Context, namespace pluginCore.ResourceNamespace,
	allocationToken string, constraintsSpec pluginCore.ResourceConstraintsSpec) (pluginCore.AllocationStatus, error)

func (Proxy) GetResourcePoolInfo

func (p Proxy) GetResourcePoolInfo() []*event.ResourcePoolInfo

func (Proxy) ReleaseResource

func (p Proxy) ReleaseResource(ctx context.Context, namespace pluginCore.ResourceNamespace,
	allocationToken string) error

type Redis

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

func (*Redis) Ping

func (r *Redis) Ping() (string, error)

func (*Redis) SAdd

func (r *Redis) SAdd(key string, member interface{}) (int64, error)

func (*Redis) SCard

func (r *Redis) SCard(key string) (int64, error)

func (*Redis) SIsMember

func (r *Redis) SIsMember(key string, member interface{}) (bool, error)

func (*Redis) SMembers

func (r *Redis) SMembers(key string) ([]string, error)

func (*Redis) SRem

func (r *Redis) SRem(key string, member interface{}) (int64, error)

type RedisClient

type RedisClient interface {
	// A pass-through method. Getting the cardinality of the Redis set
	SCard(string) (int64, error)
	// A pass-through method. Checking if an entity is a member of the set specified by the key
	SIsMember(string, interface{}) (bool, error)
	// A pass-through method. Adding an entity to the set specified by the key
	SAdd(string, interface{}) (int64, error)
	// A pass-through method. Removing an entity from the set specified by the key
	SRem(string, interface{}) (int64, error)
	// A pass-through method. Getting the complete list of MEMBERS of the set
	SMembers(string) ([]string, error)
	// A pass-through method. Pinging the Redis client
	Ping() (string, error)
}

func NewRedisClient

func NewRedisClient(ctx context.Context, config config.RedisConfig) (RedisClient, error)

type RedisResourceManager

type RedisResourceManager struct {
	MetricsScope promutils.Scope
	// contains filtered or unexported fields
}

func (*RedisResourceManager) AllocateResource

func (r *RedisResourceManager) AllocateResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token,
	composedResourceConstraintList []FullyQualifiedResourceConstraint) (

	pluginCore.AllocationStatus, error)

func (*RedisResourceManager) GetID

func (r *RedisResourceManager) GetID() string

func (*RedisResourceManager) ReleaseResource

func (r *RedisResourceManager) ReleaseResource(ctx context.Context, namespace pluginCore.ResourceNamespace, allocationToken Token) error

type RedisResourceManagerBuilder

type RedisResourceManagerBuilder struct {
	MetricsScope promutils.Scope
	// contains filtered or unexported fields
}

func NewRedisResourceManagerBuilder

func NewRedisResourceManagerBuilder(_ context.Context, client RedisClient, scope promutils.Scope) (*RedisResourceManagerBuilder, error)

func (*RedisResourceManagerBuilder) BuildResourceManager

func (r *RedisResourceManagerBuilder) BuildResourceManager(ctx context.Context) (BaseResourceManager, error)

func (*RedisResourceManagerBuilder) GetID

func (*RedisResourceManagerBuilder) GetResourceRegistrar

func (r *RedisResourceManagerBuilder) GetResourceRegistrar(namespacePrefix pluginCore.ResourceNamespace) pluginCore.ResourceRegistrar

func (*RedisResourceManagerBuilder) RegisterResourceQuota

func (r *RedisResourceManagerBuilder) RegisterResourceQuota(ctx context.Context, namespace pluginCore.ResourceNamespace, quota int) error

type RedisResourceManagerMetrics

type RedisResourceManagerMetrics struct {
	Scope                     promutils.Scope
	RedisSizeCheckTime        promutils.StopWatch
	AllocatedTokensGauge      prometheus.Gauge
	ApproximateBackedUpLength prometheus.Gauge
}

func NewRedisResourceManagerMetrics

func NewRedisResourceManagerMetrics(scope promutils.Scope) *RedisResourceManagerMetrics

func (RedisResourceManagerMetrics) GetScope

type Resource

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

This struct is designed to serve as the identifier of an user of resource manager

type ResourceConstraint

type ResourceConstraint interface {
	IsAllowed(int64) bool
}

type ResourceRegistrarProxy

type ResourceRegistrarProxy struct {
	pluginCore.ResourceRegistrar
	ResourceNamespacePrefix pluginCore.ResourceNamespace
}

The Proxy will prepend a proper prefix for the resource namespace.

func (ResourceRegistrarProxy) RegisterResourceQuota

func (p ResourceRegistrarProxy) RegisterResourceQuota(ctx context.Context, namespace pluginCore.ResourceNamespace, quota int) error

type TaskResourceManager

type TaskResourceManager interface {
	pluginCore.ResourceManager
	GetResourcePoolInfo() []*event.ResourcePoolInfo
}

type Token

type Token string

type TokenPrefix

type TokenPrefix string

func ComposeTokenPrefix

func ComposeTokenPrefix(id *core.TaskExecutionIdentifier) TokenPrefix

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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