New multi-router configuration system based on https://hackmd.io/G1KRDEX5T3qyfoBMkIrBew#Methods
- Added a new routing type: "custom"
- Added specific struct types for different Routers (instead of map[string]interface{})
- Added `Duration` config type, to make easier time string parsing
- Added config documentation.
- Use the latest go-delegated-routing library version with GET support.
- Added changelog notes for this feature.
It:
- closes#9157
- closes#9079
- closes#9186
* Delegated Routing.
Implementation of Reframe specs (https://github.com/ipfs/specs/blob/master/REFRAME.md) using go-delegated-routing library.
* Requested changes.
* Init using op string
* Separate possible ContentRouters for TopicDiscovery.
If we don't do this, we have a ciclic dependency creating TieredRouter.
Now we can create first all possible content routers, and after that,
create Routers.
* Set dht default routing type
* Add tests and remove uneeded code
* Add documentation.
* docs: Routing.Routers
* Requested changes.
Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
* Add some documentation on new fx functions.
* Add changelog entry and integration tests
* test: sharness for 'dht' in 'routing' commands
Since 'routing' is currently the same as 'dht' (minus query command)
we need to test both, that way we won't have unnoticed divergence
in the default behavior.
* test(sharness): delegated routing via reframe URL
* Add more tests for delegated routing.
* If any put operation fails, the tiered router will fail.
* refactor: Routing.Routers: Parameters.Endpoint
As agreed in https://github.com/ipfs/kubo/pull/8997#issuecomment-1175684716
* Try to improve CHANGELOG entry.
* chore: update reframe spec link
* Update go-delegated-routing dependency
* Fix config error test
* use new changelog format
* Remove port conflict
* go mod tidy
* ProviderManyWrapper to ProviderMany
* Update docs/changelogs/v0.14.md
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
* remove the EnableRelayHop option in the SwarmConfig
* add an option to disable the limited relay
* make the relay service resources configurable
* refactor: use custom types
This enables us to swap defaults in go-ipfs without touching the config
file generated during `ipfs init`
https://github.com/ipfs/go-ipfs-config/pull/146#discussion_r734728162https://github.com/ipfs/go-ipfs-config/pull/146#discussion_r734728019
* use OptionalDuration in RelayService configuration
* fix: *OptionalInteger with omitempty
This removes null values from the config
* fix: Flag does not need to be a pointer
* refactor: flatten RelayService limits
this simplifies consumer code and removes nil footgun
* docs: clarify different relay types
* feat: flag for ForceReachability mode in libp2p (#150)
adds Internal.Libp2pForceReachability
needed for sharness tests in ipfs/go-ipfs#8522
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
* feat: make it possible to define optional durations
* test: empty/default optional durations
does not crash if user restores default value and sets it to empty string ""
* refactor: use null in JSON
* refactor(duration): use JSON null as the default
Rationale:
https://github.com/ipfs/go-ipfs-config/pull/148#discussion_r736975879
* refactor: Duration → OptionalDuration
This makes it possible to use OptionalDuration with `json:",omitempty"`
so the null is not serialized to JSON, and get working WithDefault as well.
Co-authored-by: Marcin Rataj <lidel@lidel.org>