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

New Feature - Merge configuration files #296

Closed
AaronFixer opened this Issue Mar 29, 2018 · 6 comments

Comments

Projects
None yet
2 participants
@AaronFixer
Copy link

AaronFixer commented Mar 29, 2018

Expected Behavior / New Feature

This may already be a feature but I see no mention of it in the documentation and it isn't working in my project.

It would be good to support multiple .json files, potentially with better naming conventions. I have an app with a number of services and routes, and it would be nice to separate them out into dedicated files rather then have one huge configuration.json.

For example:

  • AccountRoutes.json <- Would have all routes for the account controller/service
  • ComponentActions.json <- Would have all the routes for component actions controller/service

etc. etc.

Is this already possible? It seems that when I define multiple .AddJsonFile() it only picks up the routes in the last file it pinks up with the ReRoutes field.

@AaronFixer AaronFixer changed the title Supporting multiple *.json files? Supporting multiple json route files? Mar 29, 2018

@TomPallister TomPallister changed the title Supporting multiple json route files? New Feature - Merge configuration files Mar 29, 2018

@TomPallister

This comment has been minimized.

Copy link
Member

TomPallister commented Mar 29, 2018

@AaronFixer thanks for your interest in the project!

This feature isn't supported yet I will but it on the backlog but if you would like to have a go yourself please feel free to submit a PR.

There are a couple of considerations here.

  1. Ocelot uses configuration.json as a database so a solution would need to take multiple files and merge them into configuration.json or have a second file that ocelot uses as a database (not sure I like this).

  2. Been thinking about this for a while completely change how configuration works. I was thinking of making it more like identity server where it is provided statically in c# / database.

  3. You could just do this yourself in ConfigureAppConfiguration with something like below and it would not need to be part of Ocelot.

.ConfigureAppConfiguration((hostingContext, config) =>
                {
                    merger.Merge();
      
                    config
                        .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
                        .AddJsonFile("configuration.json");
                })

I think 1 and 3 are better options at the moment for me but that could change!

Anyway let me know if you want to give this a try and I will be of as much assistance as I can...otherwise I'm afraid you will have to wait a bit for the feature :(

@AaronFixer

This comment has been minimized.

Copy link

AaronFixer commented Mar 29, 2018

For me this is definitely something I think I (and many others) could potentially benefit from with large projects wanting to use a Gateway!

I'll have to do this in my spare time, although I don't imagine it should take too long.

1 and 3 both work. 3 is something I could just use for the time being as a workaround. I'll see if I get a chance to work on a PR for 1. in the meantime.

Thanks for getting back to me!

@TomPallister

This comment has been minimized.

Copy link
Member

TomPallister commented Mar 29, 2018

Yep I agree this would be a useful feature! If you don't get round to it its on my list and I expect to do it in the next months or so.

TomPallister pushed a commit that referenced this issue Apr 15, 2018

TomPallister pushed a commit that referenced this issue Apr 15, 2018

TomPallister pushed a commit that referenced this issue Apr 15, 2018

Tom Gardham-Pallister

TomPallister pushed a commit that referenced this issue Apr 16, 2018

TomPallister pushed a commit that referenced this issue Apr 17, 2018

Tom Gardham-Pallister

TomPallister pushed a commit that referenced this issue Apr 17, 2018

Tom Pallister

TomPallister added a commit that referenced this issue Apr 17, 2018

Feature/merge configuration files (#316)
* #296 renamed configuration.json to ocelot.json in preparation

* removed things we dont need for tests

* another file we dont need

* removed some async we dont need

* refactoring to consolidate configuration code

* removed another pointless abstraction

* #296 started writing merge code

* #296 coming up with ideas for this config merging

* #296 still hacking this idea around

* #296 will now do a crappy merge on the configuration

* #296 change so tests pass on windows

@TomPallister TomPallister reopened this Apr 17, 2018

@TomPallister

This comment has been minimized.

Copy link
Member

TomPallister commented Apr 17, 2018

@AaronFixer Ive merged a change that lets you have multiple configuration files..the docs for this are here. Can you let me know if you have any suggestions or this meets you use case before I release the change to NuGet?

@AaronFixer

This comment has been minimized.

Copy link

AaronFixer commented Apr 18, 2018

@TomPallister Sorry for not doing this myself, I got caught up with the project I'm working on and didn't get a chance to look into this.

I'll definitely take a look at the changes and provide some feedback ASAP! Thank you.

TomPallister pushed a commit that referenced this issue Apr 18, 2018

Tom Pallister
@TomPallister

This comment has been minimized.

Copy link
Member

TomPallister commented Apr 19, 2018

@AaronFixer no worries, Ive just released this in 5.5.3, hopefully its OK, if not let me know and re-open issue!

Fisher-Joe pushed a commit to MicroServiceFrameworks/Ocelot that referenced this issue Jun 14, 2018

Joe
udpate from source (#1)
* Feature/fix ThreeMammals#156 (ThreeMammals#160)

* change config creator to not throw exception in there is an error......lord i hate this config creator code I need to sort it out.

* Remove method that we are not using anymore..

* throw exception and add errors to message

* train hacking and some refactoring

* bs test for code coverage

* actually return the errors in the exception

* Implement mapping of HttpResponseMessage to CachedResponse to fix ThreeMammals#152 (ThreeMammals#153)

* changed name to cache options to fix issue ThreeMammals#146

* Add acceptance test that exposes JSON deserialization bug from issue ThreeMammals#146

- Create InMemoryJsonHandle for CacheManager that mimics DictionaryHandle but uses ICacheSerializer to serialize/deserialize values instead of saving references
- Add CacheManager.Serialization.Json package
- Add StartupWithCustomCacheHandle class that extends Startup and overrides ConfigureServices to register InMemoryJsonHandle
- Add GivenOcelotIsRunningUsingConsulToStoreConfigAndJsonSerializedCache method to initiate Ocelot with StartupWithCustomCacheHandle
- Add test should_return_response_200_with_simple_url_when_using_jsonserialized_cache

* Create Acceptance test that exposes issue ThreeMammals#152

- Add GivenOcelotIsRunningUsingJsonSerializedCache() that initializes Ocelot with InMemoryJsonHandle
- Add should_return_cached_response_when_using_jsonserialized_cache test

* Change Consul port to 9502 on should_return_response_200_with_simple_url_when_using_jsonserialized_cache() test

* Implement mapping of HttpResponseMessage to CachedResponse to enable distributed caching

- Add CachedResponse class that holds HttpResponse data
- Add mapping methods in OutputCacheMiddleware to create HttpResponseMessage from CachedResponse and vice versa
- Replace HttpResponseMessage with CachedResponse in services registrations
- Replace HttpResponseMessage with CachedResponse in OutputCacheController's IOcelotCache

* Fix unit tests for OutputCacheMiddleware and OutputCacheController by replacing HttpResponseMessage with CachedResponse

* Add .editorconfig with default identation settings (spaces with size 4)

* Re-format broken files with new identation settings

* Add Startup_WithConsul_And_CustomCacheHandle class

- Use Startup_WithConsul_And_CustomCacheHandle in GivenOcelotIsRunningUsingConsulToStoreConfigAndJsonSerializedCache step

* Do minor cleanups

- Rename StartupWithCustomCacheHandle to Startup_WithCustomCacheHandle for better readability
- Remove cachemanager settings Action in Startup since it is not used anymore

* Drop Task in CreateHttpResponseMessage - unnecessary overhead

* Make setters private in CachedResponse

- Rework CreateCachedResponse to use new CachedResponse constructor

* Feature/docs (ThreeMammals#165)

* initial readthedocs commit

* docs moved to sphinx / rst / read the docs

* updated gitignore

* Update README.md

* changed docs

* Update README.md

* should return when error

* added more docs around authentication

* images for docs

* correct path for images

* demonstrate issue ThreeMammals#169

* add file configuration fluent validation and change default configura… (ThreeMammals#168)

* add file configuration fluent validation and change default configuration validator to fluent validator

* add file validation failed error code

* change authentication schemes check to async

* beautify the code ^_^

* clean file validation and fix test failure.

* Feature/fix build always reporting green (ThreeMammals#173)

* added last exit code to wrapper scripts

* try force fail

* ooops missed ;

* trying again

* fail build with bad test

* removed exception

* removed using

* Feature/more validation (ThreeMammals#174)

* added message assertion for validation test

* another message assertion

* more validation tests

* change to make test pass for issue 171

* ThreeMammals#177 - optimise the build scripts (ThreeMammals#178)

* Remove explicit restore, and don't rebuild during tests.

This currently fails because the release config doesn't contain symbols needed by opencover.

* Build unit tests in debug

Turns out that for test coverage we need to have debug symbols.

* Raft round 2 (ThreeMammals#182)

* brought in rafty

* moved raft classes into Ocelot and deleted from int project

* started to set up rafty in Ocelot

* RAFTY INSIDE OCELOT...WOOT

* more work adding rafty...just need to get auth working now

* rudimentary authenticated raft requests working

* asyn await stuff

* hacked rafty into the fileconfigurationcontroller...everything seems to be working roughly but I have a lot of refactoring to do

* updated to latest rafty that doesnt need an id

* hacky but all tests passing

* changed admin area set up to use builder not configuration.json, changed admin area auth to use client credentials

* missing code coverage

* ignore raft sectionf for code coverage

* ignore raft sectionf for code coverage

* back to normal filters

* try exclude attr

* missed these

* moved client secret to builder for authentication and updated docs

* lock to try and fix error accessing identity server created temprsa file on build server

* updated postman scripts and changed Ocelot to not always use type handling as this looked crap when manually accessing the configuration endpoint

* added rafty docs

* changes I missed

* added serialisation code we need for rafty to process commands when they proxy to leader

* moved controllers into their feature slices

* changes to add new feature to url routing (ThreeMammals#186)

* Changed routing to support a catch all style

* refactoring placeholder tuff

* implemented simple priority in the routing

* Changed routing to support a catch all style (ThreeMammals#187)

* Changed routing to support a catch all style

* refactoring placeholder tuff

* implemented simple priority in the routing

* Feature/fix ThreeMammals#185 round 2 (ThreeMammals#188)

* Changed routing to support a catch all style

* refactoring placeholder tuff

* implemented simple priority in the routing

* Improving logging and request id (ThreeMammals#189)

* hacking around to work out why logging and request id isnt working

* pass request id into logger so it can be structured, removed a bunch of debug logging we dont need because diagnostic trace gets it

* changed config dependency

* always have tracing available

* made it so we dont need to pass config into services.AddOcelot anymore with .net core 2.0

* add test

* lots of changes relating to logging and request ids, also updated documentation

* fixed failing test i missed

* fixed issu where if service dropped out then leastconnection would not pick it up again (ThreeMammals#195)

* Update routing.rst (ThreeMammals#193)

lack of ":"

* Feature/fix ThreeMammals#194 (ThreeMammals#196)

* added failing acceptance test

* added validation for double slash in upstream and downstream path templates

* this isnt used

* passing test for issue (ThreeMammals#197)

* passing test for issue

* fix test when run together

* Can't set StatusCode after Response has started (ThreeMammals#200)

* fixed log message (ThreeMammals#202)

* Can't set StatusCode after Response has started

* fixed log message

* fix/ThreeMammals#98 - command line build on mac (ThreeMammals#203)

* Cake v0.25.0; git ignore .idea/ directory

* revert cake to upstream

* revert src/Ocelot/Middleware/OcelotMiddlewareExtensions.cs

* comments

* Feature/transform headers (ThreeMammals#204)

* New feature that lets a user do find and replace on an upstream header

* can transform downstream and upstream headers, not sure if interface is good

* can replace location header with placeholder

* added some syntax

* downstreambaseurl placeholder for multiple location value redirects (ThreeMammals#207)

* hacked together load balancing reroutes in fileconfig (ThreeMammals#211)

* hacked together load balancing reroutes in fileconfig

* some renaming and refactoring

* more renames

* hacked away the old config json

* test for issue 213

* renamed key

* dont share ports

* oops

* updated docs

* mvoed docs around

* port being used

* +semver: breaking

* forgot this

* fix: LF for linux scripts (.sh) (ThreeMammals#215)

* Feature/issue 209 upstream host based routing (ThreeMammals#216)

* from messing around at lunch...initial hacking seems to sort of work..need to think of all the test scenarios

* drunken train hacking

* docs for upstreamhost

* fix for ThreeMammals#214 and some tests for the class it was in but not for the error (cant be arsed to test as have to spin up IIS) (ThreeMammals#218)

* Update README.md

* checking what happens on app veyor

* updated cake script for windows

* Monitoring (ThreeMammals#219)

* feat:  use Https://github.com/ButterflyAPM to monitor each API request monitoring metrics

* feat: using DiagnosticSource and Butterfly.OpenTracing

* refactor:refactor Ocelot tracing, merge code into OcelotDiagnosticListener

* refactor: move OcelotHttpTracingHandler to Requester

* fix: Requester\HttpClientBuilder.cs(10,14): error CS0234: The type or namespace name 'Tracing' does not exist in the namespace

* feat: add test should_set_up_tracing

* feat : Remove extraneous code

* feat: remove unused DiagnosticSource diagnostic

* fix : test UseTracing

* add test should_call_scoped_data_repository_QosProviderError

* add test should_return_any_errors

* add test HttpClientHttpRequesterTest

*  it should keep it can not be deleted

* Feature/expose http handlers (ThreeMammals#224)

* temp commit

* trying to work out how to expose the http handlers in a decent way..

* pissing about at lunch

* changed to func so you can instanciate object or new it up each time

* docs for dele handlers

* upgraded to sdk 2.1.4

* some validation for consul services

* added tracing to some routes

* updated docs for tracing

* messing around (ThreeMammals#230)

* Feature/use any id server for admin area (ThreeMammals#232)

* initial commits around using any id servers

* add your own id server for admin area

* lots of refactoring, now instead of injecting IWebHostBuilder we just set the Ocelot base url as a configuration extension method..this means people can pass it in on the command line aswell as hardcode which is OK I guess, also can now use your own IdentityServer to authenticate admin area

* updated docs for ThreeMammals#231

* some tests that hopefully bump up coverage

* +semver: feature

* Feature/base url in config (ThreeMammals#234)

* started moving baseurl to config issue 233

* fixed test

* tests showing how this could work (ThreeMammals#241)

* tests showing how this could work

* test passing

* test needs work

* skip test as doesnt really do anything

* Feature/fix ThreeMammals#240 (ThreeMammals#243)

* testing issue on train

* check multiple claims of the same type for authorisation

* Add stylecop analyzers with default ruleset

* Disable all but the least contentious rules

* ThreeMammals#245 ignored raft tests for now as a bit unstable

* Feature/downstream aggregation (ThreeMammals#248)

* started messing around with this on the train last night

* mega hacking away to change middleware into Ocelot iddleware

* scoped data repo back in

* broken commit getting tests working

* another broken commit farting around with tests

* all unit tests passing again

* mw pipeline for ocelot...still loads of hacks but getting there now to get acceptance tests working, then fix config so you can have aggregate and then imlement multiplexer, then mapping to response...loads to do

* all tests passing before aggregation feature implemented

* removed all the request middleware stuff we dont need it

* updated how errors work...tho i think there could be edge case here when aggregating because one downstream could error and this would effect another

* removed multiplexer so you dont have to send route down, this isnt very thread safe...sigh

* hacking around getting the config for aggregates in, this might change

* refactored builder and unit tests passing now

* Updated a bunch of ports for tests

* plugged in code to create reroutes that are aggregates

* made multiplexer a class

* hacked test to death

* simple aggregator done, initial validation done

* removed request id from context, it is still specific for http request

* now aggregates to json always

* docs for aggregate reroutes

* Updated docs

* docs for multiple environments (ThreeMammals#250)

* added basic rate limiting docs (ThreeMammals#251)

* Feature/ThreeMammals#246 (ThreeMammals#252)

* failing test

* failing test but needs real butterfly server running..need to fix that...also worked out ive broken tracing...yey

* brought in butterfly source code so i can work out how to write acceptance tests for this...

* fixed the bug but still need to fix tracing

* tracing working again across services but need to make tracing hook into new Ocelot middleware as it still uses asp.net middleware

* removed butterfly libs brought in for testing

* added logo to project

* Create ISSUE_TEMPLATE.md

* Create ULL_REQUEST_TEMPLATE.md

* Create CODE_OF_CONDUCT.md (ThreeMammals#254)

* Create CONTRIBUTING.md

* Update README.md

* Rename ULL_REQUEST_TEMPLATE.md to PULL_REQUEST_TEMPLATE.md

* Update CONTRIBUTING.md

* Update README.md

* Update README.md

* Fix brace line spacing and remove multiple concurrent whitespace characters

SA1025, SA1505, SA1508, SA-1509, SA1513

* Remove blank lines at start/end of files

SA1517, SA1518

* Remove multiple concurrent blank lines

SA1507

* Fix multiple statements on single line

SA1107

* Fix single-line comment spacing

SA1512, SA1515

* Fix else statement spacing

SA1510

* Fix file names to match class names

SA1649

* Fix various violations

SA1216, CS0105, CS0169, CS0414, CS0649

* Turn off a few more rules

* Make Ocelot work with service fabric DNS and naming service for guest exe and stateless (ThreeMammals#242)

* test for issue

* added service fabric sample

* working!!

* changed sample naming to Ocelot

* removed files we dont need

* removed files we dont need

* updated sample gitignore

* updated sample gitignore

* getting ocelot to work with service fabric using the reverse proxy

* ThreeMammals#238 - added support for service fabric discovery provider, proxies requests through naming service, wont work on partioned service fabric services yet

* ThreeMammals#238 - Manually tested service fabric using sample..all seems OK. Made some changes after testing, added docs

* ThreeMammals#238 - added docs for servic fabric

* ThreeMammals#238 support passing statefull service headers to service fabric naming service

* ThreeMammals#238 updated readme

* ThreeMammals#238 - updated readme

* Added service fabric to big picture in docs

* updated not supported with reasons why Ocelot doesnt support swagger (ThreeMammals#258)

* Fix async/await warnings

* Fix remaining CS0649 violations

* Turn some of the rules back on.

* ThreeMammals#263 map all content specific headers to downstream request content property, make sure we dont map them to request specific headers, added a gzip encoding acceptance test (ThreeMammals#267)

* Delegating Handlers from container (ThreeMammals#266)

* ThreeMammals#259 quickly hacked poc for this together, needs tidying up maybe

* ThreeMammals#266 +semver: breaking removed adding delegating handler funcs directly...i feel from container is enough

* Feature/re route specific handlers (ThreeMammals#269)

* ThreeMammals#264 added handlers to config

* ThreeMammals#264 added global handlers object and defaut param for method, not sure this is correct api for users yet

* ThreeMammals#264 Can now add all sorts of delegating handlers in all sorts of ways

* +semver: breaking ThreeMammals#264

* ThreeMammals#264 missed this docs change

* ThreeMammals#270 exposed ReRoute priority (ThreeMammals#272)

* ThreeMammals#271 Added some extra logging (ThreeMammals#276)

* ThreeMammals#271 Added some extra logging

* ThreeMammals#271 formatting

* Squash some warnings (ThreeMammals#278)

* squash SA1649 warnings (file/type name mismatch)

* squash SA1127 warnings (generic constraint on own line)

* squash SA1507 warnings (multiple blank lines)

* squash package analysis warnings re: summary text

It's not actually possible to provide a summary right now as per
NuGet/Home#4587

* squash missing castle.core reference warning

* squash obsolete method warnings re: AddOcelotBaseUrl

* Feature/ThreeMammals#274 (ThreeMammals#281)

* ThreeMammals#274 added acceptance tests, need to work out failing unit tests but probably going to be a redesign where we hold a reference to the cookie container and empty it if needed

* ThreeMammals#274 updated code coverage value

* ThreeMammals#274 offloaded cache logic to builder in preparation for adding state

* ThreeMammals#274 hacked something together but this is not right approach

* ThreeMammals#274 updated defaults and docs

* ThreeMammals#274 updated code coverage

* ThreeMammals#268 fix flakey acceptance test (ThreeMammals#282)

* ThreeMammals#268 added waiter to test, altho i wasn't able to replicate flakeyness with wait anyway! Hopefully this will be solid now!

* ThreeMammals#268 fixed a warning

* ThreeMammals#268 more code coverage

* Feature/ThreeMammals#52 (ThreeMammals#283)

* ThreeMammals#52 test circle ci

* ThreeMammals#52 nicked some lads cake script

* ThreeMammals#52 put the mac build script back

* ThreeMammals#52 trying another lads circle CI thing doesnt use cake

* ThreeMammals#52 added test steps

* ThreeMammals#52 ports for linux build

* ThreeMammals#52 try travis mac build

* ThreeMammals#52 dont use build script

* ThreeMammals#52 dont use build script

* ThreeMammals#52 acceptance and int tests dont really work on mac...v strange?

* ThreeMammals#52 unique port for linux tests

* ThreeMammals#52 increase code coverage

* ThreeMammals#52 try using cake on linux for travis

* ThreeMammals#52 try using cake for mac and linux on travis

* ThreeMammals#52 dont run the acceptance and int tests on mac

* ThreeMammals#52 build.sh has lf line endings

* ThreeMammals#52 turns out crlf is OK for cake file..sigh

* ThreeMammals#52 not sure what return does in cake so wrapped in if just to see

* ThreeMammals#52 try use travis to work not run on mac

* ThreeMammals#52 dont need these references

* ThreeMammals#52 wrong property

* ThreeMammals#52 remove circle ci for linux and just use travis for all

* ThreeMammals#52 remove circle ci script

* ThreeMammals#280 Add headers to response (ThreeMammals#286)

* ThreeMammals#280 can now add response headers inc trace id, now need to consolidate the header place holder stuff

* ThreeMammals#280 changed port for linux tests

* ThreeMammals#280 lots of hacking around to handle errors and consolidate placeholders into one class

* ThreeMammals#289 fix for issue where I was not preserving original query string when more than one query with same name (ThreeMammals#290)

* Fix typo projct (ThreeMammals#291)

* Fix typo (ThreeMammals#292)

* Middleware  Invoke multi parameters (ThreeMammals#288)

* Update README.md

* Feature/websockets (ThreeMammals#273)

* ThreeMammals#212 - hacked websockets proxy together

* faffing around

* ThreeMammals#212 hacking away :(

* ThreeMammals#212 websockets proxy middleware working

* ThreeMammals#212 map when for webockets working

* ThreeMammals#212 some test refactor

* ThreeMammals#212 temp commit

* ThreeMammals#212 websockets proxy working, tests passing...need to do some tidying and write docs

* ThreeMammals#212 more code coverage

* ThreeMammals#212 docs for websockets

* ThreeMammals#212 updated readme

* ThreeMammals#212 tidying up after websockets refactoring

* ThreeMammals#212 tidying up after websockets refactoring

* ThreeMammals#212 tidying up after websockets refactoring

* stuck a warning in about logging levels into docs!

* Feature/fix tracing (ThreeMammals#297)

* hacked together tracing fix by wrapping middleware delegate in another delegate

* ThreeMammals#227 have re-implemented tracing, cleaned up trace names, probably still need some refactoring and tests as this was a bit of a hack job

* ThreeMammals#227 bit of checking for when we dont want to use tracing, also removed a unit test for websockets that wasnt a unit test, i stuck it there because i wanted the code coverage and now im paying the price, will have to work out a better way to do it

* ThreeMammals#227 a bit of refactoring to make this work better, still a bit hacky...would like to revisit the whole thing one day

* ThreeMammals#227 dont need this

* ThreeMammals#227 or this

* ThreeMammals#227 small refactor

* Log downstream templates in DownstreamRouteFinderMiddleware (ThreeMammals#302)

Concatenate all downstream templates separated by , (colon) in order to write
them to the log.

* Override ToString() in DownstreamRequest (ThreeMammals#301)

When executing the downstreamUrlCreatorMittleware the downstream request
url shoud be written to the log. But instead of the url the type name
gets written because the ToString() method wasn't overriden.

Now ToString() internally calls the ToUri() method in order to provide
the url instead of the type name.

* Feature/another look at logging (ThreeMammals#303)

* ThreeMammals#212 - hacked websockets proxy together

* faffing around

* ThreeMammals#212 hacking away :(

* ThreeMammals#212 websockets proxy middleware working

* ThreeMammals#212 map when for webockets working

* ThreeMammals#212 some test refactor

* ThreeMammals#212 temp commit

* ThreeMammals#212 websockets proxy working, tests passing...need to do some tidying and write docs

* ThreeMammals#212 more code coverage

* ThreeMammals#212 docs for websockets

* ThreeMammals#212 updated readme

* ThreeMammals#212 tidying up after websockets refactoring

* ThreeMammals#212 tidying up after websockets refactoring

* ThreeMammals#212 tidying up after websockets refactoring

* changing logging levels and logging like ms reccomends with structured data rather than strings

* more faffing

* more fafin

* ThreeMammals#287 ocelot logger now only takes strings as it did take params then just turned them to strings, misleading, unit tests for logger and diagnosticlogger

* ThreeMammals#287 errors now logged as they happen

* ThreeMammals#287 more detail for logs requested in issue

* ThreeMammals#287 tidy up

* ThreeMammals#287 renamed

* ThreeMammals#287 always log context id

* ThreeMammals#287 fixed me being an idiot

* ThreeMammals#287 removed crap websockets unit test that isnt a unit test

* ThreeMammals#287 removed crap websockets unit test that isnt a unit test

* ThreeMammals#287 removed some comments

* fixed weird error

* Feature/ThreeMammals#295 consul acl (ThreeMammals#307)

* removed file

* updated package

* updated package

* updated package

* updated package

* updated package

* updated package

* updated package

* all packages updated

* ThreeMammals#295 can add token to service provider config and this will be used by consul clients to get services and configuration

* ThreeMammals#295 wait longer for this test

* ThreeMammals#298 initial hacking around better aggregation (ThreeMammals#310)

* ThreeMammals#298 initial hacking around better aggregation

* ThreeMammals#298 bit more hacking around

* ThreeMammals#298 abstraction over httpresponsemessage

* ThreeMammals#298 tidying up

* ThreeMammals#298 docs

* ThreeMammals#298 missed this

* Feature/graphql (ThreeMammals#312)

* ThreeMammals#298 initial hacking around better aggregation

* ThreeMammals#298 bit more hacking around

* ThreeMammals#298 abstraction over httpresponsemessage

* ThreeMammals#298 tidying up

* ThreeMammals#298 docs

* ThreeMammals#298 missed this

* ThreeMammals#306 example of how to do GraphQL

* ThreeMammals#296 renamed configuration.json to ocelot.json in preparation

* removed things we dont need for tests

* another file we dont need

* removed some async we dont need

* refactoring to consolidate configuration code

* removed another pointless abstraction

* Support adding custom plaintext headers to downstream requests (ThreeMammals#314)

* ThreeMammals#296 started writing merge code

* ThreeMammals#296 coming up with ideas for this config merging

* ThreeMammals#296 still hacking this idea around

* ThreeMammals#296 will now do a crappy merge on the configuration

* Update middlewareinjection.rst (ThreeMammals#317)

Class name "OcelotMiddlewareConfiguration" does not exist and "UseOcelot" extension method expects a "OcelotPipelineConfiguration" so i think this documentaiton is outdated.

* ThreeMammals#296 change so tests pass on windows

* Feature/merge configuration files (ThreeMammals#316)

* ThreeMammals#296 renamed configuration.json to ocelot.json in preparation

* removed things we dont need for tests

* another file we dont need

* removed some async we dont need

* refactoring to consolidate configuration code

* removed another pointless abstraction

* ThreeMammals#296 started writing merge code

* ThreeMammals#296 coming up with ideas for this config merging

* ThreeMammals#296 still hacking this idea around

* ThreeMammals#296 will now do a crappy merge on the configuration

* ThreeMammals#296 change so tests pass on windows

* ThreeMammals#296 remembered how to regex

* forgot to update docs

* Feature/timeout for http client (ThreeMammals#319)

* ThreeMammals#318 http client obeys Qos timeout or defaults to 90 seconds, which is think is default for http client anyway but zero docs....

* ThreeMammals#318 updated docs to specify default timeout and make it clear how to set it on a ReRoute basis

* ThreeMammals#318 missed this

* ThreeMammals#318 missed this

* Fixing documentation typo (ThreeMammals#321)

* Feature/steeltoe (ThreeMammals#324)

* ThreeMammals#262 - Integrated Steeltoe Service Discovery with Ocelot for review.

* messing around

* seems to be working with eureka

* acceptance test passing with external lib references

* ThreeMammals#262 support for netflix eureka service discovery thanks to pivotal

* ThreeMammals#262 fixed warnings

* ThreeMammals#309 allow users to ignore ssl warnings, not sure this is advisable (ThreeMammals#325)

* ThreeMammals#309 allow users to ignore ssl warnings, not sure this is advisable

* ThreeMammals#309 docs for ssl ignore

* Feature/store configuraton json idented (ThreeMammals#328)

* messing around with benchmark.net.seems Ocelot adds about 2ms to a request..lets make this less? :)

* ThreeMammals#326 store json indented so it looks nice :P

* Feature/extra request id test (ThreeMammals#329)

* messing around with benchmark.net.seems Ocelot adds about 2ms to a request..lets make this less? :)

* ThreeMammals#326 store json indented so it looks nice :P

* ThreeMammals#327 show another test how request id works

* ThreeMammals#330 Fix and issue with the httpclient being cached on the url but not taking the http verb into accont. This caused an issue because if the same url but different verbs had handlers, the incorrect handler would be called (ThreeMammals#331)

* ThreeMammals#262 added working eureka sample (ThreeMammals#333)

* finally got around to writing some tests for consul file config repo! Should have done these before I wrote it sigh..

* Develop (ThreeMammals#338)

* ThreeMammals#330 Fix and issue with the httpclient being cached on the url but not taking the http verb into accont. This caused an issue because if the same url but different verbs had handlers, the incorrect handler would be called

* Amend so that UnableToCompleteRequestError returns 500 rather than 404. This error occur when a delegate handler throws an exception

* Fix test that broke because of the change from 404 to 500 when delegate changes

* Changed the word worth to work (ThreeMammals#337)

Minor typo fix.

* Feature/sticky sessions (ThreeMammals#336)

* started messing around with sticky sessions idea

* more tests for sticky session thing

* more faffing cant make up my mind how to do this

* +semver: breaking added sticky session load balancer and changed way load balancer configuration is set by user

* ThreeMammals#336 made tests BDDFy

* ThreeMammals#245 hacked these tests around and they are now passing 5 runs in a row on my mac, lets see on build server

* pass expiry period into cookie thing to make this more testable

* changes to make test more stable

* another quick hack to work this out

* another quick hack to work this out

* revert

* sticking send messages toself in to make this testable

* more messing with send ot self

* implemented a send to self pattern for sticky session timeouts rather than a normal timer

* sorted sticky session cookie tests

* still trying to get these stable

* test should be at least once

* change to firm up consul tests

* identified tests are failing because sometimes more than one log entry in raft, this is deffo wrong, also made int tests not use cache manager

* added cache back in

* Feature/service discovery config key (ThreeMammals#347)

* ThreeMammals#346 make service discoery config key configurable

* ThreeMammals#346 missed this test

* ThreeMammals#346 updated docs

* hacking around

* skip raft tests but merging all the other hardening i did in that branch

* netstandard2.0 support

* Updated README

* README improvements

* +semver: major merged netstandard2.0 upgrade and updated all packages. Also had to change identity server test due to scope deduping and put a few awaits in.

* Feature/automatic routes with sd (ThreeMammals#351)

* ThreeMammals#340 started looking at supporting automatic routing when using service discovery

* ThreeMammals#340 getting old routing tests to pass

* ThreeMammals#340 renamed stuff to provider rather than finder, as its not longer finding anything

* ThreeMammals#340 working towards supporting dynamic routing

* ThreeMammals#340 loads of refactoring to make configuration work with dynamic routing

* ThreeMammals#340 refactor consul config code so the registry class owns it

* ThreeMammals#340 default to consul to maintain backwards compat

* ThreeMammals#340 added docs, finished this branches todos

* ThreeMammals#349 default to no load balancer so that in load balaner house we dont always rebuild the loadbalancer infrastructure because the load balancer options type is null (ThreeMammals#358)

* decided to stick a basic cache in for downstream route creator, can make fancy if required (ThreeMammals#359)

* bit of a hack to increment build

* ThreeMammals#349 always get all the services when using no loadbalancer (ThreeMammals#362)

* ThreeMammals#363 added a test to prove rr lb works, this doesnt have a lock so it… (ThreeMammals#365)

* ThreeMammals#363 added a test to prove rr lb works, this doesnt have a lock so it isnt perfect, not sure what the tradeoff is between a lock and a bit of randomness, can change to have a lock anytie

* ThreeMammals#363 had a look at other oss roudn robin lbs and they all use a lock so imlemented a lock

* Upgrade Pivotal.Discovery.Client to Pivotal.Discovery.ClientCore (ThreeMammals#369)

* made http client work under full .net 46 (ThreeMammals#367)

* made http client work under full .net 46

* Changed the way the requests without body are checked & comments

* fixed a type

* bit of refactoring

* Feature/fix unstable int tests (ThreeMammals#376)

* updated packages but build wont work

* ThreeMammals#245 implementing more stable rafty

* ThreeMammals#245 OK so these raft integration tests are passing everytime on my local mac now...lets see about the build servergit log

* ThreeMammals#245 added donation button

* ThreeMammals#245 removed file we dont need

* Hard-code coveralls.net version as 1.0.0 seems to only support .net core 2.1 (ThreeMammals#379)

* ThreeMammals#245 ignored these tests against as still not working

* update LoadBalancer Options (ThreeMammals#388)

update LoadBalancer with LoadBalancerOptions

* Update authentication.rst (ThreeMammals#395)

Fix spelling

* Update raft.rst (ThreeMammals#394)

* Fix incorrect response StatusCode for middleware added before Ocelot (ThreeMammals#380)

* added ignore code coverage to experimental sqllitelog class that cannot be unit tested anyway really

* Feature/poll consul (ThreeMammals#392)

* WIP - implement a consul service discovery poller, lots of shared code with existing, refactor next and a todo in the docs to finish

* ThreeMammals#374 implement polling for consul as option

* ThreeMammals#374 updated docs to remove todo

* ThreeMammals#374 fixed failing unit test

* ThreeMammals#374 fixed failing unit test

* ThreeMammals#374 fixed failing acceptance test

* Add ability to specify whether to UseProxy or not on ReRoutes (ThreeMammals#390) (ThreeMammals#391)

* Add ability to specify whether to UseProxy or not on ReRoutes (ThreeMammals#390)

* Remove useProxy default value from HttpHandlerOptions constructor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment