Documentation ¶
Index ¶
- Constants
- Variables
- func BuildValidationWarningString(failures []*ValidationFailure) string
- func DeleteConnectionStateFile()
- func GetModFileExtensions() []string
- func GetVariableValues(ctx context.Context, parseCtx *parse.ModParseContext, ...) (*modconfig.ModVariableMap, error)
- func IsCloudWorkspaceIdentifier(name string) bool
- func LoadMod(modPath string, parseCtx *parse.ModParseContext, opts ...LoadModOption) (mod *modconfig.Mod, errorsAndWarnings *modconfig.ErrorAndWarnings)
- func LoadModResourceNames(modPath string, parseCtx *parse.ModParseContext) (resources *modconfig.WorkspaceResources, err error)
- func LoadVariableDefinitions(variablePath string, parseCtx *parse.ModParseContext) (*modconfig.ModVariableMap, error)
- func NewConnectionUpdates(ctx context.Context, pool *pgxpool.Pool, forceUpdateConnectionNames ...string) (*ConnectionUpdates, *RefreshConnectionResult)
- func SaveConnectionStateFile(res *RefreshConnectionResult, connectionUpdates *ConnectionUpdates)
- func ValidatePlugins(updates ConnectionDataMap, plugins map[string]*ConnectionPlugin) ([]*ValidationFailure, ConnectionDataMap, map[string]*ConnectionPlugin)
- type ActorMetadata
- type CloudMetadata
- type ConnectionData
- type ConnectionDataMap
- func (m ConnectionDataMap) Connections() []*modconfig.Connection
- func (m ConnectionDataMap) ConnectionsInState(states ...string) bool
- func (m ConnectionDataMap) Equals(other ConnectionDataMap) bool
- func (m ConnectionDataMap) GetSummary() ConnectionStateSummary
- func (m ConnectionDataMap) Pending() bool
- func (m ConnectionDataMap) Ready() bool
- func (m ConnectionDataMap) Save() error
- type ConnectionPlugin
- type ConnectionPluginData
- type ConnectionSchemaMap
- type ConnectionStateSummary
- type ConnectionUpdates
- type IdentityMetadata
- type LoadConnectionStateConfiguration
- type LoadConnectionStateOption
- type LoadModOption
- type PostgresNotification
- type PostgresNotificationType
- type RefreshConnectionResult
- type SchemaUpdateNotification
- type SteampipeConfig
- func (c *SteampipeConfig) ConfigMap() map[string]interface{}
- func (c *SteampipeConfig) ConnectionList() []*modconfig.Connection
- func (c *SteampipeConfig) ConnectionNames() []string
- func (c *SteampipeConfig) ConnectionsForPlugin(pluginLongName string, pluginVersion *version.Version) []*modconfig.Connection
- func (c *SteampipeConfig) GetConnectionOptions(connectionName string) *options.Connection
- func (c *SteampipeConfig) SetOptions(opts options.Options) (errorsAndWarnings *modconfig.ErrorAndWarnings)
- func (c *SteampipeConfig) String() string
- func (c *SteampipeConfig) Validate() (validationWarnings, validationErrors []string)
- type ValidationFailure
- type WorkspaceMetadata
- type WorkspaceProfileLoader
Constants ¶
const PostgresNotificationStructVersion = 20230306
Variables ¶
var GlobalWorkspaceProfile *modconfig.WorkspaceProfile
var WithWaitForPending = func(config *LoadConnectionStateConfiguration) { config.WaitForPending = true }
var WithWaitUntilReady = func(config *LoadConnectionStateConfiguration) { config.WaitForReady = true }
Functions ¶
func BuildValidationWarningString ¶
func BuildValidationWarningString(failures []*ValidationFailure) string
func DeleteConnectionStateFile ¶ added in v0.20.0
func DeleteConnectionStateFile()
func GetModFileExtensions ¶
func GetModFileExtensions() []string
GetModFileExtensions :: return list of all file extensions we care about this will be the mod data extension, plus any registered extensions registered in fileToResourceMap
func GetVariableValues ¶
func GetVariableValues(ctx context.Context, parseCtx *parse.ModParseContext, variableMap *modconfig.ModVariableMap, validate bool) (*modconfig.ModVariableMap, error)
func IsCloudWorkspaceIdentifier ¶ added in v0.17.0
IsCloudWorkspaceIdentifier returns whether name is a cloud workspace identifier of the form: {identity_handle}/{workspace_handle},
func LoadMod ¶
func LoadMod(modPath string, parseCtx *parse.ModParseContext, opts ...LoadModOption) (mod *modconfig.Mod, errorsAndWarnings *modconfig.ErrorAndWarnings)
LoadMod parses all hcl files in modPath and returns a single mod if CreatePseudoResources flag is set, construct hcl resources for files with specific extensions NOTE: it is an error if there is more than 1 mod defined, however zero mods is acceptable - a default mod will be created assuming there are any resource files
func LoadModResourceNames ¶
func LoadModResourceNames(modPath string, parseCtx *parse.ModParseContext) (resources *modconfig.WorkspaceResources, err error)
LoadModResourceNames parses all hcl files in modPath and returns the names of all resources
func LoadVariableDefinitions ¶
func LoadVariableDefinitions(variablePath string, parseCtx *parse.ModParseContext) (*modconfig.ModVariableMap, error)
func NewConnectionUpdates ¶
func NewConnectionUpdates(ctx context.Context, pool *pgxpool.Pool, forceUpdateConnectionNames ...string) (*ConnectionUpdates, *RefreshConnectionResult)
NewConnectionUpdates returns updates to be made to the database to sync with connection config
func SaveConnectionStateFile ¶ added in v0.20.0
func SaveConnectionStateFile(res *RefreshConnectionResult, connectionUpdates *ConnectionUpdates)
func ValidatePlugins ¶
func ValidatePlugins(updates ConnectionDataMap, plugins map[string]*ConnectionPlugin) ([]*ValidationFailure, ConnectionDataMap, map[string]*ConnectionPlugin)
Types ¶
type ActorMetadata ¶
type CloudMetadata ¶
type CloudMetadata struct { Actor *ActorMetadata `json:"actor,omitempty"` Identity *IdentityMetadata `json:"identity,omitempty"` WorkspaceDatabase *WorkspaceMetadata `json:"workspace,omitempty"` ConnectionString string `json:"-"` }
type ConnectionData ¶
type ConnectionData struct { // the connection name ConnectionName string `json:"connection,omitempty" db:"name"` // the connection object Connection *modconfig.Connection `json:"connection,omitempty" db:"-"` // the fully qualified name of the plugin Plugin string `json:"plugin,omitempty" db:"plugin"` // the connection state (pending, updating, deleting, error, ready) State string `json:"state,omitempty" db:"state"` // error (if there is one - make a pointer to supprt null) ConnectionError *string `json:"error,omitempty" db:"error"` // schema mode - static or dynamic SchemaMode string `json:"schema_mode,omitempty" db:"schema_mode"` // the hash of the connection schema - this is used to determine if a dynamic schema has changed SchemaHash string `json:"schema_hash,omitempty" db:"schema_hash"` // the creation time of the plugin file PluginModTime time.Time `json:"plugin_mod_time" db:"plugin_mod_time"` // the update time of the connection ConnectionModTime time.Time `json:"connection_mod_time" db:"connection_mod_time"` }
ConnectionData is a struct containing all details for a connection - the plugin name and checksum, the connection config and options json tags needed as this is stored in the connection state file
func NewConnectionData ¶
func NewConnectionData(remoteSchema string, connection *modconfig.Connection, creationTime time.Time) *ConnectionData
func (*ConnectionData) CanCloneSchema ¶
func (d *ConnectionData) CanCloneSchema() bool
func (*ConnectionData) Equals ¶
func (d *ConnectionData) Equals(other *ConnectionData) bool
func (*ConnectionData) Error ¶
func (d *ConnectionData) Error() string
func (*ConnectionData) SetError ¶
func (d *ConnectionData) SetError(err string)
type ConnectionDataMap ¶
type ConnectionDataMap map[string]*ConnectionData
func LoadConnectionState ¶ added in v0.20.0
func LoadConnectionState(ctx context.Context, conn *pgx.Conn, opts ...LoadConnectionStateOption) (ConnectionDataMap, error)
LoadConnectionState populates a ConnectionDataMap from the connection_state table it verifies the table has been initialised by calling RefreshConnections after db startup
func NewConnectionDataMap ¶
func NewConnectionDataMap(connectionMap map[string]*modconfig.Connection, currentConnectionState ConnectionDataMap) (ConnectionDataMap, map[string][]modconfig.Connection, error)
NewConnectionDataMap populates a map of connection data for all connections in connectionMap
func (ConnectionDataMap) Connections ¶
func (m ConnectionDataMap) Connections() []*modconfig.Connection
func (ConnectionDataMap) ConnectionsInState ¶
func (m ConnectionDataMap) ConnectionsInState(states ...string) bool
ConnectionsInState returns whether there are any connections one of the given states
func (ConnectionDataMap) Equals ¶
func (m ConnectionDataMap) Equals(other ConnectionDataMap) bool
func (ConnectionDataMap) GetSummary ¶
func (m ConnectionDataMap) GetSummary() ConnectionStateSummary
func (ConnectionDataMap) Pending ¶
func (m ConnectionDataMap) Pending() bool
Pending returns whether there are any connections in the map which are pending this indicates that the db has just started and RefreshConnections has not been called yet
func (ConnectionDataMap) Ready ¶
func (m ConnectionDataMap) Ready() bool
Ready returns whether loading is complete, i.e. all connections are either ready or error
func (ConnectionDataMap) Save ¶
func (m ConnectionDataMap) Save() error
type ConnectionPlugin ¶
type ConnectionPlugin struct { // map of connection data (name, config, options) // keyed by connection name ConnectionMap map[string]*ConnectionPluginData PluginName string PluginClient *sdkgrpc.PluginClient SupportedOperations *proto.SupportedOperations }
ConnectionPlugin is a structure representing an instance of a plugin for non-legacy plugins, each plugin instance supportds multiple connections the config, options and schema for each connection is stored in ConnectionMap
func NewConnectionPlugin ¶ added in v0.16.0
func NewConnectionPlugin(pluginName string, pluginClient *sdkgrpc.PluginClient, supportedOperations *proto.SupportedOperations) *ConnectionPlugin
func (ConnectionPlugin) GetSchema ¶ added in v0.19.0
func (p ConnectionPlugin) GetSchema(connectionName string) (*sdkproto.Schema, error)
GetSchema returns the cached schema if it is static, or if it is dynamic, refetch it
func (ConnectionPlugin) IncludesConnection ¶ added in v0.16.0
func (p ConnectionPlugin) IncludesConnection(name string) bool
type ConnectionPluginData ¶ added in v0.16.0
type ConnectionSchemaMap ¶
ConnectionSchemaMap is a map of connection to all connections with the same schema
func NewConnectionSchemaMap ¶
func NewConnectionSchemaMap(ctx context.Context, conn *pgx.Conn) (ConnectionSchemaMap, error)
NewConnectionSchemaMap creates a ConnectionSchemaMap for all configured connections it uses the current connection state to determine if a connection has a dynamic schema (NOTE: this will no work for newly added plugins which will not have a state yet - which is why CreateConnectionPlugins loads the schemas for each new plugin and calls NewConnectionSchemaMapForConnections directly, passing the schema modes)
func (ConnectionSchemaMap) UniqueSchemas ¶
func (c ConnectionSchemaMap) UniqueSchemas() []string
UniqueSchemas returns the unique schemas for all loaded connections
type ConnectionStateSummary ¶ added in v0.20.0
type ConnectionUpdates ¶
type ConnectionUpdates struct { Update ConnectionDataMap Delete []string MissingPlugins map[string][]modconfig.Connection // the connections which will exist after the update FinalConnectionState ConnectionDataMap // connection plugins required to perform the updates ConnectionPlugins map[string]*ConnectionPlugin CurrentConnectionState ConnectionDataMap }
func (*ConnectionUpdates) AsNotification ¶ added in v0.19.0
func (u *ConnectionUpdates) AsNotification() *SchemaUpdateNotification
func (*ConnectionUpdates) HasUpdates ¶
func (u *ConnectionUpdates) HasUpdates() bool
func (*ConnectionUpdates) String ¶ added in v0.17.0
func (u *ConnectionUpdates) String() string
type IdentityMetadata ¶
type LoadConnectionStateConfiguration ¶ added in v0.20.0
type LoadConnectionStateOption ¶ added in v0.20.0
type LoadConnectionStateOption = func(config *LoadConnectionStateConfiguration)
type LoadModOption ¶ added in v0.20.0
func WithDependencyConfig ¶ added in v0.20.0
func WithDependencyConfig(modDependencyName string, version *semver.Version) LoadModOption
type PostgresNotification ¶ added in v0.19.0
type PostgresNotification struct { StructVersion int Type PostgresNotificationType }
type PostgresNotificationType ¶ added in v0.19.0
type PostgresNotificationType int
const (
PgNotificationSchemaUpdate PostgresNotificationType = iota + 1
)
type RefreshConnectionResult ¶
type RefreshConnectionResult struct { modconfig.ErrorAndWarnings UpdatedConnections bool Updates *ConnectionUpdates FailedConnections map[string]string }
RefreshConnectionResult is a structure used to contain the result of either a RefreshConnections or a NewLocalClient operation
func CreateConnectionPlugins ¶
func CreateConnectionPlugins(connectionsToCreate []*modconfig.Connection) (requestedConnectionPluginMap map[string]*ConnectionPlugin, res *RefreshConnectionResult)
CreateConnectionPlugins instantiates plugins for specified connections, and fetches schemas
func NewErrorRefreshConnectionResult ¶ added in v0.20.0
func NewErrorRefreshConnectionResult(err error) *RefreshConnectionResult
func (*RefreshConnectionResult) AddFailedConnection ¶ added in v0.19.0
func (r *RefreshConnectionResult) AddFailedConnection(c string, failure string)
func (*RefreshConnectionResult) Merge ¶
func (r *RefreshConnectionResult) Merge(other *RefreshConnectionResult)
func (*RefreshConnectionResult) String ¶ added in v0.17.0
func (r *RefreshConnectionResult) String() string
type SchemaUpdateNotification ¶ added in v0.19.0
type SchemaUpdateNotification struct { StructVersion int Type PostgresNotificationType Update []string Delete []string }
func NewSchemaUpdateNotification ¶ added in v0.19.0
func NewSchemaUpdateNotification(update, delete []string) *SchemaUpdateNotification
type SteampipeConfig ¶
type SteampipeConfig struct { // map of connection name to partially parsed connection config Connections map[string]*modconfig.Connection // Steampipe options DefaultConnectionOptions *options.Connection DatabaseOptions *options.Database TerminalOptions *options.Terminal GeneralOptions *options.General // contains filtered or unexported fields }
SteampipeConfig is a struct to hold Connection map and Steampipe options
var GlobalConfig *SteampipeConfig
func LoadConnectionConfig ¶
func LoadConnectionConfig() (*SteampipeConfig, *modconfig.ErrorAndWarnings)
LoadConnectionConfig loads the connection config but not the workspace options this is called by the fdw
func LoadSteampipeConfig ¶
func LoadSteampipeConfig(modLocation string, commandName string) (*SteampipeConfig, *modconfig.ErrorAndWarnings)
LoadSteampipeConfig loads the HCL connection config and workspace options
func NewSteampipeConfig ¶
func NewSteampipeConfig(commandName string) *SteampipeConfig
func (*SteampipeConfig) ConfigMap ¶
func (c *SteampipeConfig) ConfigMap() map[string]interface{}
ConfigMap creates a config map to pass to viper
func (*SteampipeConfig) ConnectionList ¶
func (c *SteampipeConfig) ConnectionList() []*modconfig.Connection
func (*SteampipeConfig) ConnectionNames ¶
func (c *SteampipeConfig) ConnectionNames() []string
ConnectionNames returns a flat list of connection names
func (*SteampipeConfig) ConnectionsForPlugin ¶
func (c *SteampipeConfig) ConnectionsForPlugin(pluginLongName string, pluginVersion *version.Version) []*modconfig.Connection
func (*SteampipeConfig) GetConnectionOptions ¶
func (c *SteampipeConfig) GetConnectionOptions(connectionName string) *options.Connection
func (*SteampipeConfig) SetOptions ¶
func (c *SteampipeConfig) SetOptions(opts options.Options) (errorsAndWarnings *modconfig.ErrorAndWarnings)
func (*SteampipeConfig) String ¶
func (c *SteampipeConfig) String() string
func (*SteampipeConfig) Validate ¶
func (c *SteampipeConfig) Validate() (validationWarnings, validationErrors []string)
Validate validates all connections connections with validation errors are removed
type ValidationFailure ¶
type ValidationFailure struct { Plugin string ConnectionName string Message string ShouldDropIfExists bool }
func (ValidationFailure) String ¶
func (v ValidationFailure) String() string
type WorkspaceMetadata ¶
type WorkspaceProfileLoader ¶ added in v0.17.0
type WorkspaceProfileLoader struct { DefaultProfile *modconfig.WorkspaceProfile ConfiguredProfile *modconfig.WorkspaceProfile // contains filtered or unexported fields }
func NewWorkspaceProfileLoader ¶ added in v0.17.0
func NewWorkspaceProfileLoader(workspaceProfilePath string) (*WorkspaceProfileLoader, error)
func (*WorkspaceProfileLoader) GetActiveWorkspaceProfile ¶ added in v0.17.0
func (l *WorkspaceProfileLoader) GetActiveWorkspaceProfile() *modconfig.WorkspaceProfile
Source Files ¶
- cloud_metadata.go
- cloud_workspace.go
- connection_data.go
- connection_data_map.go
- connection_plugin.go
- connection_schemas.go
- connection_state.go
- connection_updates.go
- connection_validation.go
- load_config.go
- load_mod.go
- load_mod_option.go
- load_mod_variables.go
- postgres_notification.go
- refresh_connections_result.go
- steampipeconfig.go
- workspace_profile_loader.go