mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-02-21 11:01:23 -05:00
* Rename module name from "github.com/hashicorp/terraform" to "github.com/placeholderplaceholderplaceholder/opentf". Signed-off-by: Jakub Martin <kubam@spacelift.io> * Gofmt. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Regenerate protobuf. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Fix comments. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Undo issue and pull request link changes. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Undo comment changes. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Fix comment. Signed-off-by: Jakub Martin <kubam@spacelift.io> * Undo some link changes. Signed-off-by: Jakub Martin <kubam@spacelift.io> * make generate && make protobuf Signed-off-by: Jakub Martin <kubam@spacelift.io> --------- Signed-off-by: Jakub Martin <kubam@spacelift.io>
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package providers
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/addrs"
|
|
)
|
|
|
|
// SchemaCache is a global cache of Schemas.
|
|
// This will be accessed by both core and the provider clients to ensure that
|
|
// large schemas are stored in a single location.
|
|
var SchemaCache = &schemaCache{
|
|
m: make(map[addrs.Provider]ProviderSchema),
|
|
}
|
|
|
|
// Global cache for provider schemas
|
|
// Cache the entire response to ensure we capture any new fields, like
|
|
// ServerCapabilities. This also serves to capture errors so that multiple
|
|
// concurrent calls resulting in an error can be handled in the same manner.
|
|
type schemaCache struct {
|
|
mu sync.Mutex
|
|
m map[addrs.Provider]ProviderSchema
|
|
}
|
|
|
|
func (c *schemaCache) Set(p addrs.Provider, s ProviderSchema) {
|
|
c.mu.Lock()
|
|
defer c.mu.Unlock()
|
|
|
|
c.m[p] = s
|
|
}
|
|
|
|
func (c *schemaCache) Get(p addrs.Provider) (ProviderSchema, bool) {
|
|
c.mu.Lock()
|
|
defer c.mu.Unlock()
|
|
|
|
s, ok := c.m[p]
|
|
return s, ok
|
|
}
|