models

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: MIT Imports: 34 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrAccountNotFound = errors.New("account not found")
View Source
var ErrNoClaim = errors.New("no claim")
View Source
var ErrNoEnoughAccountsAvailable = errors.New("no enough accounts available")
View Source
var ErrNoSchedule error = errors.New("No OCP shared cluster configuration found")
View Source
var OcpErrNoEnoughAccountsAvailable = errors.New("no enough accounts available")

Functions

func ApplyQuota added in v1.0.0

func ApplyQuota(requestedQuotaOrig *v1.ResourceQuota, defaultQuota *v1.ResourceQuota, strictDefaultSandboxQuota bool) *v1.ResourceQuota

func CountAvailable

func CountAvailable[T AvailabilityMarker](resources []T) int

CountAvailable return the number of resources not in use

func CountOlder

func CountOlder(duration time.Duration, accounts []Resource) (int, error)

CountOlder returns the number of accounts in use for more than N day

func CountToCleanup

func CountToCleanup[T AvailabilityMarker](resources []T) int

CountToCleanup return the number of accounts to cleanup

func CountUsed

func CountUsed[T AvailabilityMarker](resources []T) int

CountUsed return the number of resources in use

func DeletePlacementByServiceUuid

func DeletePlacementByServiceUuid(dbpool *pgxpool.Pool, awsProvider AwsAccountProvider, ocpProvider OcpSandboxProvider, serviceUuid string) error

DeletePlacementByServiceUuid deletes a placement by ServiceUuid

func FilterByReservation added in v0.3.5

func FilterByReservation[T AvailabilityMarker](resources []T, reservation string) []T

func Sort

func Sort[T Sortable](accounts []T, by string) []T

func Used

func Used[T AvailabilityMarker](resources []T) []T

Used return the resources in use

Types

type Account

type Account struct {
	Resource
}

type Annotations added in v0.3.17

type Annotations map[string]string

func (Annotations) Merge added in v0.3.17

func (a Annotations) Merge(b Annotations) Annotations

type AvailabilityMarker

type AvailabilityMarker interface {
	GetReservation() string
	// contains filtered or unexported methods
}

type AwsAccount

type AwsAccount struct {
	Account
	Kind         string `json:"kind"` // "AwsSandbox"
	Name         string `json:"name"`
	Reservation  string `json:"reservation,omitempty"`
	AccountID    string `json:"account_id"`
	Zone         string `json:"zone"`
	HostedZoneID string `json:"hosted_zone_id"`

	ConanStatus       string    `json:"conan_status,omitempty"`
	ConanTimestamp    time.Time `json:"conan_timestamp,omitempty"`
	ConanHostname     string    `json:"conan_hostname,omitempty"`
	ConanCleanupCount int       `json:"conan_cleanup_count,omitempty"`
}

func (AwsAccount) CloseAccount added in v0.3.16

func (a AwsAccount) CloseAccount() error

func (AwsAccount) GetLastStatus added in v0.3.0

func (a AwsAccount) GetLastStatus(dbpool *pgxpool.Pool) (*LifecycleResourceJob, error)

func (AwsAccount) GetReservation added in v0.3.5

func (a AwsAccount) GetReservation() string

func (AwsAccount) GetUpdatedAt

func (a AwsAccount) GetUpdatedAt() time.Time

func (AwsAccount) NameInt

func (a AwsAccount) NameInt() int

func (*AwsAccount) Render added in v0.3.5

func (a *AwsAccount) Render(w http.ResponseWriter, r *http.Request) error

func (AwsAccount) Start added in v0.3.0

Start method starts all the stopped instances in the account

func (AwsAccount) Status added in v0.3.0

Status method returns the status of all the instances in the account

func (AwsAccount) Stop added in v0.3.0

Stop method stops all the running instances in the account

type AwsAccountProvider

type AwsAccountProvider interface {
	//Annotations(account AwsAccount) (map[string]string, error)
	Count() (int, error)
	CountAvailable(reservation string) (int, error)
	DecryptSecret(encrypted string) (string, error)
	Delete(name string) error
	FetchAll() ([]AwsAccount, error)
	FetchAllActiveByServiceUuid(serviceUuid string) ([]AwsAccount, error)
	FetchAllActiveByServiceUuidWithCreds(serviceUuid string) ([]AwsAccountWithCreds, error)
	FetchAllAvailable() ([]AwsAccount, error)
	FetchAllByReservation(reservation string) ([]AwsAccount, error)
	FetchAllByServiceUuid(serviceUuid string) ([]AwsAccount, error)
	FetchAllByServiceUuidWithCreds(serviceUuid string) ([]AwsAccountWithCreds, error)
	FetchAllSorted(by string) ([]AwsAccount, error)
	FetchAllToCleanup() ([]AwsAccount, error)
	FetchByName(name string) (AwsAccount, error)
	MarkForCleanup(name string) error
	MarkForCleanupByServiceUuid(serviceUuid string) error
	Request(service_uuid string, reservation string, count int, annotations Annotations) ([]AwsAccountWithCreds, error)
	Reserve(reservation string, count int) ([]AwsAccount, error)
	ScaleDownReservation(reservation string, count int) error
}

AwsAccountProvider interface to interact with different databases: dynamodb and postgresql

type AwsAccountWithCreds

type AwsAccountWithCreds struct {
	AwsAccount

	Credentials []any              `json:"credentials"`
	Provider    AwsAccountProvider `json:"-"`
}

func (*AwsAccountWithCreds) Delete added in v0.3.17

func (a *AwsAccountWithCreds) Delete() error

func (*AwsAccountWithCreds) Render added in v0.3.17

type AwsAccounts added in v0.3.5

type AwsAccounts []AwsAccount

func (*AwsAccounts) Render added in v0.3.5

func (a *AwsAccounts) Render(w http.ResponseWriter, r *http.Request) error

type AwsIamKey

type AwsIamKey struct {
	Kind               string `json:"kind"` // "aws_iam_key"
	Name               string `json:"name"`
	AwsAccessKeyID     string `json:"aws_access_key_id"`
	AwsSecretAccessKey string `json:"aws_secret_access_key"`
}

type Deletable added in v0.3.17

type Deletable interface {
	Delete() error
}

interface Deletable

type Instance added in v0.3.0

type Instance struct {
	InstanceId   string `json:"instance_id,omitempty"`
	InstanceName string `json:"instance_name,omitempty"`
	InstanceType string `json:"instance_type,omitempty"`
	Region       string `json:"region,omitempty"`
	State        string `json:"state,omitempty"`
}

type LifecyclePlacementJob added in v0.3.0

type LifecyclePlacementJob struct {
	Model

	PlacementID int           `json:"placement_id"`
	Status      string        `json:"status"`
	Action      string        `json:"lifecycle_action"`
	Request     any           `json:"request,omitempty"`
	RequestID   string        `json:"request_id,omitempty"`
	DbPool      *pgxpool.Pool `json:"-"`
	Locality    string        `json:"locality,omitempty"`
}

func GetLifecyclePlacementJob added in v0.3.0

func GetLifecyclePlacementJob(dbpool *pgxpool.Pool, id int) (*LifecyclePlacementJob, error)

GetLifecyclePlacementJob returns a LifecyclePlacementJob by ID

func GetLifecyclePlacementJobByRequestID added in v0.3.3

func GetLifecyclePlacementJobByRequestID(dbpool *pgxpool.Pool, requestID string) (*LifecyclePlacementJob, error)

GetLifecyclePlacementJob returns a LifecyclePlacementJob by ID

func (*LifecyclePlacementJob) Claim added in v0.3.0

func (j *LifecyclePlacementJob) Claim() error

ClaimPlacementJob claims a placement job by setting the status to initializing

func (*LifecyclePlacementJob) Create added in v0.3.3

func (j *LifecyclePlacementJob) Create() error

Create creates a new LifecyclePlacementJob by inserting it into the database

func (*LifecyclePlacementJob) GlobalStatus added in v0.3.3

func (j *LifecyclePlacementJob) GlobalStatus() (string, error)

GlobalStatus returns the status of a LifecyclePlacementJob considering all it's children

func (*LifecyclePlacementJob) SetStatus added in v0.3.0

func (j *LifecyclePlacementJob) SetStatus(status string) error

SetLifecycleResourceJobStatus sets the status of a LifecycleResourceJob

type LifecycleResourceJob added in v0.3.0

type LifecycleResourceJob struct {
	Model

	ResourceName string        `json:"resource_name"`
	ResourceType string        `json:"resource_type"`
	ParentID     int           `json:"parent_id,omitempty"`
	Status       string        `json:"status"`
	Action       string        `json:"lifecycle_action"`
	Request      any           `json:"request,omitempty"`
	RequestID    string        `json:"request_id,omitempty"`
	DbPool       *pgxpool.Pool `json:"-"`
	Result       Status        `json:"lifecycle_result,omitempty"`
	Locality     string        `json:"locality,omitempty"`
}

func GetLifecycleResourceJob added in v0.3.0

func GetLifecycleResourceJob(dbpool *pgxpool.Pool, id int) (*LifecycleResourceJob, error)

GetLifecycleResourceJob returns a LifecycleResourceJob by ID

func GetLifecycleResourceJobByRequestID added in v0.3.3

func GetLifecycleResourceJobByRequestID(dbpool *pgxpool.Pool, requestID string) (*LifecycleResourceJob, error)

func (*LifecycleResourceJob) Claim added in v0.3.0

func (j *LifecycleResourceJob) Claim() error

ClaimResourceJob claims a resource job by setting the status to initializing

func (*LifecycleResourceJob) Create added in v0.3.0

func (j *LifecycleResourceJob) Create() error

Create creates a new LifecycleResourceJob by inserting it into the database

func (*LifecycleResourceJob) SetStatus added in v0.3.0

func (j *LifecycleResourceJob) SetStatus(status string) error

SetLifecycleResourceJobStatus sets the status of a LifecycleResourceJob

type Model

type Model struct {
	ID        int       `json:"id,omitempty"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type OcpSandbox added in v0.3.17

type OcpSandbox struct {
	Account
	Name                              string            `json:"name"`
	Kind                              string            `json:"kind"` // "OcpSandbox"
	ServiceUuid                       string            `json:"service_uuid"`
	OcpSharedClusterConfigurationName string            `json:"ocp_cluster"`
	OcpIngressDomain                  string            `json:"ingress_domain"`
	OcpApiUrl                         string            `json:"api_url"`
	Annotations                       map[string]string `json:"annotations"`
	Status                            string            `json:"status"`
	ErrorMessage                      string            `json:"error_message,omitempty"`
	CleanupCount                      int               `json:"cleanup_count"`
	Namespace                         string            `json:"namespace"`
	ClusterAdditionalVars             map[string]any    `json:"cluster_additional_vars,omitempty"`
	ToCleanup                         bool              `json:"to_cleanup"`
	Quota                             v1.ResourceList   `json:"quota,omitempty"`
	LimitRange                        *v1.LimitRange    `json:"limit_range,omitempty"`
}

func (*OcpSandbox) Render added in v0.3.17

func (a *OcpSandbox) Render(w http.ResponseWriter, r *http.Request) error

func (*OcpSandbox) Save added in v0.3.17

func (a *OcpSandbox) Save(dbpool *pgxpool.Pool) error

type OcpSandboxProvider added in v0.3.17

type OcpSandboxProvider struct {
	DbPool      *pgxpool.Pool `json:"-"`
	VaultSecret string        `json:"-"`
}

func NewOcpSandboxProvider added in v0.3.17

func NewOcpSandboxProvider(dbpool *pgxpool.Pool, vaultSecret string) OcpSandboxProvider

func (*OcpSandboxProvider) FetchAll added in v0.3.17

func (a *OcpSandboxProvider) FetchAll() ([]OcpSandbox, error)

func (*OcpSandboxProvider) FetchAllByServiceUuid added in v0.3.17

func (a *OcpSandboxProvider) FetchAllByServiceUuid(serviceUuid string) ([]OcpSandbox, error)

func (*OcpSandboxProvider) FetchAllByServiceUuidWithCreds added in v0.3.17

func (a *OcpSandboxProvider) FetchAllByServiceUuidWithCreds(serviceUuid string) ([]OcpSandboxWithCreds, error)

func (*OcpSandboxProvider) FetchById added in v0.3.17

func (p *OcpSandboxProvider) FetchById(id int) (OcpSandbox, error)

func (*OcpSandboxProvider) FetchByName added in v0.3.17

func (p *OcpSandboxProvider) FetchByName(name string) (OcpSandbox, error)

func (*OcpSandboxProvider) GetOcpSharedClusterConfigurationByAnnotations added in v0.3.17

func (p *OcpSandboxProvider) GetOcpSharedClusterConfigurationByAnnotations(annotations map[string]string) ([]OcpSharedClusterConfiguration, error)

GetOcpSharedClusterConfigurationByAnnotations returns a list of OcpSharedClusterConfiguration by annotations

func (*OcpSandboxProvider) GetOcpSharedClusterConfigurationByName added in v0.3.17

func (p *OcpSandboxProvider) GetOcpSharedClusterConfigurationByName(name string) (OcpSharedClusterConfiguration, error)

GetOcpSharedClusterConfigurationByName returns an OcpSharedClusterConfiguration by name

func (*OcpSandboxProvider) GetOcpSharedClusterConfigurations added in v0.3.17

func (p *OcpSandboxProvider) GetOcpSharedClusterConfigurations() (OcpSharedClusterConfigurations, error)

GetOcpSharedClusterConfigurations returns the full list of OcpSharedClusterConfiguration

func (*OcpSandboxProvider) GetSchedulableClusters added in v0.3.17

func (a *OcpSandboxProvider) GetSchedulableClusters(cloud_selector map[string]string) (OcpSharedClusterConfigurations, error)

func (*OcpSandboxProvider) Release added in v0.3.17

func (a *OcpSandboxProvider) Release(service_uuid string) error

func (*OcpSandboxProvider) Request added in v0.3.17

func (a *OcpSandboxProvider) Request(serviceUuid string, cloud_selector map[string]string, annotations map[string]string, requestedQuota *v1.ResourceList, requestedLimitRange *v1.LimitRange, multiple bool, ctx context.Context) (OcpSandboxWithCreds, error)

type OcpSandboxWithCreds added in v0.3.17

type OcpSandboxWithCreds struct {
	OcpSandbox

	Credentials []any               `json:"credentials,omitempty"`
	Provider    *OcpSandboxProvider `json:"-"`
}

func (*OcpSandboxWithCreds) Delete added in v0.3.17

func (account *OcpSandboxWithCreds) Delete() error

func (*OcpSandboxWithCreds) GetStatus added in v0.3.17

func (a *OcpSandboxWithCreds) GetStatus() (string, error)

func (*OcpSandboxWithCreds) IncrementCleanupCount added in v0.3.17

func (a *OcpSandboxWithCreds) IncrementCleanupCount() error

func (*OcpSandboxWithCreds) MarkForCleanup added in v0.3.17

func (a *OcpSandboxWithCreds) MarkForCleanup() error

func (*OcpSandboxWithCreds) Reload added in v0.3.17

func (a *OcpSandboxWithCreds) Reload() error

func (*OcpSandboxWithCreds) Render added in v0.3.17

func (*OcpSandboxWithCreds) Save added in v0.3.17

func (a *OcpSandboxWithCreds) Save() error

func (*OcpSandboxWithCreds) SetStatus added in v0.3.17

func (a *OcpSandboxWithCreds) SetStatus(status string) error

func (*OcpSandboxWithCreds) Update added in v0.3.17

func (a *OcpSandboxWithCreds) Update() error

type OcpSandboxes added in v0.3.17

type OcpSandboxes []OcpSandbox

type OcpServiceAccount added in v0.3.17

type OcpServiceAccount struct {
	Kind  string `json:"kind"` // "ServiceAccount"
	Name  string `json:"name"`
	Token string `json:"token"`
}

Credential for service account

type OcpSharedClusterConfiguration added in v0.3.17

type OcpSharedClusterConfiguration struct {
	ID                       int               `json:"id"`
	Name                     string            `json:"name"`
	ApiUrl                   string            `json:"api_url"`
	IngressDomain            string            `json:"ingress_domain"`
	Kubeconfig               string            `json:"kubeconfig"`
	Token                    string            `json:"token"`
	CreatedAt                time.Time         `json:"created_at"`
	UpdatedAt                time.Time         `json:"updated_at"`
	Annotations              map[string]string `json:"annotations"`
	Valid                    bool              `json:"valid"`
	AdditionalVars           map[string]any    `json:"additional_vars,omitempty"`
	MaxMemoryUsagePercentage float64           `json:"max_memory_usage_percentage"`
	MaxCpuUsagePercentage    float64           `json:"max_cpu_usage_percentage"`
	UsageNodeSelector        string            `json:"usage_node_selector"`
	DbPool                   *pgxpool.Pool     `json:"-"`
	VaultSecret              string            `json:"-"`
	// For any new project (openshift namespace) created by the sandbox API
	// for an OcpSandbox, a default ResourceQuota will be set.
	// This quota is designed to be large enough to accommodate general needs.
	// Additionally, content developers can specify custom quotas in agnosticV
	// based on the requirements of specific Labs/Demos.
	DefaultSandboxQuota *v1.ResourceQuota `json:"default_sandbox_quota"`

	// StrictDefaultSandboxQuota is a flag to determine if the default sandbox quota
	// should be strictly enforced. If set to true, the default sandbox quota will be
	// enforced as a hard limit. Requested quota not be allowed to exceed the default.
	// If set to false, the default sandbox will be updated
	// to the requested quota.
	StrictDefaultSandboxQuota bool `json:"strict_default_sandbox_quota"`

	// QuotaRequired is a flag to determine if a quota is required in any request
	// for an OcpSandbox.
	// If set to true, a quota must be provided in the request.
	// If set to false, a quota will be created based on the default sandbox quota.
	// By default it's false.
	QuotaRequired bool `json:"quota_required"`

	// SkipQuota is a flag to control if the sandbox quota should be disabled.
	// if set to true, the sandbox quota will not be created
	// if set to false, the sandbox quota will be created, depending on the value of QuotaRequired, DefaultSandboxQuota and StrictDefaultSandboxQuota
	// By default it's true.
	// TODO: change the default value to false
	SkipQuota bool `json:"skip_quota"`

	// Limit Range for the sandbox
	// This allows to set the default limit and request for pods
	// see https://kubernetes.io/docs/concepts/policy/limit-range/
	LimitRange *v1.LimitRange `json:"limit_range,omitempty"`
}

func MakeOcpSharedClusterConfiguration added in v1.0.0

func MakeOcpSharedClusterConfiguration() *OcpSharedClusterConfiguration

MakeOcpSharedClusterConfiguration creates a new OcpSharedClusterConfiguration with default values

func (*OcpSharedClusterConfiguration) Bind added in v0.3.17

Bind and Render

func (*OcpSharedClusterConfiguration) CreateRestConfig added in v0.3.20

func (a *OcpSharedClusterConfiguration) CreateRestConfig() (*rest.Config, error)

func (*OcpSharedClusterConfiguration) Delete added in v0.3.17

func (*OcpSharedClusterConfiguration) Disable added in v0.3.17

func (p *OcpSharedClusterConfiguration) Disable() error

Disable an OcpSharedClusterConfiguration

func (*OcpSharedClusterConfiguration) Enable added in v0.3.26

Enable an OcpSharedClusterConfiguration

func (*OcpSharedClusterConfiguration) GetAccountCount added in v0.3.17

func (p *OcpSharedClusterConfiguration) GetAccountCount() (int, error)

CountAccounts returns the number of accounts for an OcpSharedClusterConfiguration

func (*OcpSharedClusterConfiguration) Render added in v0.3.17

func (*OcpSharedClusterConfiguration) Save added in v0.3.17

func (*OcpSharedClusterConfiguration) TestConnection added in v1.0.1

func (a *OcpSharedClusterConfiguration) TestConnection() error

func (*OcpSharedClusterConfiguration) Update added in v0.3.17

type OcpSharedClusterConfigurations added in v0.3.17

type OcpSharedClusterConfigurations []OcpSharedClusterConfiguration

func (*OcpSharedClusterConfigurations) Render added in v0.3.17

Bind and Render for OcpSharedClusterConfigurations

type Placement

type Placement struct {
	Model

	ServiceUuid  string            `json:"service_uuid"`
	Status       string            `json:"status"`
	ToCleanup    bool              `json:"to_cleanup"`
	Annotations  map[string]string `json:"annotations"`
	Resources    []any             `json:"resources,omitempty"`
	Request      any               `json:"request"`
	DbPool       *pgxpool.Pool     `json:"-"`
	FailOnDelete bool              `json:"-"` // plumbing for testing
}

func GetPlacement

func GetPlacement(dbpool *pgxpool.Pool, id int) (*Placement, error)

GetPlacement returns a placement by ID

func GetPlacementByServiceUuid

func GetPlacementByServiceUuid(dbpool *pgxpool.Pool, serviceUuid string) (*Placement, error)

GetPlacementByServiceUuid returns a placement by service_uuid

func (*Placement) Create added in v0.3.19

func (p *Placement) Create() error

func (*Placement) Delete

func (p *Placement) Delete(accountProvider AwsAccountProvider, ocpProvider OcpSandboxProvider)

Delete deletes a placement

func (*Placement) GetLastStatus added in v0.3.3

func (p *Placement) GetLastStatus() ([]*LifecycleResourceJob, error)

func (*Placement) LoadActiveResources added in v0.3.5

func (p *Placement) LoadActiveResources(awsProvider AwsAccountProvider) error

func (*Placement) LoadActiveResourcesWithCreds added in v0.3.5

func (p *Placement) LoadActiveResourcesWithCreds(awsProvider AwsAccountProvider, ocpProvider OcpSandboxProvider) error

func (*Placement) LoadResources

func (p *Placement) LoadResources(awsProvider AwsAccountProvider, ocpProvider OcpSandboxProvider) error

func (*Placement) LoadResourcesWithCreds added in v0.3.1

func (p *Placement) LoadResourcesWithCreds(awsProvider AwsAccountProvider, ocpProvider OcpSandboxProvider) error

func (*Placement) MarkForCleanup added in v0.3.19

func (p *Placement) MarkForCleanup() error

func (*Placement) Render

func (p *Placement) Render(w http.ResponseWriter, r *http.Request) error

func (*Placement) SetStatus added in v0.3.17

func (p *Placement) SetStatus(status string) error

SetStatus sets the status of a placement

type PlacementWithCreds

type PlacementWithCreds struct {
	Placement

	Resources []any `json:"resources"`
}

type Placements

type Placements []Placement

func GetAllPlacements

func GetAllPlacements(dbpool *pgxpool.Pool) (Placements, error)

func (Placements) Render

func (p Placements) Render(w http.ResponseWriter, r *http.Request) error

type Reservation added in v0.3.5

type Reservation struct {
	Model

	Name    string             `json:"name"`
	Status  string             `json:"status"`
	Request ReservationRequest `json:"request"`
}

func GetReservationByName added in v0.3.5

func GetReservationByName(dbpool *pgxpool.Pool, name string) (Reservation, error)

GetReservationByName fetches a reservation by its name returns the reservation and an error

func (*Reservation) Delete added in v0.3.5

func (r *Reservation) Delete(dbpool *pgxpool.Pool) error

Delete deletes a reservation from the DB

func (*Reservation) Initialize added in v0.3.5

func (r *Reservation) Initialize(dbpool *pgxpool.Pool, a AwsAccountProvider)

Initialize initializes a reservation It's an async operation that takes care of keeping the resources reserved Status up to date and also update the resources to match what's defined in Request. When everything is in sync, Status is set to 'success' If something goes wrong, Status is set to 'error'

func (*Reservation) Remove added in v0.3.5

func (r *Reservation) Remove(dbpool *pgxpool.Pool, a AwsAccountProvider)

Delete deletes a reservation This is an async operation that goes through all the reserved resources and unmark them. Then the reservation is deleted from the DB is all goes well. If something goes wrong, the reservation is marked as 'error'

func (*Reservation) Render added in v0.3.5

func (o *Reservation) Render(w http.ResponseWriter, r *http.Request) error

func (*Reservation) Save added in v0.3.5

func (r *Reservation) Save(dbpool *pgxpool.Pool) error

Save saves a reservation to the database Reservations implies async operations. This function is low level and doesn't deal with async operations. For that, see the Initialize and Synchronize methods

func (*Reservation) Update added in v0.3.5

func (r *Reservation) Update(dbpool *pgxpool.Pool, a AwsAccountProvider, req ReservationRequest)

Update is an async operation to update a reservation from a reservationRequest

func (*Reservation) UpdateStatus added in v0.3.5

func (r *Reservation) UpdateStatus(dbpool *pgxpool.Pool, status string) error

UpdateStatus updates the status of a reservation

type ReservationRequest added in v0.3.5

type ReservationRequest struct {
	Name      string            `json:"name"`
	Resources []ResourceRequest `json:"resources"`
}

func (*ReservationRequest) Bind added in v0.3.5

func (r *ReservationRequest) Bind(r2 *http.Request) error

func (*ReservationRequest) Validate added in v0.3.5

type Reservations added in v0.3.5

type Reservations []Reservation

func (Reservations) Render added in v0.3.5

type Resource

type Resource struct {
	Model

	ServiceUuid  string `json:"service_uuid"`
	Available    bool   `json:"available"`
	ToCleanup    bool   `json:"to_cleanup"`
	ErrorMessage string `json:"error_message,omitempty"`

	Annotations Annotations `json:"annotations"`
}

type ResourceRequest added in v0.3.5

type ResourceRequest struct {
	Kind  string `json:"kind"`
	Count int    `json:"count"`
}

type ResourceWithCreds

type ResourceWithCreds struct {
	Resource

	Credentials []any `json:"credentials"`
}

type Sortable

type Sortable interface {
	NameInt() int
	GetUpdatedAt() time.Time
}

type Status added in v0.3.0

type Status struct {
	AccountName string     `json:"account_name"`
	AccountKind string     `json:"account_kind"`
	Instances   []Instance `json:"instances"`
	UpdatedAt   time.Time  `json:"updated_at,omitempty"`
	Status      string     `json:"status,omitempty"`
}

Status type

func MakeStatus added in v0.3.3

func MakeStatus(job *LifecycleResourceJob) Status

type Token

type Token struct {
	Model

	Kind       string    `json:"kind"`
	Name       string    `json:"name"`
	Role       string    `json:"role"`
	Iat        int64     `json:"iat"`
	Exp        int64     `json:"exp"`
	Expiration time.Time `json:"expiration"`
	Valid      bool      `json:"valid"`
}

func CreateToken

func CreateToken(claims map[string]any) (Token, error)

func FetchTokenById

func FetchTokenById(dbpool *pgxpool.Pool, id int) (Token, error)

func (Token) Invalidate

func (t Token) Invalidate(dbpool *pgxpool.Pool) error

Invalidate the token

func (Token) Save

func (t Token) Save(dbpool *pgxpool.Pool) (id int, err error)

type TokenResponse added in v0.3.17

type TokenResponse struct {
	AccessToken string `json:"access_token"`
}

type Tokens

type Tokens []Token

func FetchAllTokens

func FetchAllTokens(dbpool *pgxpool.Pool) (Tokens, error)

func (*Tokens) Render

func (t *Tokens) Render(w http.ResponseWriter, r *http.Request) error

Jump to

Keyboard shortcuts

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