From 72226aa29d1f5a1c665377c19f648050ff79aa28 Mon Sep 17 00:00:00 2001 From: priyawadhwa Date: Wed, 4 May 2022 11:10:10 -0700 Subject: [PATCH] Add function to explictly request a certain provider (#1837) Signed-off-by: Priya Wadhwa --- pkg/providers/all/all.go | 5 +++-- pkg/providers/interface.go | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/providers/all/all.go b/pkg/providers/all/all.go index 2d2371676bb..de82b4bae1d 100644 --- a/pkg/providers/all/all.go +++ b/pkg/providers/all/all.go @@ -27,6 +27,7 @@ import ( // Alias these methods, so that folks can import this to get all providers. var ( - Enabled = providers.Enabled - Provide = providers.Provide + Enabled = providers.Enabled + Provide = providers.Provide + ProvideFrom = providers.ProvideFrom ) diff --git a/pkg/providers/interface.go b/pkg/providers/interface.go index 8ed4f1eaefe..f89aa855da4 100644 --- a/pkg/providers/interface.go +++ b/pkg/providers/interface.go @@ -83,3 +83,15 @@ func Provide(ctx context.Context, audience string) (string, error) { } return id, err } + +// ProvideFrom fetches the specified provider +func ProvideFrom(ctx context.Context, provider string) (Interface, error) { + m.Lock() + defer m.Unlock() + + p, ok := providers[provider] + if !ok { + return nil, fmt.Errorf("%s is not a valid provider", provider) + } + return p, nil +}