db_local

package
v0.18.0-alpha.12 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2022 License: AGPL-3.0 Imports: 50 Imported by: 0

Documentation

Index

Constants

View Source
const CertIssuer = "steampipe.io"
View Source
const RunningDBStructVersion = 20220411

Variables

View Source
var (
	CertExpiryTolerance      = 180 * (24 * time.Hour)     // 180 days
	RootCertValidityPeriod   = 5 * 365 * (24 * time.Hour) // 5 years
	ServerCertValidityPeriod = 365 * (24 * time.Hour)     // 1 year
)

Functions

func CertificatesExist

func CertificatesExist() bool

CertificatesExist checks if the root and server certificate and key files exist

func EnsureDBInstalled

func EnsureDBInstalled(ctx context.Context) (err error)

EnsureDBInstalled makes sure that the embedded pg database is installed and running

func FindAllSteampipePostgresInstances

func FindAllSteampipePostgresInstances(ctx context.Context) ([]*psutils.Process, error)

func GetCountOfThirdPartyClients

func GetCountOfThirdPartyClients(ctx context.Context) (i int, e error)

GetCountOfThirdPartyClients returns the number of connections to the service from anyone other than _this_execution_ of steampipe

We assume that any connections from this execution will eventually be closed - if there are any other external connections, we cannot shust down the database

this is to handle cases where either a third party tool is connected to the database, or other Steampipe sessions are attached to an already running Steampipe service - we do not want the db service being closed underneath them

note: we need the PgClientAppName chack to handle the case where there may be one or more open DB connections from this instance at the time of shutdown - for example when a control run is cancelled If we do not exclude connections from this execution, the DB will not be shut down after a cancellation

func GetLocalClient

func GetLocalClient(ctx context.Context, invoker constants.Invoker, onConnectionCallback db_client.DbConnectionCallback) (db_common.Client, error)

GetLocalClient starts service if needed and creates a new LocalDbClient

func IsInstalled

func IsInstalled() bool

IsInstalled checks and reports whether the embedded database is installed and setup

func RefreshConnectionAndSearchPaths

func RefreshConnectionAndSearchPaths(ctx context.Context, invoker constants.Invoker) error

RefreshConnectionAndSearchPaths creates a local client and refreshed connections and search paths

func RemoveAllCertificates

func RemoveAllCertificates() error

RemoveAllCertificates removes root and server certificates so that they can be regenerated

func RemoveServerCertificate

func RemoveServerCertificate() error

RemoveServerCertificate removes the server certificate certificates so it will be regenerated

func ServiceExecutableRelativeLocation

func ServiceExecutableRelativeLocation() string

func ShutdownService

func ShutdownService(ctx context.Context, invoker constants.Invoker)

ShutdownService stops the database instance if the given 'invoker' matches

func TrimLogs

func TrimLogs()

func ValidateRootCertificate

func ValidateRootCertificate() bool

ValidateRootCertificate checks the root certificate exists, is not expired and has correct Subject

func ValidateServerCertificate

func ValidateServerCertificate() bool

ValidateServerCertificate checks the server certificate exists, is not expired and has correct issuer

Types

type CreateDbOptions

type CreateDbOptions struct {
	DatabaseName, Username string
}

type LocalDbClient

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

LocalDbClient wraps over DbClient

func NewLocalClient

func NewLocalClient(ctx context.Context, invoker constants.Invoker, onConnectionCallback db_client.DbConnectionCallback) (*LocalDbClient, error)

NewLocalClient verifies that the local database instance is running and returns a LocalDbClient to interact with it

func (*LocalDbClient) AcquireSession

func (*LocalDbClient) CacheClear

func (c *LocalDbClient) CacheClear(ctx context.Context) error

CacheClear implements Client

func (*LocalDbClient) CacheOff

func (c *LocalDbClient) CacheOff(ctx context.Context) error

CacheOff implements Client

func (*LocalDbClient) CacheOn

func (c *LocalDbClient) CacheOn(ctx context.Context) error

CacheOn implements Client

func (*LocalDbClient) Close

func (c *LocalDbClient) Close(ctx context.Context) error

Close implements Client close the connection to the database and shuts down the backend

func (*LocalDbClient) ConnectionMap

func (c *LocalDbClient) ConnectionMap() *steampipeconfig.ConnectionDataMap

func (*LocalDbClient) ContructSearchPath

func (c *LocalDbClient) ContructSearchPath(ctx context.Context, requiredSearchPath, searchPathPrefix []string) ([]string, error)

func (*LocalDbClient) Execute

func (c *LocalDbClient) Execute(ctx context.Context, query string, args ...any) (res *queryresult.Result, err error)

Execute implements Client

func (*LocalDbClient) ExecuteInSession

func (c *LocalDbClient) ExecuteInSession(ctx context.Context, session *db_common.DatabaseSession, onComplete func(), query string, args ...any) (res *queryresult.Result, err error)

ExecuteInSession implements Client

func (*LocalDbClient) ExecuteSync

func (c *LocalDbClient) ExecuteSync(ctx context.Context, query string, args ...any) (*queryresult.SyncQueryResult, error)

ExecuteSync implements Client

func (*LocalDbClient) ExecuteSyncInSession

func (c *LocalDbClient) ExecuteSyncInSession(ctx context.Context, session *db_common.DatabaseSession, query string, args ...any) (*queryresult.SyncQueryResult, error)

ExecuteSyncInSession implements Client

func (*LocalDbClient) ForeignSchemaNames

func (c *LocalDbClient) ForeignSchemaNames() []string

ForeignSchemaNames implements Client

func (*LocalDbClient) GetCurrentSearchPath

func (c *LocalDbClient) GetCurrentSearchPath(ctx context.Context) ([]string, error)

GetCurrentSearchPath implements Client

func (*LocalDbClient) GetCurrentSearchPathForDbConnection

func (c *LocalDbClient) GetCurrentSearchPathForDbConnection(ctx context.Context, databaseConnection *sql.Conn) ([]string, error)

func (*LocalDbClient) GetDefaultSearchPath

func (c *LocalDbClient) GetDefaultSearchPath(ctx context.Context) []string

GetDefaultSearchPath builds default search path from the connection schemas, book-ended with public and internal

func (*LocalDbClient) GetRequiredSessionSearchPath

func (c *LocalDbClient) GetRequiredSessionSearchPath() []string

GetRequiredSessionSearchPath implements Client

func (*LocalDbClient) GetSchemaFromDB

func (c *LocalDbClient) GetSchemaFromDB(ctx context.Context) (*schema.Metadata, error)

GetSchemaFromDB for LocalDBClient optimises the schema extraction by extracting schema information for connections backed by distinct plugins and then fanning back out.

func (*LocalDbClient) LoadForeignSchemaNames

func (c *LocalDbClient) LoadForeignSchemaNames(ctx context.Context) error

LoadForeignSchemaNames implements Client

func (*LocalDbClient) RefreshConnectionAndSearchPaths

func (c *LocalDbClient) RefreshConnectionAndSearchPaths(ctx context.Context, forceUpdateConnectionNames ...string) *steampipeconfig.RefreshConnectionResult

func (*LocalDbClient) RefreshSessions

func (c *LocalDbClient) RefreshSessions(ctx context.Context) *db_common.AcquireSessionResult

func (*LocalDbClient) SetRequiredSessionSearchPath

func (c *LocalDbClient) SetRequiredSessionSearchPath(ctx context.Context) error

SetRequiredSessionSearchPath implements Client

type Passwords

type Passwords struct {
	Root      string
	Steampipe string
}

Passwords :: structure for working with DB passwords

type RunningDBInstanceInfo

type RunningDBInstanceInfo struct {
	Pid           int               `json:"pid"`
	Port          int               `json:"port"`
	Listen        []string          `json:"listen"`
	ListenType    StartListenType   `json:"listen_type"`
	Invoker       constants.Invoker `json:"invoker"`
	Password      string            `json:"password"`
	User          string            `json:"user"`
	Database      string            `json:"database"`
	StructVersion int64             `json:"struct_version"`
}

RunningDBInstanceInfo contains data about the running process and it's credentials

func GetState

func GetState() (*RunningDBInstanceInfo, error)

GetState checks that the database instance is running and returns its details

func (*RunningDBInstanceInfo) Save

func (r *RunningDBInstanceInfo) Save() error

func (*RunningDBInstanceInfo) String

func (r *RunningDBInstanceInfo) String() string

type StartDbStatus

type StartDbStatus int

StartDbStatus is a pseudoEnum for outcomes of starting the db

const (
	// start from 10 to prevent confusion with int zero-value
	ServiceStarted StartDbStatus = iota + 1
	ServiceAlreadyRunning
	ServiceFailedToStart
)

type StartListenType

type StartListenType string

StartListenType is a pseudoEnum of network binding for postgres

const (
	// ListenTypeNetwork - bind to all known interfaces
	ListenTypeNetwork StartListenType = "network"
	// ListenTypeLocal - bind to localhost only
	ListenTypeLocal = "local"
)

func (StartListenType) IsValid

func (slt StartListenType) IsValid() error

IsValid is a validator for StartListenType known values

type StartResult

type StartResult struct {
	Error              error
	Status             StartDbStatus
	DbState            *RunningDBInstanceInfo
	PluginManagerState *pluginmanager.PluginManagerState
}

StartResult is a pseudoEnum for outcomes of StartNewInstance

func StartServices

func StartServices(ctx context.Context, port int, listen StartListenType, invoker constants.Invoker) (startResult *StartResult)

func (*StartResult) SetError

func (r *StartResult) SetError(err error) *StartResult

type StopStatus

type StopStatus int

StopStatus is a pseudoEnum for service stop result

const (
	// start from 1 to prevent confusion with int zero-value
	ServiceStopped StopStatus = iota + 1
	ServiceNotRunning
	ServiceStopFailed
	ServiceStopTimedOut
)

func StopServices

func StopServices(ctx context.Context, force bool, invoker constants.Invoker) (status StopStatus, e error)

StopServices searches for and stops the running instance. Does nothing if an instance was not found

Jump to

Keyboard shortcuts

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