limes

package
v0.0.0-...-f330bf7 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const TriggerLimesCommitmentsSynced = "triggers/sync/openstack/limes/types/commitments"

Trigger executed when new resource providers are available.

Variables

This section is empty.

Functions

This section is empty.

Types

type Commitment

type Commitment struct {

	// A unique numerical identifier for this commitment. This API uses this
	// numerical ID to refer to the commitment in other API calls.
	ID int `json:"id" db:"id,primarykey"`
	// A unique string identifier for this commitment. The next major version of
	// this API will use this UUID instead of the numerical ID to refer to
	// commitments in API calls.
	UUID string `json:"uuid" db:"uuid,primarykey"`
	// The resource for which usage is committed.
	ServiceType  string `json:"service_type" db:"service_type"`
	ResourceName string `json:"resource_name" db:"resource_name"`
	// The availability zone in which usage is committed.
	AvailabilityZone string `json:"availability_zone" db:"availability_zone"`
	// The amount of usage that was committed to.
	Amount uint64 `json:"amount" db:"amount"`
	// For measured resources, the unit for this resource. The value from the
	// amount field is measured in this unit.
	Unit string `json:"unit" db:"unit"`
	// The requested duration of this commitment, expressed as a comma-separated
	// sequence of positive integer multiples of time units like "1 year,
	// 3 months". Acceptable time units include "second", "minute", "hour",
	// "day", "month" and "year".
	Duration string `json:"duration" db:"duration"`
	// UNIX timestamp when this commitment was created.
	CreatedAt uint64 `json:"created_at" db:"created_at"`
	// UNIX timestamp when this commitment should be confirmed. Only shown if
	// this was given when creating the commitment, to delay confirmation into
	// the future.
	ConfirmBy *uint64 `json:"confirm_by,omitempty" db:"confirm_by"`
	// UNIX timestamp when this commitment was confirmed. Only shown after
	// confirmation.
	ConfirmedAt *uint64 `json:"confirmed_at,omitempty" db:"confirmed_at"`
	// UNIX timestamp when this commitment is set to expire. Note that the
	// duration counts from confirm_by (or from created_at for immediately-
	// confirmed commitments) and is calculated at creation time, so this is
	// also shown on unconfirmed commitments.
	ExpiresAt uint64 `json:"expires_at" db:"expires_at"`
	// Whether the commitment is marked for transfer to a different project.
	// Transferable commitments do not count towards quota calculation in their
	// project, but still block capacity and still count towards billing. Not
	// shown if false.
	Transferable bool `json:"transferable" db:"transferable"`
	// The current status of this commitment. If provided, one of "planned",
	// "pending", "guaranteed", "confirmed", "superseded", or "expired".
	Status string `json:"status,omitempty" db:"status"`
	// Whether a mail notification should be sent if a created commitment is
	// confirmed. Can only be set if the commitment contains a confirm_by value.
	NotifyOnConfirm bool `json:"notify_on_confirm" db:"notify_on_confirm"`

	// The openstack project ID this commitment is for.
	ProjectID string `json:"project_id" db:"project_id"`
	// The openstack domain ID this commitment is for.
	DomainID string `json:"domain_id" db:"domain_id"`
}

Commitment model from the OpenStack limes API. See: https://github.com/sapcc/limes/blob/5ea068b/docs/users/api-spec-resources.md?plain=1#L493 See: https://github.com/sapcc/go-api-declarations/blob/94ee3e5/limes/resources/commitment.go#L19

func (Commitment) Indexes

func (Commitment) Indexes() []db.Index

Indexes for the resource provider table.

func (Commitment) TableName

func (Commitment) TableName() string

Table in which the openstack model is stored.

type LimesAPI

type LimesAPI interface {
	// Init the limes API.
	Init(ctx context.Context)
	// Fetch all commitments for the given projects.
	GetAllCommitments(ctx context.Context, projects []identity.Project) ([]Commitment, error)
}

func NewLimesAPI

func NewLimesAPI(mon sync.Monitor, k keystone.KeystoneAPI, conf LimesConf) LimesAPI

Create a new OpenStack limes api.

type LimesConf

type LimesConf = conf.SyncOpenStackLimesConfig

Type alias for the OpenStack limes configuration.

type LimesSyncer

type LimesSyncer struct {
	// Database to store the limes objects in.
	DB db.DB
	// Monitor to track the syncer.
	Mon sync.Monitor
	// Configuration for the limes syncer.
	Conf LimesConf
	// Limes API client to fetch the data.
	API LimesAPI
	// MQTT client to publish mqtt data.
	MqttClient mqtt.Client
}

Syncer for limes.

func (*LimesSyncer) Init

func (s *LimesSyncer) Init(ctx context.Context)

func (*LimesSyncer) Sync

func (s *LimesSyncer) Sync(ctx context.Context) error

Sync the limes objects.

func (*LimesSyncer) SyncCommitments

func (s *LimesSyncer) SyncCommitments(ctx context.Context) ([]Commitment, error)

Sync commitments from the limes API and store them in the database.

Jump to

Keyboard shortcuts

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