Reorder an error check in the provider registry. (#2078)

The provider registry was checking for a `nil` provider instance before
checking for a non-nil error. This caused the CLI to fail to report
important errors during the plugin load process (e.g. invalid checkpoint
errors) and instead report a failure to find a matching plugin.
This commit is contained in:
Pat Gavlin 2018-10-19 17:22:50 -07:00 committed by GitHub
parent 2ec066261b
commit f465fc0a48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -97,17 +97,19 @@ func NewRegistry(host plugin.Host, prev []*resource.State, isPreview bool) (*Reg
return nil, errors.Errorf("duplicate provider found in old state: '%v'", ref)
}
providerPkg := getProviderPackage(urn.Type())
// Parse the provider version, then load, configure, and register the provider.
version, err := getProviderVersion(res.Inputs)
if err != nil {
return nil, errors.Errorf("could not parse version for provider '%v': %v", urn, err)
}
provider, err := host.Provider(getProviderPackage(urn.Type()), version)
if provider == nil {
return nil, errors.Errorf("could not find plugin for provider '%v'", urn)
return nil, errors.Errorf("could not parse version for %v provider '%v': %v", providerPkg, urn, err)
}
provider, err := host.Provider(providerPkg, version)
if err != nil {
return nil, errors.Errorf("could not load plugin for provider '%v': %v", urn, err)
return nil, errors.Errorf("could not load plugin for %v provider '%v': %v", providerPkg, urn, err)
}
if provider == nil {
return nil, errors.Errorf("could not find plugin for %v provider '%v' at version %v", providerPkg, urn, version)
}
if err := provider.Configure(res.Inputs); err != nil {
closeErr := host.CloseProvider(provider)