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

Break dependencies out into their own packages #529

Closed
TomPallister opened this issue Aug 3, 2018 · 7 comments
Closed

Break dependencies out into their own packages #529

TomPallister opened this issue Aug 3, 2018 · 7 comments
Assignees
Labels
feature A new feature large effort Likely over a week of development effort

Comments

@TomPallister
Copy link
Member

TomPallister commented Aug 3, 2018

New Feature

[x] Butterfly
[x] CacheManager
[x] Consul
[x] Pivotal.Discovery.ClientCore
[x] IdentityServer
[x] Polly
[x] Rafty (this will need updating again after IdentityServer as it depends on identity server)
[x] ServiceFabric (if i bring in libs, not sure if i do)
[x] There are a bunch of other things we prob dont need so check these too

Motivation for New Feature

Ocelot has quite a few non core dependencies that could be broken out into package. As Ocelot grows we will get more and more dependencies so it feels like a good time to do this work now.

This will also speed up Ocelot build slightly, reduce cognitive load when working on Ocelot core but increase it when working on dependencies, not force people to take on dependencies they don't need, not give people dependency conflicts..e.g. one lib in their project needs consul 2 and Ocelot needs consul 1 etc. I mean that is still a problem but less so if they dont need consul for Ocelot!

I am also thinking of moving to some kind of plugins based system in the future, maybe these packages would just become plugins.

Long term goal for this is give entry points for people to write their own packages

e.g. a way to configure pipeline, and the right interfaces for them to implement.

Also might be good to have a monorepo rather than lots of seperate repos

How

I have already started doing Butterfly and this was pretty easy, stick an interface in Ocelot, implement it in Ocelot.Tracing.Butterfly, that takes a dependency on Ocelot for the interface.

@TomPallister
Copy link
Member Author

cache manager done..

@TomPallister
Copy link
Member Author

butterfly done..

TomPallister added a commit that referenced this issue Aug 12, 2018
* #529 removed consul deps and introduced delegate to find service discovery provider

* +semver: breaking moved consul configuration to package..introduced mechanism for packages to configure Ocelot pipeline
@TomPallister
Copy link
Member Author

Consul done...

TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
* #529 removed eureka client

* #529 removed some unused code
@TomPallister
Copy link
Member Author

pivotal done

TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
* #529 removed raft

* #529 Rafty needs properties exposed
TomPallister added a commit that referenced this issue Aug 12, 2018
TomPallister added a commit that referenced this issue Aug 12, 2018
@TomPallister
Copy link
Member Author

rafty done..

@TomPallister
Copy link
Member Author

administration / identity server done, just need to release new version of rafty with this dep

TomPallister added a commit that referenced this issue Aug 19, 2018
* added delegate to select last handler

* #529 implemented a way we can inject the last delegating handler

* wip - moving code

* #529 removed loads of qos code and moved it into Ocelot.Provider.Polly
TomPallister added a commit that referenced this issue Aug 19, 2018
TomPallister added a commit that referenced this issue Aug 19, 2018
* added delegate to select last handler

* #529 implemented a way we can inject the last delegating handler

* wip - moving code

* #529 removed loads of qos code and moved it into Ocelot.Provider.Polly

* #529 can now inject http client expcetions to ocelot errors mappers and updated docs
@TomPallister
Copy link
Member Author

all done, lets see how this goes...if it gets too faffy will need to work out a way to work with ocelot source locally and packages at build time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature A new feature large effort Likely over a week of development effort
Projects
None yet
Development

No branches or pull requests

1 participant