pulumi/pkg/resource/plugin/analyzer.go
Pat Gavlin a23b10a9bf
Update the copyright end date to 2018. (#1068)
Just what it says on the tin.
2018-03-21 12:43:21 -07:00

32 lines
1.3 KiB
Go

// Copyright 2016-2018, Pulumi Corporation. All rights reserved.
package plugin
import (
"io"
"github.com/pulumi/pulumi/pkg/resource"
"github.com/pulumi/pulumi/pkg/tokens"
"github.com/pulumi/pulumi/pkg/workspace"
)
// Analyzer provides a pluggable interface for performing arbitrary analysis of entire projects/stacks/snapshots, and/or
// individual resources, for arbitrary issues. These might be style, policy, correctness, security, or performance
// related. This interface hides the messiness of the underlying machinery, since providers are behind an RPC boundary.
type Analyzer interface {
// Closer closes any underlying OS resources associated with this provider (like processes, RPC channels, etc).
io.Closer
// Name fetches an analyzer's qualified name.
Name() tokens.QName
// Analyze analyzes a single resource object, and returns any errors that it finds.
Analyze(t tokens.Type, props resource.PropertyMap) ([]AnalyzeFailure, error)
// GetPluginInfo returns this plugin's information.
GetPluginInfo() (workspace.PluginInfo, error)
}
// AnalyzeFailure indicates that resource analysis failed; it contains the property and reason for the failure.
type AnalyzeFailure struct {
Property resource.PropertyKey // the property that failed the analysis.
Reason string // the reason the property failed the analysis.
}