This adds a new endpoint to fetch metric history items for multiple
experiment runs at once:
GET /experiment_runs/metric_history
Without arguments this fetches metric history for every experiment run.
To fetch metric history for a specific set of experiment runs, the
`filterQuery` param can be used with `experimentRunId IN (1,2,3)`:
GET /experiment_runs/metric_history?filterQuery=experimentRunId+IN+(1,2,3)
AI-assisted: Claude Code 1.0.63 (claude-sonnet-4@20250514)
Signed-off-by: Jon Burdo <jon@jonburdo.com>
* feat: initial version of experiments and runs API
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: experiments and runs initial implementation (wip)
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fixed failing unit tests for experiments and runs
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: added experiment and experimentrun tests
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: added DataSet, Metric, and Parameter types
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: added implementatio of DataSet, Metric, and Param, including service tests
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: replace int properties for timestamps with string because mlmd type properties only support int32, not int64
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: add support for artifactType query param to filter artifact types in artifact queries
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add metrics history endpoint and metric history storage for experiment run metrics
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix artifactType query param type in generated service
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix go lint error in unit test
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: filter out metric history from artifacts endpoints
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix metric history name to use last update time to avoid name conflicts
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: add filterQuery param on all context types to search by properties and custom properties
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: initial version of experiment tracking implemented on embedmd, rebased on main
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: add support for filterQuery parameter for all ListResponse endpoints for embedmd datastore
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add support for stepIds query parameter in embedmd datastore
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: refactor embedmd db service to use generic repository implementation to reduce code duplication
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add support for artifactType query parameter for embedmd datastore
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: use mysql 8.3 in unit tests
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: refactor name mapping and default name handling in embedmd datastore
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: support updating metrics and parameters by name, fix ignoring metric history when retrieving all artifacts for runs and versions
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add missing generated openapi python client files for PR github action check
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix failing shared db tests
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add support for metric and parameter description, add missing type property migraiton
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* chore: update files from main
Signed-off-by: Alessio Pragliola <seth.pro@gmail.com>
* fix: added missing godoc comments in pkg/api/api.go
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: replace ambiguous ArtifactListReponse return type from GetExperimentRunMetricHistory with MetricListResponse
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fixed incorrect artifactType in dataset response, added tests to verify all artifact types
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* feat: add validation for endTimeSinceEpoch property on experiment run updates
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* Replace value type validation map with a switch in query_translator.go
Co-authored-by: Paul Boyd <paul@camelot.email>
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add service e2e tests for filterQuery, fix name query param handling, fix DB tests that didn't use parent id prefix
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* chore: code cleanup, replace interface{} with any, added vetting for internal/db/filter
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* chore: added flag vF for fixed string grep exclude
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: copied orderby and parameters back to registry and catalog to have different values
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fixed mlmd query translator handling of escaped backslashes
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* chore: add test to verify parseCustomPropertyField won't panic with a property name ending in dot
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: sync generated python client code
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: readiness probe tests and new types
Signed-off-by: Alessio Pragliola <seth.pro@gmail.com>
* chore: refactor readiness_test
Signed-off-by: Alessio Pragliola <seth.pro@gmail.com>
* fix: ensure parentResourceId is used to filter resource lookup by params, add unit tests for duplicate child resource lookups
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: throw an error if a metric value is missing, add test to validate
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix http status error code for invalid ids
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: more id validation, fixed filterQuery passing to DB layer
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix failing unit test
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: validate experiment id when listing runs
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: fix failing validation test after fixing http status codes
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: avoid duplicate key errors if externalid is set in metric when creating metric history entries
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: add fuzzer tests for experiment runs and new artifact types
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* chore: code cleanup and format fuzzer tests
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: log error in fuzzer test
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
* fix: handle null artifact names correctly on create
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
---------
Signed-off-by: Dhiraj Bokde <dhirajsb@users.noreply.github.com>
Signed-off-by: Alessio Pragliola <seth.pro@gmail.com>
Signed-off-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com>
Co-authored-by: Alessio Pragliola <seth.pro@gmail.com>
Co-authored-by: Alessio Pragliola <83355398+Al-Pragliola@users.noreply.github.com>
Co-authored-by: Paul Boyd <paul@camelot.email>
* update goverter to 1.4.1
As that fixed a nil assignment override[1][2] which prevented us from
emulating copy constructors[3].
The update also allows us to use generics.
[1]: https://github.com/jmattheis/goverter/issues/146#issuecomment-2161457915
[2]: https://github.com/jmattheis/goverter/issues/97
[3]: https://github.com/jmattheis/goverter/issues/147
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
Signed-off-by: Isabella do Amaral <idoamara@redhat.com>
* simplify converter utils using generics
Signed-off-by: Isabella do Amaral <idoamara@redhat.com>
* server: update existing objects on PATCH
Signed-off-by: Isabella do Amaral <idoamara@redhat.com>
---------
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
Signed-off-by: Isabella do Amaral <idoamara@redhat.com>
* fix error handling on GetServingEnvs
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
* use semantic error const on BuildListOption
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
* use http status code enum
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
* simplify status code conversion on routes
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
---------
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
...handle gin-generated code by openapi-codegen internally,
so to make propert string ptr semantic as expected by core lib,
as a query param might not even be passed during requests
Signed-off-by: Matteo Mortari <matteo.mortari@gmail.com>
* OAS: fixup ID -> Id in parameter names
... to preserve camelCase.
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
* fix REST api to use ModelVersionUpdate in PATCH method
Signed-off-by: Matteo Mortari <matteo.mortari@gmail.com>
* bump OAS version to v1alpha3
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
---------
Signed-off-by: Isabella Basso do Amaral <idoamara@redhat.com>
Signed-off-by: Matteo Mortari <matteo.mortari@gmail.com>
Co-authored-by: Matteo Mortari <matteo.mortari@gmail.com>
* extend core api to serving-related operations
* add goverter for serving
* Implement ServingEnvironment in core and tests
* Implement InferenceService in core layer
* Bugfix: misc
* WIP Test InferenceService
* Complete testing for InferenceService
* Implement basic ServeModel and WIP tests
* Complete ServeModel tests
* Implement remaining API and cover with tests
* Wire REST api to CORE api calls
---------
Co-authored-by: tarilabs <matteo.mortari@gmail.com>
* Fix MetadataValue to use named property value types
* Add registeredModelID query parameter for ModelVersion search
* Wire OpenAPI Metadata changes in core mapper
---------
Co-authored-by: tarilabs <matteo.mortari@gmail.com>