Skip to content

refactor: cleanup apiservice.Binder duplication (#360)#595

Open
alokkumardalei-wq wants to merge 1 commit into
kbind-dev:mainfrom
alokkumardalei-wq:feature/issue-360
Open

refactor: cleanup apiservice.Binder duplication (#360)#595
alokkumardalei-wq wants to merge 1 commit into
kbind-dev:mainfrom
alokkumardalei-wq:feature/issue-360

Conversation

@alokkumardalei-wq

@alokkumardalei-wq alokkumardalei-wq commented Jul 16, 2026

Copy link
Copy Markdown

(Fixes #360)
This pull request addresses Issue #360 by refactoring and cleaning up the Binder logic in cli/pkg/kubectl/bind-apiservice/plugin/binder.go.

Changes made

Extracted Helper Methods:

  • Created setupEnvironment(ctx context.Context, remoteKubeconfigBytes []byte) (string, string, *rest.Config, error) to encapsulate common environment initialization logic (ensuring the client-side namespace exists, parsing/saving the remote kubeconfig, and fetching the resolved config).
  • Created processRequests(ctx context.Context, apiRequests []*kubebindv1alpha2.APIServiceExportRequest, remoteConfig *rest.Config, remoteNamespaceActual string, remoteKubeconfig string) ([]*kubebindv1alpha2.APIServiceBinding, error) to handle the common request processing loop (deploying konnector, creating service export requests, saving secrets, and creating bindings).

Refactored Entrypoints:

  • BindFromFile: Updated to use setupEnvironment and processRequests, eliminating large blocks of duplicated boilerplate.
  • BindFromResponse: Updated similarly to utilize the new helpers for processing the multiple requests present in the response.

Testing and Validation

  • Verified via local build (make build) that the refactored logic compiles cleanly.
hack/verify-go-versions.sh
Verifying minimum Go version: 1.26.2
Verifying build Go version: 1.26.2
+ cd ./cmd/
+ go build '-ldflags=-X k8s.io/client-go/pkg/version.gitCommit=92a6cb2 -X k8s.io/client-go/pkg/version.gitTreeState=clean -X k8s.io/client-go/pkg/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/client-go/pkg/version.gitMajor=1 -X k8s.io/client-go/pkg/version.gitMinor=36 -X k8s.io/client-go/pkg/version.buildDate=2026-07-17T15:38:57Z -X k8s.io/component-base/version.gitCommit=92a6cb2 -X k8s.io/component-base/version.gitTreeState=clean -X k8s.io/component-base/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/component-base/version.gitMajor=1 -X k8s.io/component-base/version.gitMinor=36 -X k8s.io/component-base/version.buildDate=2026-07-17T15:38:57Z' -o /Users/alokkumardalei/Desktop/kbind/kbind/bin/ ./...
+ cd ./cli/cmd/
+ go build '-ldflags=-X k8s.io/client-go/pkg/version.gitCommit=92a6cb2 -X k8s.io/client-go/pkg/version.gitTreeState=clean -X k8s.io/client-go/pkg/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/client-go/pkg/version.gitMajor=1 -X k8s.io/client-go/pkg/version.gitMinor=36 -X k8s.io/client-go/pkg/version.buildDate=2026-07-17T15:38:57Z -X k8s.io/component-base/version.gitCommit=92a6cb2 -X k8s.io/component-base/version.gitTreeState=clean -X k8s.io/component-base/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/component-base/version.gitMajor=1 -X k8s.io/component-base/version.gitMinor=36 -X k8s.io/component-base/version.buildDate=2026-07-17T15:38:57Z' -o /Users/alokkumardalei/Desktop/kbind/kbind/bin/ ./...
+ cd ./contrib/kcp/cmd/kcp-init/
+ go build '-ldflags=-X k8s.io/client-go/pkg/version.gitCommit=92a6cb2 -X k8s.io/client-go/pkg/version.gitTreeState=clean -X k8s.io/client-go/pkg/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/client-go/pkg/version.gitMajor=1 -X k8s.io/client-go/pkg/version.gitMinor=36 -X k8s.io/client-go/pkg/version.buildDate=2026-07-17T15:38:57Z -X k8s.io/component-base/version.gitCommit=92a6cb2 -X k8s.io/component-base/version.gitTreeState=clean -X k8s.io/component-base/version.gitVersion=v1.36.0+kube-bind-v0.0.0-92a6cb2 -X k8s.io/component-base/version.gitMajor=1 -X k8s.io/component-base/version.gitMinor=36 -X k8s.io/component-base/version.buildDate=2026-07-17T15:38:57Z' -o /Users/alokkumardalei/Desktop/kbind/kbind/bin/ ./...
  • Ran make test locally to ensure the plugin's behavior remains unchanged.
github.com/kube-bind/kube-bind/backend          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/auth             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/client           coverage: 0.0% of statements
?       github.com/kube-bind/kube-bind/backend/controllers      [no test files]
        github.com/kube-bind/kube-bind/backend/controllers/bindableresourcesrequest             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/controllers/cluster              coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/controllers/clusterbinding               coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/controllers/serviceexport                coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/backend/controllers/serviceexportrbac    1.695s  coverage: 51.2% of statements
        github.com/kube-bind/kube-bind/backend/controllers/serviceexportrequest         coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/controllers/servicenamespace             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/deploy           coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/http             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/kubernetes               coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/backend/kubernetes/resources     2.367s  coverage: 4.7% of statements
ok      github.com/kube-bind/kube-bind/backend/oidc     1.659s  coverage: 33.3% of statements
ok      github.com/kube-bind/kube-bind/backend/options  1.416s  coverage: 9.6% of statements
        github.com/kube-bind/kube-bind/backend/options/session/redis            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp/controllers/apibindingtemplate              coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp/controllers/apiresourceschema               coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp/controllers/shared          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp/controllers/vwrbac          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/provider/kcp/options             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/session          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/backend/session/memory           coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/backend/session/redis    1.660s  coverage: 81.1% of statements
        github.com/kube-bind/kube-bind/backend/spaserver                coverage: 0.0% of statements
?       github.com/kube-bind/kube-bind/backend/template [no test files]
        github.com/kube-bind/kube-bind/cmd/backend              coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/cmd/konnector            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/cmd/konnector/cmd                coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/deploy/crd               coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/deploy/examples          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/bootstrap            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/committer            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/indexers             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster                coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/claimedresources       1.544s  coverage: 5.7% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/claimedresourcesnamespaces          coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/clusterbinding         coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/namespacelifecycle             coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/servicebinding 1.634s  coverage: 21.2% of statements
ok      github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport  1.966s  coverage: 3.2% of statements
ok      github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/isolation        2.071scoverage: 5.6% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer       coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/spec     2.209s  coverage: 4.1% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/status           coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/contextstore           coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/dynamic                coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/servicebinding         coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/controllers/servicebindingbundle           coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/options            coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/server             coverage: 0.0% of statements
        github.com/kube-bind/kube-bind/pkg/konnector/types              coverage: 0.0% of statements
ok      github.com/kube-bind/kube-bind/pkg/resources    1.665s  coverage: 57.4% of statements
ok      github.com/kube-bind/kube-bind/pkg/version      1.713s  coverage: 88.9% of statements

Signed-off-by: alokkumardalei-wq <alokkumardalei2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

cleanup: Cleanup apiservice.Binder

1 participant