 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
experiment package contains helper functions for tracking experimental features throughout Terraform.
This package should be used for creating, enabling, querying, and deleting experimental features. By unifying all of that onto a single interface, we can have the Go compiler help us by enforcing every place we touch an experimental feature.
To create a new experiment:
- Add the experiment to the global vars list below, prefixed with X_ 
- Add the experiment variable to the All listin the init() function 
- Use it! 
To remove an experiment:
- Delete the experiment global var. 
- Try to compile and fix all the places where the var was referenced. 
To use an experiment:
- Use Flag() if you want the experiment to be available from the CLI. 
- Use Enabled() to check whether it is enabled. 
As a general user:
- The `-Xexperiment-name` flag
- The `TF_X_<experiment-name>` env var.
- The `TF_X_FORCE` env var can be set to force an experimental feature without human verifications.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // all is the list of all experiements. Do not modify this. All []ID )
Global variables this package uses because we are a package with global state.
var ( // Shadow graph. This is already on by default. Disabling it will be // allowed for awhile in order for it to not block operations. X_shadow = newBasicID("shadow", "SHADOW", false) )
The experiments that are available are listed below. Any package in Terraform defining an experiment should define the experiments below. By keeping them all within the experiment package we force a single point of definition and use. This allows the compiler to enforce references so it becomes easy to remove the features.
Functions ¶
func Force ¶
func Force() bool
Force returns true if the -Xforce of TF_X_FORCE flag is present, which advises users of this package to not verify with the user that they want experimental behavior and to just continue with it.
func SetEnabled ¶
SetEnabled sets an experiment to enabled/disabled. Please check with the experiment docs for when calling this actually affects the experiment.
Types ¶
type ID ¶
type ID interface {
	Env() string
	Flag() string
	Default() bool
	// contains filtered or unexported methods
}
    ID represents an experimental feature.
The global vars defined on this package should be used as ID values. This interface is purposely not implement-able outside of this package so that we can rely on the Go compiler to enforce all experiment references.