in provider/secrets_manager_provider.go [101:155]
func (p *SecretsManagerProvider) fetchSecretManagerValueWithClient(
ctx context.Context,
client SecretsManagerClient,
descriptor *SecretDescriptor,
curMap map[string]*v1alpha1.ObjectVersion,
) (v []*SecretValue, e error) {
var values []*SecretValue
// Don't re-fetch if we already have the current version.
isCurrent, version, err := p.isCurrent(ctx, client, descriptor, curMap)
if err != nil {
return nil, err
}
// If version is current, read it back in, otherwise pull it down
var secret *SecretValue
if isCurrent {
secret, err = p.reloadSecret(descriptor)
if err != nil {
return nil, err
}
} else { // Fetch the latest version.
version, secret, err = p.fetchSecret(ctx, client, descriptor)
if err != nil {
return nil, err
}
}
values = append(values, secret) // Build up the slice of values
//Fetch individual json key value pairs based on jmesPath
jsonSecrets, jsonError := secret.getJsonSecrets()
if jsonError != nil {
return nil, jsonError
}
values = append(values, jsonSecrets...)
// Update the version in the current version map.
for _, jsonSecret := range jsonSecrets {
jsonDescriptor := jsonSecret.Descriptor
curMap[jsonDescriptor.GetFileName()] = &v1alpha1.ObjectVersion{
Id: jsonDescriptor.GetFileName(),
Version: version,
}
}
// Update the version in the current version map.
curMap[descriptor.GetFileName()] = &v1alpha1.ObjectVersion{
Id: descriptor.GetFileName(),
Version: version,
}
return values, nil
}