Documentation
¶
Index ¶
- Variables
- 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)
- type AWSConfig
- type AWSCredentials
- type AWSPlugin
- type BaseConfig
- type Config
- type DiscoveryResult
- type ExternalLink
- type Filter
- type MergeConfig
- type MetadataConfig
- type MetadataField
- type MetadataFilter
- type MetadataMapping
- type MetadataRules
- type PluginConfig
- type RawPluginConfig
- type Source
- type SourceRun
- type TagsConfig
Constants ¶
This section is empty.
Variables ¶
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 ShouldIncludeResource ¶
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 (*AWSConfig) NewAWSConfig ¶ added in v0.2.0
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 ¶
type ExternalLink struct {
Name string `json:"name"`
Icon string `json:"icon"`
URL string `json:"url"`
}
ExternalLink defines an external resource link
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 ¶
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. |