...

Package sql

import "edge-infra.dev/pkg/f8n/kinform/sql"
Overview
Index

Overview ▾

Index ▾

type CountByGVKRows
type DBHandle
    func FromDSN(dsn string, maxOpenConns, maxIdleConns int) (*DBHandle, error)
    func FromEnv() (*DBHandle, error)
    func (db *DBHandle) CountByGVK(ctx context.Context) ([]CountByGVKRows, error)
    func (db *DBHandle) DeleteArtifactVersion(ctx context.Context, image, sha25Digest string) error
    func (db *DBHandle) DeleteRemoteCommand(ctx context.Context, id string) error
    func (db *DBHandle) DeleteResource(ctx context.Context, resource model.WatchedResource) error
    func (db *DBHandle) GetClustersMatchingArtifactLabels(ctx context.Context, artifact uuid.UUID) ([]uuid.UUID, error)
    func (db *DBHandle) GetKinformPubSubSubscriptions(ctx context.Context) ([]model.PubSubSubscription, error)
    func (db *DBHandle) GetRemoteCommand(ctx context.Context) (RemoteCommand, bool, error)
    func (db *DBHandle) InsertArtifact(ctx context.Context, a sovereign.Artifact) (uuid.UUID, error)
    func (db *DBHandle) InsertArtifactLabel(ctx context.Context, artifact uuid.UUID, key, value string) (uuid.UUID, error)
    func (db *DBHandle) InsertArtifactObserved(ctx context.Context, image string) error
    func (db *DBHandle) InsertArtifactVersion(ctx context.Context, image, tag, sha25Digest string) (uuid.UUID, error)
    func (db *DBHandle) InsertCluster(ctx context.Context, name string) (uuid.UUID, error)
    func (db *DBHandle) InsertClusterLabel(ctx context.Context, cluster uuid.UUID, key, value string) (uuid.UUID, error)
    func (db *DBHandle) InsertKinformPubSubSubscription(ctx context.Context, sub model.PubSubSubscription) (uuid.UUID, error)
    func (db *DBHandle) InsertResource(ctx context.Context, resource model.WatchedResource) error
    func (db *DBHandle) InsertResourceObservation(ctx context.Context, resource model.WatchedResource) error
    func (db *DBHandle) QueryArtifactVersion(ctx context.Context, image, sha25Digest string) (sovereign.ArtifactVersion, error)
    func (db *DBHandle) SummarizeGVKs(ctx context.Context) ([]SummarizeGVKsRow, error)
    func (db *DBHandle) UpdateClusterHeartbeatWithSession(ctx context.Context, h model.ClusterHeartbeat) error
    func (db *DBHandle) UpdateResource(ctx context.Context, resource model.WatchedResource) error
type RemoteCommand
type SummarizeGVKsRow

Package files

analytical.go sql.go

type CountByGVKRows

type CountByGVKRows struct {
    Count      int    `json:"c"`
    APIVersion string `json:"api_version"`
    Kind       string `json:"kind"`
}

type DBHandle

type DBHandle struct {
    *sql.DB
    ClusterID string
}

func FromDSN

func FromDSN(dsn string, maxOpenConns, maxIdleConns int) (*DBHandle, error)

func FromEnv

func FromEnv() (*DBHandle, error)

func (*DBHandle) CountByGVK

func (db *DBHandle) CountByGVK(ctx context.Context) ([]CountByGVKRows, error)

CountByGVK gives a simple count summary of watched resources across all clusters, counting by apiVersion and kind. This is a more efficient, unsorted query suitable for gathering metrics data.

func (*DBHandle) DeleteArtifactVersion

func (db *DBHandle) DeleteArtifactVersion(ctx context.Context, image, sha25Digest string) error

func (*DBHandle) DeleteRemoteCommand

func (db *DBHandle) DeleteRemoteCommand(ctx context.Context, id string) error

TODO(dk185217): Transact, or similar. Get, handle, and delete commands according to successful completion, and make sure it is row locked for a single handler at once

func (*DBHandle) DeleteResource

func (db *DBHandle) DeleteResource(ctx context.Context, resource model.WatchedResource) error

func (*DBHandle) GetClustersMatchingArtifactLabels

func (db *DBHandle) GetClustersMatchingArtifactLabels(ctx context.Context, artifact uuid.UUID) ([]uuid.UUID, error)

func (*DBHandle) GetKinformPubSubSubscriptions

func (db *DBHandle) GetKinformPubSubSubscriptions(ctx context.Context) ([]model.PubSubSubscription, error)

func (*DBHandle) GetRemoteCommand

func (db *DBHandle) GetRemoteCommand(ctx context.Context) (RemoteCommand, bool, error)

func (*DBHandle) InsertArtifact

func (db *DBHandle) InsertArtifact(ctx context.Context, a sovereign.Artifact) (uuid.UUID, error)

func (*DBHandle) InsertArtifactLabel

func (db *DBHandle) InsertArtifactLabel(ctx context.Context, artifact uuid.UUID, key, value string) (uuid.UUID, error)

func (*DBHandle) InsertArtifactObserved

func (db *DBHandle) InsertArtifactObserved(ctx context.Context, image string) error

TODO(dk185217): This should be temporary. It is parsing raw image strings from deployment specs. It should be replaced by functionality acting on higher level information about artifacts

func (*DBHandle) InsertArtifactVersion

func (db *DBHandle) InsertArtifactVersion(ctx context.Context, image, tag, sha25Digest string) (uuid.UUID, error)

func (*DBHandle) InsertCluster

func (db *DBHandle) InsertCluster(ctx context.Context, name string) (uuid.UUID, error)

func (*DBHandle) InsertClusterLabel

func (db *DBHandle) InsertClusterLabel(ctx context.Context, cluster uuid.UUID, key, value string) (uuid.UUID, error)

func (*DBHandle) InsertKinformPubSubSubscription

func (db *DBHandle) InsertKinformPubSubSubscription(ctx context.Context, sub model.PubSubSubscription) (uuid.UUID, error)

func (*DBHandle) InsertResource

func (db *DBHandle) InsertResource(ctx context.Context, resource model.WatchedResource) error

func (*DBHandle) InsertResourceObservation

func (db *DBHandle) InsertResourceObservation(ctx context.Context, resource model.WatchedResource) error

TODO(dk185217): experimental. full history of objects

func (*DBHandle) QueryArtifactVersion

func (db *DBHandle) QueryArtifactVersion(ctx context.Context, image, sha25Digest string) (sovereign.ArtifactVersion, error)

func (*DBHandle) SummarizeGVKs

func (db *DBHandle) SummarizeGVKs(ctx context.Context) ([]SummarizeGVKsRow, error)

SummarizeGVKs gives a high level rollup-style summary of watched resources across all clusters, counting by apiVersion and kind. For example: c0 api_version c1 kind 614 "iam.cnrm.cloud.google.com/v1beta1" 532 "IAMPolicyMember" 614 "iam.cnrm.cloud.google.com/v1beta1" 41 "IAMPartialPolicy" 614 "iam.cnrm.cloud.google.com/v1beta1" 21 "IAMServiceAccount" 614 "iam.cnrm.cloud.google.com/v1beta1" 15 "IAMServiceAccountKey" 614 "iam.cnrm.cloud.google.com/v1beta1" 5 "IAMCustomRole" 230 "serviceusage.cnrm.cloud.google.com/v1beta1" 230 "Service" 127 "compute.cnrm.cloud.google.com/v1beta1" 97 "ComputeFirewall" shows the total count of all resources in group version, followed by a break down of which kinds contribute to that count.

func (*DBHandle) UpdateClusterHeartbeatWithSession

func (db *DBHandle) UpdateClusterHeartbeatWithSession(ctx context.Context, h model.ClusterHeartbeat) error

func (*DBHandle) UpdateResource

func (db *DBHandle) UpdateResource(ctx context.Context, resource model.WatchedResource) error

type RemoteCommand

TODO(dk185217): Begin to refactor out ORM-style domain types (ie, entity mappings to go structs)

type RemoteCommand struct {
    ID      string
    CmdType string
    CmdArgs string
}

type SummarizeGVKsRow

type SummarizeGVKsRow struct {
    APIVersionCount int    `json:"c0"`
    APIVersion      string `json:"api_version"`
    KindCount       int    `json:"c1"`
    Kind            string `json:"kind"`
}