Documentation
¶
Index ¶
- Constants
- Variables
- func DecryptConfig(config map[string]interface{}, configSpec []ConfigField, ...) error
- func DecryptConfigForPlugin(pluginID string, config map[string]interface{}, encryptor *crypto.Encryptor) error
- func EncryptConfig(config map[string]interface{}, configSpec []ConfigField, ...) error
- func EncryptConfigForPlugin(pluginID string, config map[string]interface{}, encryptor *crypto.Encryptor) error
- func GetConfigType(raw RawPluginConfig, source Source) interface{}
- func GetSensitiveFields(configSpec []ConfigField) map[string]bool
- func GetValidator() *validator.Validate
- func InterpolateTags(tags TagsConfig, metadata map[string]interface{}) []string
- func MapToMetadata(source interface{}) map[string]interface{}
- func ProcessAWSTags(tagsToMetadata bool, includeTags []string, tags map[string]string) map[string]interface{}
- func ShouldIncludeResource(name string, filter Filter) bool
- func UnmarshalPluginConfig[T any](raw RawPluginConfig) (*T, error)
- func ValidateStruct(s interface{}) error
- type AWSConfig
- type AWSCredentialStatus
- type AWSCredentials
- type AWSPlugin
- type AssetRunHistory
- type BaseConfig
- type Config
- type ConfigField
- type DiscoveryResult
- type ExternalLink
- type FieldOption
- type FieldType
- type Filter
- type MetadataField
- type PluginConfig
- type PluginMeta
- type RawPluginConfig
- type Registry
- type RegistryEntry
- type Run
- type RunCheckpoint
- type RunHistoryEvent
- type RunStatus
- type RunSummary
- type Source
- type SourceRun
- type StatefulRunContext
- type StatefulSource
- type Statistic
- type TagsConfig
- type Validation
- type ValidationError
- type ValidationErrors
Constants ¶
const SensitiveMask = "********"
Variables ¶
var ErrEndpointNotFound = fmt.Errorf("endpoint not found")
ErrEndpointNotFound is returned when an endpoint can't be resolved
Functions ¶
func DecryptConfig ¶ added in v0.5.0
func DecryptConfig(config map[string]interface{}, configSpec []ConfigField, encryptor *crypto.Encryptor) error
DecryptConfig decrypts sensitive fields in a plugin config using the ConfigSpec
func DecryptConfigForPlugin ¶ added in v0.5.0
func DecryptConfigForPlugin(pluginID string, config map[string]interface{}, encryptor *crypto.Encryptor) error
DecryptConfigForPlugin decrypts sensitive fields for a specific plugin by ID
func EncryptConfig ¶ added in v0.5.0
func EncryptConfig(config map[string]interface{}, configSpec []ConfigField, encryptor *crypto.Encryptor) error
EncryptConfig encrypts sensitive fields in a plugin config using the ConfigSpec
func EncryptConfigForPlugin ¶ added in v0.5.0
func EncryptConfigForPlugin(pluginID string, config map[string]interface{}, encryptor *crypto.Encryptor) error
EncryptConfigForPlugin encrypts sensitive fields for a specific plugin by ID
func GetConfigType ¶ added in v0.3.1
func GetConfigType(raw RawPluginConfig, source Source) interface{}
GetConfigType attempts to extract the config type from a source by unmarshaling into an empty interface and using reflection
func GetSensitiveFields ¶ added in v0.5.0
func GetSensitiveFields(configSpec []ConfigField) map[string]bool
GetSensitiveFields returns a map of sensitive field names from ConfigSpec
func GetValidator ¶ added in v0.5.0
GetValidator returns a configured validator instance
func InterpolateTags ¶
func InterpolateTags(tags TagsConfig, metadata map[string]interface{}) []string
InterpolateTags processes tags and replaces variables with values from metadata
func MapToMetadata ¶
func MapToMetadata(source interface{}) map[string]interface{}
MapToMetadata converts a struct with metadata tags to a metadata map
func ProcessAWSTags ¶
func ShouldIncludeResource ¶
func UnmarshalPluginConfig ¶
func UnmarshalPluginConfig[T any](raw RawPluginConfig) (*T, error)
UnmarshalPluginConfig unmarshals raw config into a specific plugin config type
func ValidateStruct ¶ added in v0.5.0
func ValidateStruct(s interface{}) error
ValidateStruct validates a struct and returns user-friendly validation errors
Types ¶
type AWSConfig ¶
type AWSConfig struct {
Credentials AWSCredentials `json:"credentials" description:"AWS credentials configuration"`
TagsToMetadata bool `json:"tags_to_metadata,omitempty" description:"Convert AWS tags to Marmot metadata"`
IncludeTags []string `json:"include_tags,omitempty" description:"List of AWS tags to include as metadata. By default, all tags are included."`
Filter Filter `json:"filter,omitempty" description:"Filter patterns for AWS resources"`
}
func ExtractAWSConfig ¶ added in v0.2.0
func (*AWSConfig) NewAWSConfig ¶ added in v0.2.0
type AWSCredentialStatus ¶ added in v0.5.0
type AWSCredentialStatus struct {
Available bool `json:"available"`
Sources []string `json:"sources"`
Error string `json:"error,omitempty"`
}
func DetectAWSCredentials ¶ added in v0.5.0
func DetectAWSCredentials(ctx context.Context) *AWSCredentialStatus
DetectAWSCredentials checks if AWS credentials are available from environment or config files
type AWSCredentials ¶
type AWSCredentials struct {
UseDefault bool `json:"use_default,omitempty" description:"Use AWS credentials from environment or default profile (recommended)"`
ID string `json:"id,omitempty" description:"AWS access key ID"`
Secret string `json:"secret,omitempty" description:"AWS secret access key" sensitive:"true"`
Token string `json:"token,omitempty" description:"AWS session token" sensitive:"true"`
Profile string `json:"profile,omitempty" description:"AWS profile to use from shared credentials file"`
Role string `json:"role,omitempty" description:"AWS IAM role ARN to assume"`
RoleExternalID string `json:"role_external_id,omitempty" description:"External ID for cross-account role assumption"`
Region string `json:"region,omitempty" description:"AWS region for services"`
Endpoint string `json:"endpoint,omitempty" description:"Custom endpoint URL for AWS services" validate:"omitempty,url"`
}
type AWSPlugin ¶
type AWSPlugin struct {
AWSConfig `json:",inline"`
BaseConfig `json:",inline"`
}
type AssetRunHistory ¶ added in v0.5.0
type AssetRunHistory struct {
AssetMRN string `json:"asset_mrn"`
Runs []RunHistoryEvent `json:"runs"`
}
AssetRunHistory contains run history events for an asset
type BaseConfig ¶
type BaseConfig struct {
Tags TagsConfig `json:"tags,omitempty" description:"Tags to apply to discovered assets"`
ExternalLinks []ExternalLink `json:"external_links,omitempty" description:"External links to show on all assets"`
}
type ConfigField ¶ added in v0.5.0
type ConfigField struct {
Name string `json:"name"`
Type FieldType `json:"type"`
Label string `json:"label"`
Description string `json:"description"`
Required bool `json:"required"`
Default interface{} `json:"default,omitempty"`
Options []FieldOption `json:"options,omitempty"`
Validation *Validation `json:"validation,omitempty"`
Sensitive bool `json:"sensitive"`
Placeholder string `json:"placeholder,omitempty"`
Fields []ConfigField `json:"fields,omitempty"`
IsArray bool `json:"is_array,omitempty"`
}
func GenerateConfigSpec ¶ added in v0.5.0
func GenerateConfigSpec(configType interface{}) []ConfigField
type DiscoveryResult ¶
type DiscoveryResult struct {
Assets []asset.Asset `json:"assets"`
Lineage []lineage.LineageEdge `json:"lineage"`
Documentation []assetdocs.Documentation `json:"documentation"`
Statistics []Statistic `json:"statistics"`
RunHistory []AssetRunHistory `json:"run_history,omitempty"`
}
DiscoveryResult contains all discovered assets, lineage, and documentation
type ExternalLink ¶
type ExternalLink struct {
Name string `json:"name" description:"Display name for the link" validate:"required"`
Icon string `json:"icon,omitempty" description:"Icon identifier for the link"`
URL string `json:"url" description:"URL to the external resource" validate:"required,url"`
}
ExternalLink defines an external resource link
type FieldOption ¶ added in v0.5.0
type MetadataField ¶
type MetadataField struct {
Path string
Description string
Type string
Required bool
Sensitive bool
}
MetadataField defines a metadata field with documentation and validation
func GetMetadataFields ¶
func GetMetadataFields(v interface{}) []MetadataField
GetMetadataFields extracts metadata field definitions from struct tags
type PluginConfig ¶
type PluginConfig struct {
BaseConfig `json:",inline"`
Source string `json:"source,omitempty"`
}
PluginConfig combines base config with plugin-specific fields
type PluginMeta ¶ added in v0.5.0
type RawPluginConfig ¶
type RawPluginConfig map[string]interface{}
RawPluginConfig holds the raw JSON configuration for a plugin It uses a `map[string]interface{}` to unmarshal arbitrary JSON data for each plugin's specific config.
func MaskSensitiveFieldsFromSpec ¶ added in v0.5.0
func MaskSensitiveFieldsFromSpec(config RawPluginConfig, configSpec []ConfigField) RawPluginConfig
MaskSensitiveFieldsFromSpec masks sensitive fields in a config map using the ConfigSpec
func (RawPluginConfig) MaskSensitiveFields ¶ added in v0.3.0
func (r RawPluginConfig) MaskSensitiveFields(configStruct interface{}) RawPluginConfig
type Registry ¶ added in v0.5.0
type Registry struct {
// contains filtered or unexported fields
}
func GetRegistry ¶ added in v0.5.0
func GetRegistry() *Registry
func (*Registry) List ¶ added in v0.5.0
func (r *Registry) List() []PluginMeta
type RegistryEntry ¶ added in v0.5.0
type RegistryEntry struct {
Meta PluginMeta
Source Source
}
type Run ¶ added in v0.3.0
type Run struct {
ID string `json:"id"`
PipelineName string `json:"pipeline_name"`
SourceName string `json:"source_name"`
RunID string `json:"run_id"`
Status RunStatus `json:"status"`
StartedAt time.Time `json:"started_at"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
Config RawPluginConfig `json:"config,omitempty"`
Summary *RunSummary `json:"summary,omitempty"`
CreatedBy string `json:"created_by"`
}
Run represents a single run
type RunCheckpoint ¶ added in v0.3.0
type RunCheckpoint struct {
ID string `json:"id"`
RunID string `json:"run_id"`
EntityType string `json:"entity_type"` // 'asset', 'lineage', 'documentation'
EntityMRN string `json:"entity_mrn"`
Operation string `json:"operation"` // 'created', 'updated', 'deleted', 'skipped'
SourceFields []string `json:"source_fields"` // Which fields this source contributed
CreatedAt time.Time `json:"created_at"`
}
RunCheckpoint tracks what entities were processed in a run
type RunHistoryEvent ¶ added in v0.5.0
type RunHistoryEvent struct {
RunID string `json:"run_id"`
JobNamespace string `json:"job_namespace"`
JobName string `json:"job_name"`
EventType string `json:"event_type"` // START, RUNNING, COMPLETE, FAIL, ABORT
EventTime time.Time `json:"event_time"`
RunFacets map[string]interface{} `json:"run_facets,omitempty"`
JobFacets map[string]interface{} `json:"job_facets,omitempty"`
}
RunHistoryEvent represents a single run event (START, COMPLETE, FAIL, etc.)
type RunSummary ¶ added in v0.3.0
type RunSummary struct {
AssetsCreated int `json:"assets_created"`
AssetsUpdated int `json:"assets_updated"`
AssetsDeleted int `json:"assets_deleted"`
LineageCreated int `json:"lineage_created"`
LineageUpdated int `json:"lineage_updated"`
DocumentationAdded int `json:"documentation_added"`
ErrorsCount int `json:"errors_count"`
TotalEntities int `json:"total_entities"`
DurationSeconds int `json:"duration_seconds"`
}
RunSummary contains summary statistics for a run
type Source ¶
type Source interface {
Validate(config RawPluginConfig) (RawPluginConfig, error)
Discover(ctx context.Context, config RawPluginConfig) (*DiscoveryResult, error)
}
type SourceRun ¶
type SourceRun map[string]RawPluginConfig
SourceRun maps source names to their raw configurations
type StatefulRunContext ¶ added in v0.3.0
type StatefulRunContext struct {
PipelineName string
SourceName string
LastRunCheckpoints map[string]*RunCheckpoint // entity_mrn -> checkpoint
CurrentRunID string
}
StatefulRunContext provides context for stateful operations
type StatefulSource ¶ added in v0.3.0
StatefulSource extends Source with stateful capabilities
type TagsConfig ¶
type TagsConfig []string
TagsConfig is just a string slice that supports interpolation
type Validation ¶ added in v0.5.0
type ValidationError ¶ added in v0.5.0
ValidationError represents a field-level validation error
type ValidationErrors ¶ added in v0.5.0
type ValidationErrors struct {
Errors []ValidationError `json:"errors"`
}
ValidationErrors is a collection of validation errors
func (ValidationErrors) Error ¶ added in v0.5.0
func (v ValidationErrors) Error() string
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
providers
|
|
|
airflow
+marmot:name=Airflow +marmot:description=Ingests metadata from Apache Airflow including DAGs, tasks, and dataset lineage.
|
+marmot:name=Airflow +marmot:description=Ingests metadata from Apache Airflow including DAGs, tasks, and dataset lineage. |
|
asyncapi
+marmot:name=AsyncAPI +marmot:description=This plugin enables fetching data from AsyncAPI specifications.
|
+marmot:name=AsyncAPI +marmot:description=This plugin enables fetching data from AsyncAPI specifications. |
|
azureblob
+marmot:name=Azure Blob Storage +marmot:description=Discovers containers and blobs from Azure Blob Storage accounts.
|
+marmot:name=Azure Blob Storage +marmot:description=Discovers containers and blobs from Azure Blob Storage accounts. |
|
bigquery
+marmot:name=BigQuery +marmot:description=This plugin discovers datasets and tables from Google BigQuery projects.
|
+marmot:name=BigQuery +marmot:description=This plugin discovers datasets and tables from Google BigQuery projects. |
|
clickhouse
+marmot:name=ClickHouse +marmot:description=Discovers databases, tables, and views from ClickHouse instances.
|
+marmot:name=ClickHouse +marmot:description=Discovers databases, tables, and views from ClickHouse instances. |
|
dbt
+marmot:name=DBT +marmot:description=This plugin ingests metadata from DBT (Data Build Tool) projects, including models, tests, and lineage.
|
+marmot:name=DBT +marmot:description=This plugin ingests metadata from DBT (Data Build Tool) projects, including models, tests, and lineage. |
|
kafka
+marmot:name=Kafka +marmot:description=This plugin discovers Kafka topics from Kafka clusters.
|
+marmot:name=Kafka +marmot:description=This plugin discovers Kafka topics from Kafka clusters. |
|
mongodb
+marmot:name=MongoDB +marmot:description=This plugin discovers databases and collections from MongoDB instances.
|
+marmot:name=MongoDB +marmot:description=This plugin discovers databases and collections from MongoDB instances. |
|
mysql
+marmot:name=MySQL +marmot:description=This plugin discovers databases and tables from MySQL instances.
|
+marmot:name=MySQL +marmot:description=This plugin discovers databases and tables from MySQL instances. |
|
openapi
+marmot:name=OpenAPI +marmot:description=This plugin discovers OpenAPI v3 specifications.
|
+marmot:name=OpenAPI +marmot:description=This plugin discovers OpenAPI v3 specifications. |
|
postgresql
+marmot:name=PostgreSQL +marmot:description=This plugin discovers databases and tables from PostgreSQL instances.
|
+marmot:name=PostgreSQL +marmot:description=This plugin discovers databases and tables from PostgreSQL instances. |
|
s3
+marmot:name=S3 +marmot:description=This plugin discovers S3 buckets from AWS accounts.
|
+marmot:name=S3 +marmot:description=This plugin discovers S3 buckets from AWS accounts. |
|
sns
+marmot:name=SNS +marmot:description=This plugin discovers SNS topics from AWS accounts.
|
+marmot:name=SNS +marmot:description=This plugin discovers SNS topics from AWS accounts. |
|
sqs
+marmot:name=SQS +marmot:description=This plugin discovers SQS queues from AWS accounts.
|
+marmot:name=SQS +marmot:description=This plugin discovers SQS queues from AWS accounts. |