func()

in controllers/blobstore/chain/crete_s3_blobstore.go [120:156]


func (c *CreateS3BlobStore) s3BucketSecurityToS3Blobstore(
	ctx context.Context,
	s3BucketSecuritySpec *nexusApi.S3BucketSecurity,
	namespace string,
) (*blobstore.S3BucketSecurity, error) {
	bucketSecurity := &blobstore.S3BucketSecurity{
		AccessKeyID:     "",
		Role:            s3BucketSecuritySpec.Role,
		SecretAccessKey: "",
		SessionToken:    "",
	}

	accessKeyID, err := helper.GetValueFromSourceRef(ctx, &s3BucketSecuritySpec.AccessKeyID, namespace, c.k8sClient)
	if err != nil {
		return nil, fmt.Errorf("failed to get access key ID: %w", err)
	}

	bucketSecurity.AccessKeyID = accessKeyID

	secretAccessKey, err := helper.GetValueFromSourceRef(ctx, &s3BucketSecuritySpec.SecretAccessKey, namespace, c.k8sClient)
	if err != nil {
		return nil, fmt.Errorf("failed to get secret access key: %w", err)
	}

	bucketSecurity.SecretAccessKey = secretAccessKey

	if s3BucketSecuritySpec.SessionToken != nil {
		sessionToken, err := helper.GetValueFromSourceRef(ctx, s3BucketSecuritySpec.SessionToken, namespace, c.k8sClient)
		if err != nil {
			return nil, fmt.Errorf("failed to get session token: %w", err)
		}

		bucketSecurity.SessionToken = sessionToken
	}

	return bucketSecurity, nil
}