provisioners: Add Factory type and FactoryFixed helper

These are similar to the symbols of the same name in package "providers".

terraform.ProvisionerFactory is now an alias for provisioners.Factory, so
we can defer updating all of the existing users of it.
This commit is contained in:
Martin Atkins 2018-09-29 09:14:33 -07:00
parent 5ff35c1a9a
commit a2a37ae40d
2 changed files with 20 additions and 1 deletions

19
provisioners/factory.go Normal file
View File

@ -0,0 +1,19 @@
package provisioners
// Factory is a function type that creates a new instance of a resource
// provisioner, or returns an error if that is impossible.
type Factory func() (Interface, error)
// FactoryFixed is a helper that creates a Factory that just returns some given
// single provisioner.
//
// Unlike usual factories, the exact same instance is returned for each call
// to the factory and so this must be used in only specialized situations where
// the caller can take care to either not mutate the given provider at all
// or to mutate it in ways that will not cause unexpected behavior for others
// holding the same reference.
func FactoryFixed(p Interface) Factory {
return func() (Interface, error) {
return p, nil
}
}

View File

@ -67,4 +67,4 @@ type ResourceProvisionerFactory func() (ResourceProvisioner, error)
// ProvisionerFactory is a function type that creates a new instance // ProvisionerFactory is a function type that creates a new instance
// of a provisioners.Interface. // of a provisioners.Interface.
type ProvisionerFactory func() (provisioners.Interface, error) type ProvisionerFactory = provisioners.Factory