Skip to content
Merged
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
334cdd4
feat: initial version of experiments and runs API
dhirajsb Jun 13, 2025
c0ad3cd
feat: experiments and runs initial implementation (wip)
dhirajsb Jun 13, 2025
e908bfb
fix: fixed failing unit tests for experiments and runs
dhirajsb Jun 13, 2025
3111574
fix: added experiment and experimentrun tests
dhirajsb Jun 14, 2025
4324ba7
feat: added DataSet, Metric, and Parameter types
dhirajsb Jun 15, 2025
dc1c492
feat: added implementatio of DataSet, Metric, and Param, including se…
dhirajsb Jun 15, 2025
c7d079c
fix: replace int properties for timestamps with string because mlmd t…
dhirajsb Jun 16, 2025
e1bd49d
feat: add support for artifactType query param to filter artifact typ…
dhirajsb Jun 17, 2025
60c762f
fix: add metrics history endpoint and metric history storage for expe…
dhirajsb Jun 22, 2025
0f311d0
fix: fix artifactType query param type in generated service
dhirajsb Jun 22, 2025
122a529
fix: fix go lint error in unit test
dhirajsb Jun 23, 2025
17d3f77
fix: filter out metric history from artifacts endpoints
dhirajsb Jun 25, 2025
18b8ec1
fix: fix metric history name to use last update time to avoid name co…
dhirajsb Jun 26, 2025
f5891ed
feat: add filterQuery param on all context types to search by propert…
dhirajsb Jul 2, 2025
745db32
feat: initial version of experiment tracking implemented on embedmd, …
dhirajsb Jul 11, 2025
c9df459
feat: add support for filterQuery parameter for all ListResponse endp…
dhirajsb Jul 11, 2025
2270de9
fix: add support for stepIds query parameter in embedmd datastore
dhirajsb Jul 11, 2025
55b5b50
feat: refactor embedmd db service to use generic repository implement…
dhirajsb Jul 11, 2025
c6a3d25
fix: add support for artifactType query parameter for embedmd datastore
dhirajsb Jul 12, 2025
aceb613
fix: use mysql 8.3 in unit tests
dhirajsb Jul 15, 2025
72e6c48
fix: refactor name mapping and default name handling in embedmd datas…
dhirajsb Jul 17, 2025
fe74251
feat: support updating metrics and parameters by name, fix ignoring m…
dhirajsb Jul 17, 2025
7a95c25
fix: add missing generated openapi python client files for PR github …
dhirajsb Jul 17, 2025
317d159
fix: fix failing shared db tests
dhirajsb Jul 18, 2025
4eea254
fix: add support for metric and parameter description, add missing ty…
dhirajsb Jul 18, 2025
d6a8582
chore: update files from main
Al-Pragliola Jul 22, 2025
79b1316
Merge branch 'main' into feat/experiment-tracking-api
Al-Pragliola Jul 22, 2025
e3d7853
fix: added missing godoc comments in pkg/api/api.go
dhirajsb Jul 30, 2025
cd8cbba
fix: replace ambiguous ArtifactListReponse return type from GetExperi…
dhirajsb Jul 30, 2025
d4bb6e8
fix: fixed incorrect artifactType in dataset response, added tests to…
dhirajsb Jul 30, 2025
0d972cf
feat: add validation for endTimeSinceEpoch property on experiment run…
dhirajsb Jul 30, 2025
04c0d66
Replace value type validation map with a switch in query_translator.go
dhirajsb Jul 30, 2025
25fb7b5
fix: add service e2e tests for filterQuery, fix name query param hand…
dhirajsb Aug 2, 2025
eddc5e0
chore: code cleanup, replace interface{} with any, added vetting for …
dhirajsb Aug 2, 2025
34c3ccc
chore: added flag vF for fixed string grep exclude
dhirajsb Aug 2, 2025
1af2a6e
fix: copied orderby and parameters back to registry and catalog to ha…
dhirajsb Aug 2, 2025
41d24c1
fix: fixed mlmd query translator handling of escaped backslashes
dhirajsb Aug 2, 2025
2c67e6f
chore: add test to verify parseCustomPropertyField won't panic with a…
dhirajsb Aug 2, 2025
57e02fa
fix: sync generated python client code
dhirajsb Aug 4, 2025
a7ffa31
Merge branch 'main' into feat/experiment-tracking-api
Al-Pragliola Aug 4, 2025
fc72ee0
fix: readiness probe tests and new types
Al-Pragliola Aug 4, 2025
9e2ee3c
chore: refactor readiness_test
Al-Pragliola Aug 4, 2025
5a54028
fix: ensure parentResourceId is used to filter resource lookup by par…
dhirajsb Aug 5, 2025
76d7bb1
fix: throw an error if a metric value is missing, add test to validate
dhirajsb Aug 5, 2025
fe06cc2
fix: fix http status error code for invalid ids
dhirajsb Aug 6, 2025
dde506f
fix: more id validation, fixed filterQuery passing to DB layer
dhirajsb Aug 6, 2025
540eb49
fix: fix failing unit test
dhirajsb Aug 6, 2025
48d0f97
fix: validate experiment id when listing runs
dhirajsb Aug 6, 2025
e605f59
fix: fix failing validation test after fixing http status codes
dhirajsb Aug 6, 2025
1d49337
fix: avoid duplicate key errors if externalid is set in metric when c…
dhirajsb Aug 7, 2025
b98473b
fix: add fuzzer tests for experiment runs and new artifact types
dhirajsb Aug 7, 2025
ce403b2
chore: code cleanup and format fuzzer tests
dhirajsb Aug 7, 2025
f99d1a5
fix: log error in fuzzer test
dhirajsb Aug 7, 2025
05ea1ce
fix: handle null artifact names correctly on create
dhirajsb Aug 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,10 @@ endif

.PHONY: vet
vet:
${GO} vet ./...
@echo "Running go vet on all packages..."
@${GO} vet $$(${GO} list ./... | grep -vF github.com/kubeflow/model-registry/internal/db/filter) && \
echo "Checking filter package (parser.go excluded due to participle struct tags)..." && \
cd internal/db/filter && ${GO} build -o /dev/null . 2>&1 | grep -E "vet:|error:" || echo "✓ Filter package builds successfully"

.PHONY: clean/csi
clean/csi:
Expand Down Expand Up @@ -395,7 +398,7 @@ controller/vet: ## Run go vet against code.

.PHONY: controller/test
controller/test: controller/manifests controller/generate controller/fmt controller/vet bin/envtest ## Run tests.
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(PROJECT_BIN) -p path)" go test $$(go list ./internal/controller/... | grep -v /e2e) -coverprofile cover.out
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(PROJECT_BIN) -p path)" go test $$(go list ./internal/controller/... | grep -vF /e2e) -coverprofile cover.out

##@ Build

Expand Down
70 changes: 70 additions & 0 deletions api/openapi/catalog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,15 @@ paths:
required: true
components:
schemas:
ArtifactTypeQueryParam:
description: Supported artifact types for querying.
enum:
- model-artifact
- doc-artifact
- dataset-artifact
- metric
- parameter
type: string
BaseModel:
type: object
properties:
Expand Down Expand Up @@ -565,6 +574,43 @@ components:
type: string
in: query
required: false
filterQuery:
examples:
filterQuery:
value: "name='my-model' AND state='LIVE'"
name: filterQuery
description: |
A SQL-like query string to filter the list of entities. The query supports rich filtering capabilities with automatic type inference.

**Supported Operators:**
- Comparison: `=`, `!=`, `<>`, `>`, `<`, `>=`, `<=`
- Pattern matching: `LIKE`, `ILIKE` (case-insensitive)
- Set membership: `IN`
- Logical: `AND`, `OR`
- Grouping: `()` for complex expressions

**Data Types:**
- Strings: `"value"` or `'value'`
- Numbers: `42`, `3.14`, `1e-5`
- Booleans: `true`, `false` (case-insensitive)

**Property Access:**
- Standard properties: `name`, `id`, `state`, `createTimeSinceEpoch`
- Custom properties: Any user-defined property name
- Escaped properties: Use backticks for special characters: `` `custom-property` ``
- Type-specific access: `property.string_value`, `property.double_value`, `property.int_value`, `property.bool_value`

**Examples:**
- Basic: `name = "my-model"`
- Comparison: `accuracy > 0.95`
- Pattern: `name LIKE "%tensorflow%"`
- Complex: `(name = "model-a" OR name = "model-b") AND state = "LIVE"`
- Custom property: `framework.string_value = "pytorch"`
- Escaped property: `` `mlflow.source.type` = "notebook" ``
schema:
type: string
in: query
required: false
pageSize:
examples:
pageSize:
Expand Down Expand Up @@ -594,6 +640,30 @@ components:
$ref: "#/components/schemas/SortOrder"
in: query
required: false
artifactType:
style: form
explode: true
examples:
artifactType:
value: model-artifact
name: artifactType
description: "Specifies the artifact type for listing artifacts."
schema:
$ref: "#/components/schemas/ArtifactTypeQueryParam"
in: query
required: false
stepIds:
style: form
explode: true
examples:
stepIds:
value: "1,2,3"
name: stepIds
description: "Comma-separated list of step IDs to filter metrics by."
schema:
type: string
in: query
required: false
securitySchemes:
Bearer:
scheme: bearer
Expand Down
Loading
Loading