Skip to content

Conversation

nirrozenbaum
Copy link
Contributor

@nirrozenbaum nirrozenbaum commented Jun 24, 2025

This PR implements the multiple destination handling in the scheduling layer, as defined in the EPP protocol:
https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/docs/proposals/004-endpoint-picker-protocol#destination-endpoint

please pay attention that this PR updates only the scheduling layer.
as a follow up, we should update the request-control layer and the handlers to use the multiple returned endpoints according to the protocol.
In order to keep this PR tightly scoped, the director keeps using a single targetPod to keep the current functionality.

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Jun 24, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: nirrozenbaum

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 24, 2025
@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Jun 24, 2025
Copy link

netlify bot commented Jun 24, 2025

Deploy Preview for gateway-api-inference-extension ready!

Name Link
🔨 Latest commit 951b5af
🔍 Latest deploy log https://app.netlify.com/projects/gateway-api-inference-extension/deploys/686a16a377bb4800087e7b43
😎 Deploy Preview https://deploy-preview-1059--gateway-api-inference-extension.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 25, 2025
@k8s-ci-robot k8s-ci-robot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Jun 25, 2025
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 30, 2025
@nirrozenbaum nirrozenbaum changed the title [WIP] handle picking multiple destinations handle picking multiple destinations Jun 30, 2025
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 30, 2025
@nirrozenbaum nirrozenbaum changed the title handle picking multiple destinations handle picking multiple destinations in scheduling layer Jun 30, 2025
@nirrozenbaum
Copy link
Contributor Author

cc @kfswain @ahg-g

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 3, 2025
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 3, 2025
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 5, 2025
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 6, 2025
}
// primary profile is used to set destination
targetPod := result.ProfileResults[result.PrimaryProfileName].TargetPod.GetPod()
// TODO should use multiple destinations according to epp protocol. current code assumes a single target
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we bind an issue to this TODO?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do have #414 which covers this point current PR implements first half (scheduling part) and next PR should mark the issue as completed (handle request control + hndlers).
a new issue will be a duplicate

// RandomPickerFactory defines the factory function for RandomPicker.
func RandomPickerFactory(name string, _ json.RawMessage, _ plugins.Handle) (plugins.Plugin, error) {
return NewRandomPicker().WithName(name), nil
func RandomPickerFactory(name string, rawParameters json.RawMessage, _ plugins.Handle) (plugins.Plugin, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if we want to parse the json before here and just push everything into an unstructured map.

It's out of scope of this PR, definitely, and I do understand the issue that a complex object would still need its type inferred... But it feels strange to do json parsing in every factory. Is there a reason that I missed that it was done this way?

Copy link
Contributor Author

@nirrozenbaum nirrozenbaum Jul 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same answer as in the other thread.. it was initially implemented this way and this is yet another point that potentially can be improved in config api.

@kfswain
Copy link
Collaborator

kfswain commented Jul 8, 2025

/lgtm
/hold

Holding if we want to spin up an issue to track the TODO work, thanks Nir!

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 8, 2025
@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 8, 2025
@nirrozenbaum
Copy link
Contributor Author

/unhold

will take care of next part using issue #414 (current PR was focused on scheduling and left the behavior of other layers as is)

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 8, 2025
@k8s-ci-robot k8s-ci-robot merged commit 91e3047 into kubernetes-sigs:main Jul 8, 2025
9 checks passed
@kfswain
Copy link
Collaborator

kfswain commented Jul 8, 2025

SGTM! Thanks Nir!

@nirrozenbaum nirrozenbaum deleted the multiple-dest branch July 9, 2025 05:25
EyalPazz pushed a commit to EyalPazz/gateway-api-inference-extension that referenced this pull request Jul 9, 2025
…sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>
BenjaminBraunDev pushed a commit to BenjaminBraunDev/gateway-api-inference-extension that referenced this pull request Aug 12, 2025
…sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>
BenjaminBraunDev pushed a commit to BenjaminBraunDev/gateway-api-inference-extension that referenced this pull request Aug 14, 2025
Add APIs for the instantiated plugins to the EPP Handle (kubernetes-sigs#1039)

* Added plugin instance APIs to plugins.Handle

Signed-off-by: Shmuel Kallner <[email protected]>

* An implementation of the new plugins.Handle APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Moved all configuration loading code to new package

Signed-off-by: Shmuel Kallner <[email protected]>

* Updates due to new and moved APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Cleanup of old configuration loading code

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

chore(deps): bump the kubernetes group with 6 updates (kubernetes-sigs#1050)

Bumps the kubernetes group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [k8s.io/api](https://github.com/kubernetes/api) | `0.33.1` | `0.33.2` |
| [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.33.1` | `0.33.2` |
| [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.33.1` | `0.33.2` |
| [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.33.1` | `0.33.2` |
| [k8s.io/code-generator](https://github.com/kubernetes/code-generator) | `0.33.1` | `0.33.2` |
| [k8s.io/component-base](https://github.com/kubernetes/component-base) | `0.33.1` | `0.33.2` |

Updates `k8s.io/api` from 0.33.1 to 0.33.2
- [Commits](kubernetes/api@v0.33.1...v0.33.2)

Updates `k8s.io/apiextensions-apiserver` from 0.33.1 to 0.33.2
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.33.1...v0.33.2)

Updates `k8s.io/apimachinery` from 0.33.1 to 0.33.2
- [Commits](kubernetes/apimachinery@v0.33.1...v0.33.2)

Updates `k8s.io/client-go` from 0.33.1 to 0.33.2
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.33.1...v0.33.2)

Updates `k8s.io/code-generator` from 0.33.1 to 0.33.2
- [Commits](kubernetes/code-generator@v0.33.1...v0.33.2)

Updates `k8s.io/component-base` from 0.33.1 to 0.33.2
- [Commits](kubernetes/component-base@v0.33.1...v0.33.2)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/client-go
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/code-generator
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/component-base
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

remove datastore dependency from the scheduler (kubernetes-sigs#1049)

* remove datastore dependency from the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* added back comments on snapshotting pods from datastore before calling schedule

Signed-off-by: Nir Rozenbaum <[email protected]>

* removed fake datastore from conformance scheduler test

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

Add subsetting logic for epp (kubernetes-sigs#981)

feat: Added a factory function for the DecisionTree filter (kubernetes-sigs#1053)

* Added a factory function for the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Added tests of the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Registered the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Refactored the configuration loading

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

Adding pprof endpoints to metrics port (kubernetes-sigs#1069)

feat: Add a context.Context to the plugins.HAndle interface (kubernetes-sigs#1076)

* Added a context.Context to the plugins.Handle interface

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes to tests due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

convert subset filter from a plugin to logic in director (kubernetes-sigs#1088)

* convert subset filter from a plugin to logic in director

Signed-off-by: Nir Rozenbaum <[email protected]>

* replace interface{} with any

Signed-off-by: Nir Rozenbaum <[email protected]>

* make linter happy

Signed-off-by: Nir Rozenbaum <[email protected]>

* address code review comments

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

chore(deps): bump golang.org/x/sync from 0.14.0 to 0.15.0 (kubernetes-sigs#1096)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.14.0 to 0.15.0.
- [Commits](golang/sync@v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Introduce plugins.TypedName to be used for Plugin base implementation (kubernetes-sigs#1086)

* introduce TypedName to reduce boilerplate, modify plugins

Signed-off-by: Etai Lev Ran <[email protected]>

* implement GetTypedName()

Signed-off-by: Etai Lev Ran <[email protected]>

* Remove Type() and Name() from Plugin interface

Signed-off-by: Etai Lev Ran <[email protected]>

* use TypedName as private field, not embedded

Signed-off-by: Etai Lev Ran <[email protected]>

---------

Signed-off-by: Etai Lev Ran <[email protected]>

move the conversion from pod metrics to scheduler pod representation one level up (kubernetes-sigs#1104)

* move the converstion from pod metrics to scheduler pod representation one level up

Signed-off-by: Nir Rozenbaum <[email protected]>

* minor change in helper func

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

handle picking multiple destinations in scheduling layer (kubernetes-sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

refactor: 🔨 use the more explicit singular form (kubernetes-sigs#1129)
BenjaminBraunDev pushed a commit to BenjaminBraunDev/gateway-api-inference-extension that referenced this pull request Aug 22, 2025
Add APIs for the instantiated plugins to the EPP Handle (kubernetes-sigs#1039)

* Added plugin instance APIs to plugins.Handle

Signed-off-by: Shmuel Kallner <[email protected]>

* An implementation of the new plugins.Handle APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Moved all configuration loading code to new package

Signed-off-by: Shmuel Kallner <[email protected]>

* Updates due to new and moved APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Cleanup of old configuration loading code

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

chore(deps): bump the kubernetes group with 6 updates (kubernetes-sigs#1050)

Bumps the kubernetes group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [k8s.io/api](https://github.com/kubernetes/api) | `0.33.1` | `0.33.2` |
| [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.33.1` | `0.33.2` |
| [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.33.1` | `0.33.2` |
| [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.33.1` | `0.33.2` |
| [k8s.io/code-generator](https://github.com/kubernetes/code-generator) | `0.33.1` | `0.33.2` |
| [k8s.io/component-base](https://github.com/kubernetes/component-base) | `0.33.1` | `0.33.2` |

Updates `k8s.io/api` from 0.33.1 to 0.33.2
- [Commits](kubernetes/api@v0.33.1...v0.33.2)

Updates `k8s.io/apiextensions-apiserver` from 0.33.1 to 0.33.2
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.33.1...v0.33.2)

Updates `k8s.io/apimachinery` from 0.33.1 to 0.33.2
- [Commits](kubernetes/apimachinery@v0.33.1...v0.33.2)

Updates `k8s.io/client-go` from 0.33.1 to 0.33.2
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.33.1...v0.33.2)

Updates `k8s.io/code-generator` from 0.33.1 to 0.33.2
- [Commits](kubernetes/code-generator@v0.33.1...v0.33.2)

Updates `k8s.io/component-base` from 0.33.1 to 0.33.2
- [Commits](kubernetes/component-base@v0.33.1...v0.33.2)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/client-go
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/code-generator
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/component-base
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

remove datastore dependency from the scheduler (kubernetes-sigs#1049)

* remove datastore dependency from the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* added back comments on snapshotting pods from datastore before calling schedule

Signed-off-by: Nir Rozenbaum <[email protected]>

* removed fake datastore from conformance scheduler test

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

Add subsetting logic for epp (kubernetes-sigs#981)

feat: Added a factory function for the DecisionTree filter (kubernetes-sigs#1053)

* Added a factory function for the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Added tests of the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Registered the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Refactored the configuration loading

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

Adding pprof endpoints to metrics port (kubernetes-sigs#1069)

feat: Add a context.Context to the plugins.HAndle interface (kubernetes-sigs#1076)

* Added a context.Context to the plugins.Handle interface

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes to tests due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

convert subset filter from a plugin to logic in director (kubernetes-sigs#1088)

* convert subset filter from a plugin to logic in director

Signed-off-by: Nir Rozenbaum <[email protected]>

* replace interface{} with any

Signed-off-by: Nir Rozenbaum <[email protected]>

* make linter happy

Signed-off-by: Nir Rozenbaum <[email protected]>

* address code review comments

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

chore(deps): bump golang.org/x/sync from 0.14.0 to 0.15.0 (kubernetes-sigs#1096)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.14.0 to 0.15.0.
- [Commits](golang/sync@v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Introduce plugins.TypedName to be used for Plugin base implementation (kubernetes-sigs#1086)

* introduce TypedName to reduce boilerplate, modify plugins

Signed-off-by: Etai Lev Ran <[email protected]>

* implement GetTypedName()

Signed-off-by: Etai Lev Ran <[email protected]>

* Remove Type() and Name() from Plugin interface

Signed-off-by: Etai Lev Ran <[email protected]>

* use TypedName as private field, not embedded

Signed-off-by: Etai Lev Ran <[email protected]>

---------

Signed-off-by: Etai Lev Ran <[email protected]>

move the conversion from pod metrics to scheduler pod representation one level up (kubernetes-sigs#1104)

* move the converstion from pod metrics to scheduler pod representation one level up

Signed-off-by: Nir Rozenbaum <[email protected]>

* minor change in helper func

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

handle picking multiple destinations in scheduling layer (kubernetes-sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

refactor: 🔨 use the more explicit singular form (kubernetes-sigs#1129)
BenjaminBraunDev pushed a commit to BenjaminBraunDev/gateway-api-inference-extension that referenced this pull request Aug 29, 2025
Add APIs for the instantiated plugins to the EPP Handle (kubernetes-sigs#1039)

* Added plugin instance APIs to plugins.Handle

Signed-off-by: Shmuel Kallner <[email protected]>

* An implementation of the new plugins.Handle APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Moved all configuration loading code to new package

Signed-off-by: Shmuel Kallner <[email protected]>

* Updates due to new and moved APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Cleanup of old configuration loading code

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

chore(deps): bump the kubernetes group with 6 updates (kubernetes-sigs#1050)

Bumps the kubernetes group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [k8s.io/api](https://github.com/kubernetes/api) | `0.33.1` | `0.33.2` |
| [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.33.1` | `0.33.2` |
| [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.33.1` | `0.33.2` |
| [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.33.1` | `0.33.2` |
| [k8s.io/code-generator](https://github.com/kubernetes/code-generator) | `0.33.1` | `0.33.2` |
| [k8s.io/component-base](https://github.com/kubernetes/component-base) | `0.33.1` | `0.33.2` |

Updates `k8s.io/api` from 0.33.1 to 0.33.2
- [Commits](kubernetes/api@v0.33.1...v0.33.2)

Updates `k8s.io/apiextensions-apiserver` from 0.33.1 to 0.33.2
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.33.1...v0.33.2)

Updates `k8s.io/apimachinery` from 0.33.1 to 0.33.2
- [Commits](kubernetes/apimachinery@v0.33.1...v0.33.2)

Updates `k8s.io/client-go` from 0.33.1 to 0.33.2
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.33.1...v0.33.2)

Updates `k8s.io/code-generator` from 0.33.1 to 0.33.2
- [Commits](kubernetes/code-generator@v0.33.1...v0.33.2)

Updates `k8s.io/component-base` from 0.33.1 to 0.33.2
- [Commits](kubernetes/component-base@v0.33.1...v0.33.2)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/client-go
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/code-generator
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/component-base
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

remove datastore dependency from the scheduler (kubernetes-sigs#1049)

* remove datastore dependency from the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* added back comments on snapshotting pods from datastore before calling schedule

Signed-off-by: Nir Rozenbaum <[email protected]>

* removed fake datastore from conformance scheduler test

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

Add subsetting logic for epp (kubernetes-sigs#981)

feat: Added a factory function for the DecisionTree filter (kubernetes-sigs#1053)

* Added a factory function for the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Added tests of the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Registered the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Refactored the configuration loading

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

Adding pprof endpoints to metrics port (kubernetes-sigs#1069)

feat: Add a context.Context to the plugins.HAndle interface (kubernetes-sigs#1076)

* Added a context.Context to the plugins.Handle interface

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes to tests due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

convert subset filter from a plugin to logic in director (kubernetes-sigs#1088)

* convert subset filter from a plugin to logic in director

Signed-off-by: Nir Rozenbaum <[email protected]>

* replace interface{} with any

Signed-off-by: Nir Rozenbaum <[email protected]>

* make linter happy

Signed-off-by: Nir Rozenbaum <[email protected]>

* address code review comments

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

chore(deps): bump golang.org/x/sync from 0.14.0 to 0.15.0 (kubernetes-sigs#1096)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.14.0 to 0.15.0.
- [Commits](golang/sync@v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Introduce plugins.TypedName to be used for Plugin base implementation (kubernetes-sigs#1086)

* introduce TypedName to reduce boilerplate, modify plugins

Signed-off-by: Etai Lev Ran <[email protected]>

* implement GetTypedName()

Signed-off-by: Etai Lev Ran <[email protected]>

* Remove Type() and Name() from Plugin interface

Signed-off-by: Etai Lev Ran <[email protected]>

* use TypedName as private field, not embedded

Signed-off-by: Etai Lev Ran <[email protected]>

---------

Signed-off-by: Etai Lev Ran <[email protected]>

move the conversion from pod metrics to scheduler pod representation one level up (kubernetes-sigs#1104)

* move the converstion from pod metrics to scheduler pod representation one level up

Signed-off-by: Nir Rozenbaum <[email protected]>

* minor change in helper func

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

handle picking multiple destinations in scheduling layer (kubernetes-sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

refactor: 🔨 use the more explicit singular form (kubernetes-sigs#1129)
BenjaminBraunDev pushed a commit to BenjaminBraunDev/gateway-api-inference-extension that referenced this pull request Sep 9, 2025
Add APIs for the instantiated plugins to the EPP Handle (kubernetes-sigs#1039)

* Added plugin instance APIs to plugins.Handle

Signed-off-by: Shmuel Kallner <[email protected]>

* An implementation of the new plugins.Handle APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Moved all configuration loading code to new package

Signed-off-by: Shmuel Kallner <[email protected]>

* Updates due to new and moved APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Cleanup of old configuration loading code

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

chore(deps): bump the kubernetes group with 6 updates (kubernetes-sigs#1050)

Bumps the kubernetes group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [k8s.io/api](https://github.com/kubernetes/api) | `0.33.1` | `0.33.2` |
| [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.33.1` | `0.33.2` |
| [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.33.1` | `0.33.2` |
| [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.33.1` | `0.33.2` |
| [k8s.io/code-generator](https://github.com/kubernetes/code-generator) | `0.33.1` | `0.33.2` |
| [k8s.io/component-base](https://github.com/kubernetes/component-base) | `0.33.1` | `0.33.2` |

Updates `k8s.io/api` from 0.33.1 to 0.33.2
- [Commits](kubernetes/api@v0.33.1...v0.33.2)

Updates `k8s.io/apiextensions-apiserver` from 0.33.1 to 0.33.2
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.33.1...v0.33.2)

Updates `k8s.io/apimachinery` from 0.33.1 to 0.33.2
- [Commits](kubernetes/apimachinery@v0.33.1...v0.33.2)

Updates `k8s.io/client-go` from 0.33.1 to 0.33.2
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.33.1...v0.33.2)

Updates `k8s.io/code-generator` from 0.33.1 to 0.33.2
- [Commits](kubernetes/code-generator@v0.33.1...v0.33.2)

Updates `k8s.io/component-base` from 0.33.1 to 0.33.2
- [Commits](kubernetes/component-base@v0.33.1...v0.33.2)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/client-go
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/code-generator
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
- dependency-name: k8s.io/component-base
  dependency-version: 0.33.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kubernetes
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

remove datastore dependency from the scheduler (kubernetes-sigs#1049)

* remove datastore dependency from the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* added back comments on snapshotting pods from datastore before calling schedule

Signed-off-by: Nir Rozenbaum <[email protected]>

* removed fake datastore from conformance scheduler test

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

Add subsetting logic for epp (kubernetes-sigs#981)

feat: Added a factory function for the DecisionTree filter (kubernetes-sigs#1053)

* Added a factory function for the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Added tests of the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Registered the factory function of the DecisionTreeFilter

Signed-off-by: Shmuel Kallner <[email protected]>

* Refactored the configuration loading

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

Adding pprof endpoints to metrics port (kubernetes-sigs#1069)

feat: Add a context.Context to the plugins.HAndle interface (kubernetes-sigs#1076)

* Added a context.Context to the plugins.Handle interface

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

* Changes to tests due to changes in internal APIs

Signed-off-by: Shmuel Kallner <[email protected]>

---------

Signed-off-by: Shmuel Kallner <[email protected]>

convert subset filter from a plugin to logic in director (kubernetes-sigs#1088)

* convert subset filter from a plugin to logic in director

Signed-off-by: Nir Rozenbaum <[email protected]>

* replace interface{} with any

Signed-off-by: Nir Rozenbaum <[email protected]>

* make linter happy

Signed-off-by: Nir Rozenbaum <[email protected]>

* address code review comments

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

chore(deps): bump golang.org/x/sync from 0.14.0 to 0.15.0 (kubernetes-sigs#1096)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.14.0 to 0.15.0.
- [Commits](golang/sync@v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Introduce plugins.TypedName to be used for Plugin base implementation (kubernetes-sigs#1086)

* introduce TypedName to reduce boilerplate, modify plugins

Signed-off-by: Etai Lev Ran <[email protected]>

* implement GetTypedName()

Signed-off-by: Etai Lev Ran <[email protected]>

* Remove Type() and Name() from Plugin interface

Signed-off-by: Etai Lev Ran <[email protected]>

* use TypedName as private field, not embedded

Signed-off-by: Etai Lev Ran <[email protected]>

---------

Signed-off-by: Etai Lev Ran <[email protected]>

move the conversion from pod metrics to scheduler pod representation one level up (kubernetes-sigs#1104)

* move the converstion from pod metrics to scheduler pod representation one level up

Signed-off-by: Nir Rozenbaum <[email protected]>

* minor change in helper func

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

handle picking multiple destinations in scheduling layer (kubernetes-sigs#1059)

* implement multiple destination as the output of the scheduler

Signed-off-by: Nir Rozenbaum <[email protected]>

* updated max score picker unit tests to cover multiple pods

Signed-off-by: Nir Rozenbaum <[email protected]>

* imports

Signed-off-by: Nir Rozenbaum <[email protected]>

* unit-test fix

Signed-off-by: Nir Rozenbaum <[email protected]>

---------

Signed-off-by: Nir Rozenbaum <[email protected]>

refactor: 🔨 use the more explicit singular form (kubernetes-sigs#1129)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants