plugin

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrEndpointNotFound = fmt.Errorf("endpoint not found")

ErrEndpointNotFound is returned when an endpoint can't be resolved

Functions

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 ProcessAWSTags(tagsToMetadata bool, includeTags []string, tags map[string]string) map[string]interface{}

func ShouldIncludeResource

func ShouldIncludeResource(name string, filter Filter) bool

func UnmarshalPluginConfig

func UnmarshalPluginConfig[T any](raw RawPluginConfig) (*T, error)

UnmarshalPluginConfig unmarshals raw config into a specific plugin config type

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"`
	Filter         Filter         `json:"filter,omitempty" description:"Filter patterns for AWS resources"`
}

func ExtractAWSConfig added in v0.2.0

func ExtractAWSConfig(rawConfig map[string]interface{}) (*AWSConfig, error)

func (*AWSConfig) NewAWSConfig added in v0.2.0

func (a *AWSConfig) NewAWSConfig(ctx context.Context) (aws.Config, error)

func (*AWSConfig) Validate

func (a *AWSConfig) Validate() error

type AWSCredentials

type AWSCredentials struct {
	Profile        string `json:"profile,omitempty" description:"AWS profile to use from shared credentials file"`
	ID             string `json:"id,omitempty" description:"AWS access key ID"`
	Secret         string `json:"secret,omitempty" description:"AWS secret access key"`
	Token          string `json:"token,omitempty" description:"AWS session token"`
	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"`
}

type AWSPlugin

type AWSPlugin struct {
	AWSConfig  `json:",inline"`
	BaseConfig `json:",inline"`
}

type BaseConfig

type BaseConfig struct {
	GlobalDocumentation         []string       `json:"global_documentation,omitempty"`
	GlobalDocumentationPosition string         `json:"global_documentation_position,omitempty"`
	Metadata                    MetadataConfig `json:"metadata,omitempty"`
	Tags                        TagsConfig     `json:"tags,omitempty"`
	Merge                       MergeConfig    `json:"merge,omitempty"`
	ExternalLinks               []ExternalLink `json:"external_links,omitempty"`
	AWSConfig                   *AWSConfig     `json:"aws,omitempty"`
}

BaseConfig contains configuration fields common to all plugins

type Config

type Config struct {
	Runs []SourceRun `json:"runs"`
}

Config represents the top-level configuration

type DiscoveryResult

type DiscoveryResult struct {
	Assets        []asset.Asset             `json:"assets"`
	Lineage       []lineage.LineageEdge     `json:"lineage"`
	Documentation []assetdocs.Documentation `json:"documentation"`
}

DiscoveryResult contains all discovered assets, lineage, and documentation

type ExternalLink struct {
	Name string `json:"name"`
	Icon string `json:"icon"`
	URL  string `json:"url"`
}

ExternalLink defines an external resource link

type Filter

type Filter struct {
	Include []string `json:"include,omitempty" description:"Include patterns for resource names (regex)"`
	Exclude []string `json:"exclude,omitempty" description:"Exclude patterns for resource names (regex)"`
}

type MergeConfig

type MergeConfig struct {
	Tags        string `json:"tags,omitempty"`
	Metadata    string `json:"metadata,omitempty"`
	Name        string `json:"name,omitempty"`
	Description string `json:"description,omitempty"`
}

MergeConfig defines how different asset fields should be merged

type MetadataConfig

type MetadataConfig struct {
	Allow []string `json:"allow,omitempty"`
}

MetadataConfig defines allowable metadata fields

type MetadataField

type MetadataField struct {
	Path        string
	Description string
	Type        string
	Required    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 MetadataFilter

type MetadataFilter struct {
	Mode     string   `json:"mode"`
	Props    []string `json:"props"`
	Prefixes []string `json:"prefixes"`
}

MetadataFilter defines metadata filtering rules

type MetadataMapping

type MetadataMapping struct {
	Source       string `json:"source"`
	Target       string `json:"target"`
	Type         string `json:"type"`
	DefaultValue any    `json:"default,omitempty"`
}

MetadataMapping defines how metadata should be mapped during merge

type MetadataRules

type MetadataRules struct {
	Merge       MetadataFilter `json:"merge"`
	Environment MetadataFilter `json:"environment"`
}

MetadataRules defines rules for metadata handling

type PluginConfig

type PluginConfig struct {
	BaseConfig `json:",inline"`
	Source     string `json:"source,omitempty"`
}

PluginConfig combines base config with plugin-specific fields

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 (RawPluginConfig) MaskSensitiveInfo added in v0.2.0

func (c RawPluginConfig) MaskSensitiveInfo(sensitiveValues ...string) RawPluginConfig

MaskSensitiveInfo masks sensitive values in a plugin configuration

type Source

type Source interface {
	Validate(config 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 TagsConfig

type TagsConfig []string

TagsConfig is just a string slice that supports interpolation

Directories

Path Synopsis
providers
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.
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.
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.
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.
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.

Jump to

Keyboard shortcuts

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