config: validate that a multi provider is only configured once each
This commit is contained in:
parent
5ba091450f
commit
a599d5f224
|
@ -239,6 +239,20 @@ func (c *Config) Validate() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that providers aren't declared multiple times.
|
||||||
|
providerSet := make(map[string]struct{})
|
||||||
|
for _, p := range c.ProviderConfigs {
|
||||||
|
name := p.FullName()
|
||||||
|
if _, ok := providerSet[name]; ok {
|
||||||
|
errs = append(errs, fmt.Errorf(
|
||||||
|
"provider.%s: declared multiple times, you can only declare a provider once",
|
||||||
|
name))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
providerSet[name] = struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
// Check that all references to modules are valid
|
// Check that all references to modules are valid
|
||||||
modules := make(map[string]*Module)
|
modules := make(map[string]*Module)
|
||||||
dupped := make(map[string]struct{})
|
dupped := make(map[string]struct{})
|
||||||
|
@ -651,6 +665,14 @@ func (o *Output) mergerMerge(m merger) merger {
|
||||||
return &result
|
return &result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ProviderConfig) FullName() string {
|
||||||
|
if c.Alias == "" {
|
||||||
|
return c.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s.%s", c.Name, c.Alias)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ProviderConfig) mergerName() string {
|
func (c *ProviderConfig) mergerName() string {
|
||||||
return c.Name
|
return c.Name
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,6 +203,13 @@ func TestConfigValidate_pathVarInvalid(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfigValidate_providerMulti(t *testing.T) {
|
||||||
|
c := testConfig(t, "validate-provider-multi")
|
||||||
|
if err := c.Validate(); err == nil {
|
||||||
|
t.Fatal("should not be valid")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestConfigValidate_provConnSplatOther(t *testing.T) {
|
func TestConfigValidate_provConnSplatOther(t *testing.T) {
|
||||||
c := testConfig(t, "validate-prov-conn-splat-other")
|
c := testConfig(t, "validate-prov-conn-splat-other")
|
||||||
if err := c.Validate(); err != nil {
|
if err := c.Validate(); err != nil {
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
provider "aws" {
|
||||||
|
alias = "foo"
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
alias = "foo"
|
||||||
|
}
|
Loading…
Reference in New Issue