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

Move towards modular project structure #448

Closed
macsux opened this issue May 22, 2020 · 5 comments
Closed

Move towards modular project structure #448

macsux opened this issue May 22, 2020 · 5 comments
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.

Comments

@macsux
Copy link
Contributor

macsux commented May 22, 2020

Given that KubernetesClient is growing in scope and taking on new dependencies, it's becoming a bit monolithic and difficult to maintain and add new features. I propose moving towards a multi-package implementation to provide a-la-carte solution. Consider the following:

  • Not every consumer of this library will care about installing CRDs. The PR for CRDs requires schema generation tool, which takes on NJsonSchema dependency, which I may not want in my project.
  • Informers Kubernetes implementation would require a dependency on RX, which also can't support .NET 4.5 (netstandard 2.0 minimum)
  • It would be great to provide dependency injection registration methods for ServiceCollection
  • The autogenerated methods from AutoReset bloat the project size significantly. Especially when used with Informers which rely only on generic method class, the need for autogenerated client methods is removed. Ideally, it would be great to have models in their own project, the client (Kubernetes, IKubernetes, IKubernetesExtensions) in its own project, and core which provides authentication, watch, and cross-cutting capabilities. It would look something like
    KubernetesClient.Core
    KubernetesClient.Models -> KubernetesClient
    KubernetesClient.WebClient
    KubernetesClient.CusomResources
    KubernetesClient.DependencyInjection

If maintainers are OK with this approach, I can take this on to split it up.

@brendandburns
Copy link
Contributor

I think that it is fine to break things up. Can I get a little more detail?

I'm looking for:

  • proposed directory structure
  • proposed packages and the classes in each
  • how a user would migrate from the existing library to the new packages

Thanks

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 20, 2020
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Sep 19, 2020
@fejta-bot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot
Copy link
Contributor

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Projects
None yet
Development

No branches or pull requests

4 participants