Documentation
¶
Overview ¶
Package diffy provides configuration options for schema validation
Package diffy validates Terraform configurations against provider schemas.
Package diffy provides core interfaces for the validation system ¶
Package diffy provides logging implementations ¶
Package diffy provides middleware functionality for validation operations ¶
Package diffy provides core types and data structures
Index ¶
- func FormatFinding(finding ValidationFinding) string
- func NormalizeSource(source string) string
- type Block
- type BlockData
- type BlockProcessor
- type Body
- type DefaultHCLParser
- func (parser *DefaultHCLParser) ParseMainFile(ctx context.Context, filename string) ([]ParsedResource, []ParsedDataSource, error)
- func (parser *DefaultHCLParser) ParseProviderRequirements(ctx context.Context, filename string) (map[string]ProviderConfig, error)
- func (parser *DefaultHCLParser) ParseTerraformFiles(_ context.Context, files []string) ([]ParsedResource, []ParsedDataSource, error)
- type DefaultSchemaValidator
- type DefaultTerraformRunner
- type GitHubConfig
- type GitHubError
- type GitHubIssueManager
- type GitRepoInfo
- type HCLParser
- type IssueManager
- type Logger
- type ParseError
- type ParsedBlock
- type ParsedDataSource
- type ParsedResource
- type ProviderConfig
- type ProviderSchema
- type RepositoryInfoProvider
- type ResourceSchema
- type SchemaAttribute
- type SchemaBlock
- type SchemaBlockType
- type SchemaValidator
- type SchemaValidatorOption
- func WithExcludedDataSources(dataSources ...string) SchemaValidatorOption
- func WithExcludedResources(resources ...string) SchemaValidatorOption
- func WithGitHubIssueCreation() SchemaValidatorOption
- func WithParser(parser HCLParser) SchemaValidatorOption
- func WithTerraformRoot(path string) SchemaValidatorOption
- func WithTerraformRunner(runner TerraformRunner) SchemaValidatorOption
- type SchemaValidatorOptions
- type SimpleLogger
- type SubModule
- type TerraformRunner
- type TerraformSchema
- type ValidationError
- type ValidationFinding
- func ApplyMiddleware(findings []ValidationFinding, err error, middleware ValidationMiddleware) ([]ValidationFinding, error)
- func DeduplicateFindings(findings []ValidationFinding) []ValidationFinding
- func ValidateSchema(options ...SchemaValidatorOption) ([]ValidationFinding, error)
- func ValidateTerraformSchema(logger Logger, dir, submoduleName string, parser HCLParser, ...) ([]ValidationFinding, error)
- func ValidateTerraformSchemaInDirectory(logger Logger, dir, submoduleName string) ([]ValidationFinding, error)
- func ValidateTerraformSchemaInDirectoryWithOptions(logger Logger, dir, submoduleName string, ...) ([]ValidationFinding, error)
- func ValidateTerraformSchemaWithOptions(logger Logger, dir, submoduleName string, parser HCLParser, ...) ([]ValidationFinding, error)
- type ValidationMiddleware
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatFinding ¶
func FormatFinding(finding ValidationFinding) string
func NormalizeSource ¶
Types ¶
type BlockData ¶
type BlockData struct {
Properties map[string]bool
StaticBlocks map[string][]*ParsedBlock
DynamicBlocks map[string]*ParsedBlock
IgnoreChanges []string
}
func NewBlockData ¶
func NewBlockData() BlockData
func (*BlockData) ParseAttributes ¶
func (*BlockData) ParseBlocks ¶
func (*BlockData) Validate ¶
func (blockData *BlockData) Validate( resourceType, path string, schema *SchemaBlock, parentIgnore []string, findings *[]ValidationFinding, )
type BlockProcessor ¶
type BlockProcessor interface {
ParseAttributes(body *Body)
ParseBlocks(body *Body)
Validate(resourceType, path string, schema *SchemaBlock, parentIgnore []string, findings *[]ValidationFinding)
}
type DefaultHCLParser ¶
type DefaultHCLParser struct{}
func NewHCLParser ¶
func NewHCLParser() *DefaultHCLParser
func (*DefaultHCLParser) ParseMainFile ¶
func (parser *DefaultHCLParser) ParseMainFile(ctx context.Context, filename string) ([]ParsedResource, []ParsedDataSource, error)
func (*DefaultHCLParser) ParseProviderRequirements ¶
func (parser *DefaultHCLParser) ParseProviderRequirements(ctx context.Context, filename string) (map[string]ProviderConfig, error)
func (*DefaultHCLParser) ParseTerraformFiles ¶ added in v1.3.0
func (parser *DefaultHCLParser) ParseTerraformFiles(_ context.Context, files []string) ([]ParsedResource, []ParsedDataSource, error)
type DefaultSchemaValidator ¶
type DefaultSchemaValidator struct {
// contains filtered or unexported fields
}
func NewSchemaValidator ¶
func NewSchemaValidator(logger Logger) *DefaultSchemaValidator
func (*DefaultSchemaValidator) ValidateDataSources ¶
func (validator *DefaultSchemaValidator) ValidateDataSources( dataSources []ParsedDataSource, schema TerraformSchema, providers map[string]ProviderConfig, dir, submoduleName string, ) []ValidationFinding
func (*DefaultSchemaValidator) ValidateResources ¶
func (validator *DefaultSchemaValidator) ValidateResources( resources []ParsedResource, schema TerraformSchema, providers map[string]ProviderConfig, dir, submoduleName string, ) []ValidationFinding
type DefaultTerraformRunner ¶
type DefaultTerraformRunner struct {
// contains filtered or unexported fields
}
func NewTerraformRunner ¶
func NewTerraformRunner() *DefaultTerraformRunner
func (*DefaultTerraformRunner) GetSchema ¶
func (r *DefaultTerraformRunner) GetSchema(ctx context.Context, dir string) (*TerraformSchema, error)
type GitHubConfig ¶ added in v1.3.0
type GitHubError ¶ added in v1.3.0
func (*GitHubError) Error ¶ added in v1.3.0
func (e *GitHubError) Error() string
func (*GitHubError) Unwrap ¶ added in v1.3.0
func (e *GitHubError) Unwrap() error
type GitHubIssueManager ¶
type GitHubIssueManager struct {
GitHubConfig
Client *http.Client
}
func NewGitHubIssueManager ¶
func NewGitHubIssueManager(repoOwner, repoName, token string) *GitHubIssueManager
func (*GitHubIssueManager) CloseExistingIssuesIfEmpty ¶ added in v1.3.0
func (manager *GitHubIssueManager) CloseExistingIssuesIfEmpty(ctx context.Context) error
func (*GitHubIssueManager) CreateOrUpdateIssue ¶
func (manager *GitHubIssueManager) CreateOrUpdateIssue(ctx context.Context, findings []ValidationFinding) error
type GitRepoInfo ¶
type GitRepoInfo struct {
TerraformRoot string
}
func NewGitRepoInfo ¶
func NewGitRepoInfo(terraformRoot string) *GitRepoInfo
func (*GitRepoInfo) GetRepoInfo ¶
func (g *GitRepoInfo) GetRepoInfo() (owner, repo string)
type HCLParser ¶
type HCLParser interface {
ParseProviderRequirements(ctx context.Context, filename string) (map[string]ProviderConfig, error)
ParseMainFile(ctx context.Context, filename string) ([]ParsedResource, []ParsedDataSource, error)
ParseTerraformFiles(ctx context.Context, filenames []string) ([]ParsedResource, []ParsedDataSource, error)
}
type IssueManager ¶
type IssueManager interface {
CreateOrUpdateIssue(ctx context.Context, findings []ValidationFinding) error
}
type ParseError ¶ added in v1.3.0
func (*ParseError) Error ¶ added in v1.3.0
func (e *ParseError) Error() string
func (*ParseError) Unwrap ¶ added in v1.3.0
func (e *ParseError) Unwrap() error
type ParsedBlock ¶
type ParsedBlock struct {
Data BlockData
}
func ParseSyntaxBody ¶
func ParseSyntaxBody(body *hclsyntax.Body) *ParsedBlock
type ParsedDataSource ¶
type ParsedResource ¶
type ProviderConfig ¶
type ProviderSchema ¶
type ProviderSchema struct {
ResourceSchemas map[string]*ResourceSchema `json:"resource_schemas"`
DataSourceSchemas map[string]*ResourceSchema `json:"data_source_schemas"`
}
type RepositoryInfoProvider ¶
type RepositoryInfoProvider interface {
GetRepoInfo() (owner, name string)
}
type ResourceSchema ¶
type ResourceSchema struct {
Block *SchemaBlock `json:"block"`
}
type SchemaAttribute ¶
type SchemaBlock ¶
type SchemaBlock struct {
Attributes map[string]*SchemaAttribute `json:"attributes"`
BlockTypes map[string]*SchemaBlockType `json:"block_types"`
}
type SchemaBlockType ¶
type SchemaBlockType struct {
Nesting string `json:"nesting"`
MinItems int `json:"min_items"`
MaxItems int `json:"max_items"`
Block *SchemaBlock `json:"block"`
Deprecated bool `json:"deprecated"`
}
type SchemaValidator ¶
type SchemaValidator interface {
ValidateResources(resources []ParsedResource, schema TerraformSchema, providers map[string]ProviderConfig, dir, submoduleName string) []ValidationFinding
ValidateDataSources(dataSources []ParsedDataSource, schema TerraformSchema, providers map[string]ProviderConfig, dir, submoduleName string) []ValidationFinding
}
type SchemaValidatorOption ¶
type SchemaValidatorOption func(*SchemaValidatorOptions)
func WithExcludedDataSources ¶ added in v1.3.0
func WithExcludedDataSources(dataSources ...string) SchemaValidatorOption
func WithExcludedResources ¶ added in v1.3.0
func WithExcludedResources(resources ...string) SchemaValidatorOption
func WithGitHubIssueCreation ¶
func WithGitHubIssueCreation() SchemaValidatorOption
func WithParser ¶ added in v1.4.0
func WithParser(parser HCLParser) SchemaValidatorOption
func WithTerraformRoot ¶
func WithTerraformRoot(path string) SchemaValidatorOption
func WithTerraformRunner ¶ added in v1.4.0
func WithTerraformRunner(runner TerraformRunner) SchemaValidatorOption
type SchemaValidatorOptions ¶
type SimpleLogger ¶
type SimpleLogger struct{}
func (*SimpleLogger) Logf ¶
func (l *SimpleLogger) Logf(format string, args ...any)
type SubModule ¶
func FindSubmodules ¶
type TerraformRunner ¶
type TerraformSchema ¶
type TerraformSchema struct {
ProviderSchemas map[string]*ProviderSchema `json:"provider_schemas"`
}
type ValidationError ¶ added in v1.3.0
func (*ValidationError) Error ¶ added in v1.3.0
func (e *ValidationError) Error() string
func (*ValidationError) Unwrap ¶ added in v1.3.0
func (e *ValidationError) Unwrap() error
type ValidationFinding ¶
type ValidationFinding struct {
ResourceType string
Path string
Name string
Required bool
IsBlock bool
IsDataSource bool
SubmoduleName string
}
func ApplyMiddleware ¶ added in v1.3.0
func ApplyMiddleware(findings []ValidationFinding, err error, middleware ValidationMiddleware) ([]ValidationFinding, error)
func DeduplicateFindings ¶
func DeduplicateFindings(findings []ValidationFinding) []ValidationFinding
func ValidateSchema ¶
func ValidateSchema(options ...SchemaValidatorOption) ([]ValidationFinding, error)
func ValidateTerraformSchema ¶
func ValidateTerraformSchema(logger Logger, dir, submoduleName string, parser HCLParser, runner TerraformRunner) ([]ValidationFinding, error)
func ValidateTerraformSchemaInDirectory ¶
func ValidateTerraformSchemaInDirectory(logger Logger, dir, submoduleName string) ([]ValidationFinding, error)
func ValidateTerraformSchemaInDirectoryWithOptions ¶ added in v1.3.0
func ValidateTerraformSchemaInDirectoryWithOptions(logger Logger, dir, submoduleName string, excludedResources, excludedDataSources []string) ([]ValidationFinding, error)
func ValidateTerraformSchemaWithOptions ¶ added in v1.3.0
func ValidateTerraformSchemaWithOptions(logger Logger, dir, submoduleName string, parser HCLParser, runner TerraformRunner, excludedResources, excludedDataSources []string) ([]ValidationFinding, error)
type ValidationMiddleware ¶ added in v1.3.0
type ValidationMiddleware func([]ValidationFinding, error) ([]ValidationFinding, error)
func LoggingMiddleware ¶ added in v1.3.0
func LoggingMiddleware(logger Logger) ValidationMiddleware
Click to show internal directories.
Click to hide internal directories.