Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement multi provider #645

Draft
wants to merge 24 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
089c098
feat(multi-provider): set up multi-provider directory
bbland1 Feb 21, 2025
b8275df
feat: set up func to create new multiprovider & register passed provi…
bbland1 Feb 22, 2025
6ef2dd8
feat: added Metadata Method to the multiprovider
bbland1 Feb 22, 2025
63a5300
feat: added the based of the Init method that will process the inital…
bbland1 Feb 25, 2025
ac9ab37
moved providers into pkg directory
bbland1 Feb 26, 2025
65e2f04
added Init method to handle any providers with intialization
bbland1 Feb 27, 2025
dd933fb
added the Shutdown method
bbland1 Feb 27, 2025
32af790
added getter methods to the unexported fields
bbland1 Feb 28, 2025
c6aaf74
added tests to check unique name for providers passed
bbland1 Feb 28, 2025
70878e5
added test checking if error thrown for unique name if not unique
bbland1 Mar 1, 2025
d5f3d6a
added test to check for metadata, currently fails
bbland1 Mar 4, 2025
a3ba348
added test for getter methods of the struct provider entries
bbland1 Mar 5, 2025
efa68b9
chore(flagd): Updates flagd core to v0.11.2 (#636)
cupofcat Feb 22, 2025
0ac6343
feat(flagd): Added WithGrpcDialOptionsOverride provider option (#638)
cupofcat Feb 22, 2025
270f5e5
chore(main): release providers/flagd 0.2.6 (#635)
github-actions[bot] Feb 22, 2025
0067b34
fix(deps): Remove dependency on sigs.k8s.io/controller-runtime/pkg/lo…
toddbaert Feb 28, 2025
4e259c6
chore(go-feature-flag): Support new hook format (#641)
thomaspoignant Mar 5, 2025
e225fbd
chore(main): release providers/go-feature-flag 0.2.4 (#643)
github-actions[bot] Mar 5, 2025
ac2f314
added test for MP Init method with mock providers that have Init methods
bbland1 Mar 7, 2025
2d6f44b
added shutdown test confirming method run in MP when called
bbland1 Mar 7, 2025
11abc28
added the empty bases of the evaluations and hooks methods
bbland1 Mar 9, 2025
1939205
added test for init errors by a provider and reduced the mock provide…
bbland1 Mar 9, 2025
fede2c6
removed memprovider since NewTestProvider uses it
bbland1 Mar 9, 2025
9a96d94
added metadata aggregate to the method and updated test to properly use
bbland1 Mar 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"hooks/open-telemetry": "0.3.4",
"hooks/validator": "0.1.6",
"providers/configcat": "0.2.1",
"providers/flagd": "0.2.5",
"providers/flagd": "0.2.6",
"providers/flipt": "0.1.3",
"providers/from-env": "0.1.5",
"providers/go-feature-flag": "0.2.3",
"providers/go-feature-flag": "0.2.4",
"providers/gcp": "0.0.1",
"providers/flagsmith": "0.1.4",
"providers/launchdarkly": "0.1.5",
Expand All @@ -15,5 +15,6 @@
"providers/ofrep": "0.1.5",
"providers/prefab": "0.0.2",
"tests/flagd": "1.4.1",
"providers/go-feature-flag-in-process": "0.1.0"
"providers/go-feature-flag-in-process": "0.1.0",
"providers/multi-provider": "0.0.2"
}
17 changes: 17 additions & 0 deletions providers/flagd/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [0.2.6](https://github.com/open-feature/go-sdk-contrib/compare/providers/flagd/v0.2.5...providers/flagd/v0.2.6) (2025-02-22)


### 🐛 Bug Fixes

* **flagd:** Fixed possible nil pointer exception with svcMetadata in service.go ([#634](https://github.com/open-feature/go-sdk-contrib/issues/634)) ([50256e9](https://github.com/open-feature/go-sdk-contrib/commit/50256e9af89201ca09f3989161afd5a069d3a06e))


### ✨ New Features

* **flagd:** Added WithGrpcDialOptionsOverride provider option ([#638](https://github.com/open-feature/go-sdk-contrib/issues/638)) ([fe904bb](https://github.com/open-feature/go-sdk-contrib/commit/fe904bb054be86ca8e1cafa8577e8ac152dfefc8))


### 🧹 Chore

* **flagd:** Updates flagd core to v0.11.2 ([#636](https://github.com/open-feature/go-sdk-contrib/issues/636)) ([99d1a0c](https://github.com/open-feature/go-sdk-contrib/commit/99d1a0c9d206102774c8a83b2f40e2a33b29309f))

## [0.2.5](https://github.com/open-feature/go-sdk-contrib/compare/providers/flagd/v0.2.4...providers/flagd/v0.2.5) (2025-02-18)


Expand Down
21 changes: 21 additions & 0 deletions providers/flagd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,27 @@ openfeature.SetProvider(flagd.NewProvider(
))
```

### gRPC DialOptions override

The `GrpcDialOptionsOverride` is meant for connection of the in-process resolver to a Sync API implementation on a host/port,
that might require special credentials or headers.

```go
creds := customSync.CreateCredentials(...)

dialOptions := []grpc.DialOption{
grpc.WithTransportCredentials(creds.TransportCredentials()),
grpc.WithPerRPCCredentials(creds.PerRPCCredentials()),
grpc.WithAuthority(...),
}

openfeature.SetProvider(flagd.NewProvider(
flagd.WithInProcessResolver(),
flagd.WithHost("example.com/flagdSyncApi"), flagd.WithPort(443),
flagd.WithGrpcDialOptionsOverride(dialOptions),
))
```

## Supported Events

The flagd provider emits `PROVIDER_READY`, `PROVIDER_ERROR` and `PROVIDER_CONFIGURATION_CHANGED` events.
Expand Down
34 changes: 9 additions & 25 deletions providers/flagd/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,47 +7,39 @@ toolchain go1.23.6
require (
buf.build/gen/go/open-feature/flagd/connectrpc/go v1.17.0-20240906125204-0a6a901b42e8.1
buf.build/gen/go/open-feature/flagd/grpc/go v1.5.1-20250127221518-be6d1143b690.2
buf.build/gen/go/open-feature/flagd/protocolbuffers/go v1.36.4-20250127221518-be6d1143b690.1
buf.build/gen/go/open-feature/flagd/protocolbuffers/go v1.36.5-20250127221518-be6d1143b690.1
connectrpc.com/connect v1.18.1
connectrpc.com/otelconnect v0.7.1
github.com/cucumber/godog v0.15.0
github.com/go-logr/logr v1.4.2
github.com/google/go-cmp v0.6.0
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/open-feature/flagd/core v0.11.1
github.com/open-feature/flagd/core v0.11.2
github.com/open-feature/go-sdk v1.11.0
github.com/open-feature/go-sdk-contrib/tests/flagd v1.4.1
go.uber.org/mock v0.5.0
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac
golang.org/x/net v0.34.0
google.golang.org/grpc v1.70.0
google.golang.org/protobuf v1.36.4
sigs.k8s.io/controller-runtime v0.19.0
google.golang.org/protobuf v1.36.5
)

require (
github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df // indirect
github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect
github.com/cucumber/messages/go/v21 v21.0.1 // indirect
github.com/diegoholiveira/jsonlogic/v3 v3.7.3 // indirect
github.com/diegoholiveira/jsonlogic/v3 v3.7.4 // indirect
github.com/fsnotify/fsnotify v1.8.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-logr/zapr v1.3.0 // indirect
github.com/gofrs/uuid v4.3.1+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
github.com/hashicorp/go-memdb v1.3.4 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/open-feature/flagd-schemas v0.2.9-0.20250127221449-bb763438abc5 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
Expand All @@ -57,17 +49,9 @@ require (
go.opentelemetry.io/otel/metric v1.34.0 // indirect
go.opentelemetry.io/otel/trace v1.34.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/mod v0.22.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/mod v0.23.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/text v0.22.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apimachinery v0.31.4 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
)
Loading
Loading