mirror of
https://github.com/grafana/grafana.git
synced 2024-12-28 18:01:40 -06:00
9d7c74ef91
Properly provides plugin configs to backend plugins. Uses v0.16.0 of grafana-plugin-sdk-go- Ref #21512 Ref #19667
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package models
|
|
|
|
var pluginSettingDecryptionCache = secureJSONDecryptionCache{
|
|
cache: make(map[int64]cachedDecryptedJSON),
|
|
}
|
|
|
|
// DecryptedValues returns cached decrypted values from secureJsonData.
|
|
func (ps *PluginSetting) DecryptedValues() map[string]string {
|
|
pluginSettingDecryptionCache.Lock()
|
|
defer pluginSettingDecryptionCache.Unlock()
|
|
|
|
if item, present := pluginSettingDecryptionCache.cache[ps.Id]; present && ps.Updated.Equal(item.updated) {
|
|
return item.json
|
|
}
|
|
|
|
json := ps.SecureJsonData.Decrypt()
|
|
pluginSettingDecryptionCache.cache[ps.Id] = cachedDecryptedJSON{
|
|
updated: ps.Updated,
|
|
json: json,
|
|
}
|
|
|
|
return json
|
|
}
|
|
|
|
// DecryptedValue returns cached decrypted value from cached secureJsonData.
|
|
func (ps *PluginSetting) DecryptedValue(key string) (string, bool) {
|
|
value, exists := ps.DecryptedValues()[key]
|
|
return value, exists
|
|
}
|
|
|
|
// ClearPluginSettingDecryptionCache clears the datasource decryption cache.
|
|
func ClearPluginSettingDecryptionCache() {
|
|
pluginSettingDecryptionCache.Lock()
|
|
defer pluginSettingDecryptionCache.Unlock()
|
|
|
|
pluginSettingDecryptionCache.cache = make(map[int64]cachedDecryptedJSON)
|
|
}
|