github.com/adrian-bl/terraform@v0.7.0-rc2.0.20160705220747-de0a34fc3517/terraform/eval_context.go (about)

     1  package terraform
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/hashicorp/terraform/config"
     7  )
     8  
     9  // EvalContext is the interface that is given to eval nodes to execute.
    10  type EvalContext interface {
    11  	// Path is the current module path.
    12  	Path() []string
    13  
    14  	// Hook is used to call hook methods. The callback is called for each
    15  	// hook and should return the hook action to take and the error.
    16  	Hook(func(Hook) (HookAction, error)) error
    17  
    18  	// Input is the UIInput object for interacting with the UI.
    19  	Input() UIInput
    20  
    21  	// InitProvider initializes the provider with the given name and
    22  	// returns the implementation of the resource provider or an error.
    23  	//
    24  	// It is an error to initialize the same provider more than once.
    25  	InitProvider(string) (ResourceProvider, error)
    26  
    27  	// Provider gets the provider instance with the given name (already
    28  	// initialized) or returns nil if the provider isn't initialized.
    29  	Provider(string) ResourceProvider
    30  
    31  	// CloseProvider closes provider connections that aren't needed anymore.
    32  	CloseProvider(string) error
    33  
    34  	// ConfigureProvider configures the provider with the given
    35  	// configuration. This is a separate context call because this call
    36  	// is used to store the provider configuration for inheritance lookups
    37  	// with ParentProviderConfig().
    38  	ConfigureProvider(string, *ResourceConfig) error
    39  	SetProviderConfig(string, *ResourceConfig) error
    40  	ParentProviderConfig(string) *ResourceConfig
    41  
    42  	// ProviderInput and SetProviderInput are used to configure providers
    43  	// from user input.
    44  	ProviderInput(string) map[string]interface{}
    45  	SetProviderInput(string, map[string]interface{})
    46  
    47  	// InitProvisioner initializes the provisioner with the given name and
    48  	// returns the implementation of the resource provisioner or an error.
    49  	//
    50  	// It is an error to initialize the same provisioner more than once.
    51  	InitProvisioner(string) (ResourceProvisioner, error)
    52  
    53  	// Provisioner gets the provisioner instance with the given name (already
    54  	// initialized) or returns nil if the provisioner isn't initialized.
    55  	Provisioner(string) ResourceProvisioner
    56  
    57  	// CloseProvisioner closes provisioner connections that aren't needed
    58  	// anymore.
    59  	CloseProvisioner(string) error
    60  
    61  	// Interpolate takes the given raw configuration and completes
    62  	// the interpolations, returning the processed ResourceConfig.
    63  	//
    64  	// The resource argument is optional. If given, it is the resource
    65  	// that is currently being acted upon.
    66  	Interpolate(*config.RawConfig, *Resource) (*ResourceConfig, error)
    67  
    68  	// SetVariables sets the variables for the module within
    69  	// this context with the name n. This function call is additive:
    70  	// the second parameter is merged with any previous call.
    71  	SetVariables(string, map[string]interface{})
    72  
    73  	// Diff returns the global diff as well as the lock that should
    74  	// be used to modify that diff.
    75  	Diff() (*Diff, *sync.RWMutex)
    76  
    77  	// State returns the global state as well as the lock that should
    78  	// be used to modify that state.
    79  	State() (*State, *sync.RWMutex)
    80  }