Fix a bug during provider config setting (#382)

* Fix a bug in provider config construction

* Fix a bug in provider config construction
This commit is contained in:
magodo 2023-03-29 15:05:41 +08:00 коммит произвёл GitHub
Родитель b794b083c7
Коммит 846cd37105
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 7 добавлений и 12 удалений

Просмотреть файл

@ -526,24 +526,19 @@ func (meta *baseMeta) init_notf(ctx context.Context) error {
return fmt.Errorf("getting provider schema: %v", diags) return fmt.Errorf("getting provider schema: %v", diags)
} }
// Ensure "features" is always defined in the provider config // Ensure "features" is always defined in the provider initConfig
providerConfig := map[string]cty.Value{ initConfig, err := ctyjson.Unmarshal([]byte(`{"features": []}`), configschema.SchemaBlockImpliedType(schResp.Provider.Block))
"features": cty.ListValEmpty(configschema.SchemaBlockImpliedType(schResp.Provider.Block.NestedBlocks["features"].Block)), if err != nil {
return fmt.Errorf("ctyjson unmarshal initial provider config")
} }
providerConfig := initConfig.AsValueMap()
for k, v := range meta.providerConfig { for k, v := range meta.providerConfig {
providerConfig[k] = v providerConfig[k] = v
} }
b, err := json.Marshal(meta.providerConfig)
if err != nil {
return fmt.Errorf("marshal provider config: %v", err)
}
config, err := ctyjson.Unmarshal(b, configschema.SchemaBlockImpliedType(schResp.Provider.Block))
if err != nil {
return fmt.Errorf("unmarshal provider config: %v", err)
}
if _, diags = meta.tfclient.ConfigureProvider(ctx, typ.ConfigureProviderRequest{ if _, diags = meta.tfclient.ConfigureProvider(ctx, typ.ConfigureProviderRequest{
Config: config, Config: cty.ObjectVal(providerConfig),
}); diags.HasErrors() { }); diags.HasErrors() {
return fmt.Errorf("configure provider: %v", diags) return fmt.Errorf("configure provider: %v", diags)
} }