func()

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
}