## This PR
adds support for unix sockets in sync service
### Related Issues
<!-- add here the GitHub issue that this PR resolves if applicable -->
Fixes#1518
### How to test
start flagd with the new option `-e /tmp/socketpath` and try to connect
with an in-process provider to the same socket path & request a flag
---------
Signed-off-by: Alexandra Oberaigner <alexandra.oberaigner@dynatrace.com>
Signed-off-by: alexandraoberaigner <82218944+alexandraoberaigner@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
⚠️ This PR brings a breaking change to the
[flagd-core](https://pkg.go.dev/github.com/open-feature/flagd/core)
library: the `IStore` interface now returns an additional value
representing the flag set metadata. There are no breaking changes in
flagd's behavior.
Changes in flagd:
- returns flag set metadata as metadata for error flags (best effort)
- returns flag set metadata in OFREP and RPC calls
- moves metadata merging logic to evaluator (all flags inherent flag set
metadata, but can override, as as before but now reusable in flagd core)
- removes duplicated flag set metadata keys when the same flag set
metadata key exists in multiple sources
### To Test
- requires `curl`, `grpcurl`, and `jq`
#### RPC
```shell
grpcurl -import-path /...../schemas/protobuf/flagd/evaluation/v1 -proto evaluation.proto -plaintext localhost:8013 flagd.evaluation.v1.Service/ResolveAll | jq
```
### OFREP
```shell
curl --location 'http://localhost:8016/ofrep/v1/evaluate/flags' --header 'Content-Type: application/json' --data '{"context": {"color": "yellow"}}' | jq
```
### Sync
```shell
grpcurl -import-path /...../schemas/protobuf/flagd/sync/v1/ -proto sync.proto -plaintext localhost:8015 flagd.sync.v1.FlagSyncService/FetchAllFlags | jq -r .flagConfiguration | jq
```
---------
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
update of spec for https://github.com/open-feature/flagd/issues/1504
---------
Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
updating specification based on findings in
https://github.com/open-feature/flagd/issues/1472
---------
Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>
Co-authored-by: chrfwow <christian.lutnik@dynatrace.com>
This PR contains significant enhancements to flagd provider specs. If
merged, I will be opening a bunch of issues to implement what's
described here based on recon I've been doing with the existing
implementations
Specifically:
- adds `retryGraceAttempts` param, which defines the amount of stream
retry attempts before provider moves from `STALE` to `ERROR` state
- adds `contextEnricher` param, which defines mapping function for
sync-metadata to evaluation context for in process providers (exists
already in Java provider)
- improves consistency between in-process and RPC stream reconnect
behavior
- simplifies provider doc and spec to remove duplication and improve
readability
---------
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Guido Breitenhuber <157148191+guidobrei@users.noreply.github.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Closes#1282
This PR adds support for using relative weights instead of percentages
that need to add up to 100.
The behavior for existing flag configs does not change with this PR, so
those will continue to work as they did previously
---------
Signed-off-by: Florian Bacher <florian.bacher@dynatrace.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Remove references to old protos, update `/schemas` submodule.
The old protos were still being used to generate the doc. I've updated
them. Also, the `schemas` submodule was set to some very old version, I
couldn't even run the live docs for that reason. I've updated it to the
latest release of that module.
---------
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
<!-- Please use this template for your pull request. -->
<!-- Please use the sections that you need and delete other sections -->
## This PR
<!-- add the description of the PR here -->
- no longer injects flagKey as seed for fractional op when user has
provided custom targeting
- updates schema to allow `cat` and other operations so that custom
targeting can be properly seeded
### Related Issues
<!-- add here the GitHub issue that this PR resolves if applicable -->
https://github.com/open-feature/flagd/issues/1264
### Notes
<!-- any additional notes for this PR -->
### Follow-up Tasks
<!-- anything that is related to this PR but not done here should be
noted under this section -->
<!-- if there is a need for a new issue, please link it here -->
### How to test
<!-- if applicable, add testing instructions under this section -->
```bash
# unit tests
make test
# gherkin tests
./bin/flagd start -f file:test-harness/flags/testing-flags.json -f file:test-harness/flags/custom-ops.json -f file:test-harness/flags/evaluator-refs.json -f file:test-harness/flags/zero-flags.json
make flagd-integration-test
```
---------
Signed-off-by: Cole Bailey <cole.bailey@deliveryhero.com>
Signed-off-by: Cole Bailey <cole.bailey.one@gmail.com>
Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
## This PR
- adds redirects to appropriate OFO docs
- adds an OFO overview page
### Related Issues
Fixes#1055
### Notes
This PR removes most of the OFO docs so that we only have to maintain
content in a single location. In the future, it would be ideal if we
could include relative content automatically in the flagd docs, but that
was out of scope of this PR.
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
- returning variants from targeting which are not in the variants list is now an error
- minor spec changes
---------
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
BREAKING CHANGE: OFO APIs were updated to version v1beta1, since they are more stable now. Resources of the alpha versions are no longer supported in flagd or flagd-proxy.
I was looking into what we could do to improve our indexing and social
object graph. I don't think there's much except adding
meta-descriptions. These aren't as important as they used to be, but
they can still improve indexing and increase likelihood of sharing on
social media, etc.
Adding a markdown metadata section with `description` in mkdocs results
in it being used in the description meta tag for the page, so I've done
that for some pages that are likely to be searched.
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
## This PR
- reworked to autogenerated docs to resolve a relative path issue
- fixed invalid links
- fixed various typos
### How to test
Run `make run-web-docs` and look at the squeaky clean output.
---------
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
## This PR
- remove RPC section from the in-process docs
- addressed various grammatical issues
---------
Signed-off-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Total web-docs overhaul:
- puts a helpful intro at the start, with a demo on the next page
- adds an "architecture" page which discusses in-process vs rpc
- adds a deployment page with mentions how to install/run
- adds a "reference" section which includes:
- specs
- protos (in the form of autogenerated markdown for easy navigation)
- autogenerated CLI docs
- adds FAQ
---------
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>