Skip to content

Commit 03aa48a

Browse files
committed
Implementing tag operations for both RegisteredModel and ModelVersion
1 parent 645866f commit 03aa48a

File tree

7 files changed

+148
-4
lines changed

7 files changed

+148
-4
lines changed

docs/src/reference/model_version.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ deletemodelversion
99
searchmodelversions
1010
getdownloaduriformodelversionartifacts
1111
transitionmodelversionstage
12+
setmodelversiontag
13+
deletemodelversiontag
1214
```

docs/src/reference/registered_model.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ renameregisteredmodel
66
updateregisteredmodel
77
deleteregisteredmodel
88
searchregisteredmodels
9+
setregisteredmodeltag
10+
deleteregisteredmodeltag
911
```

src/MLFlowClient.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,12 @@ export refresh, getmetrichistory
6868

6969
include("services/registered_model.jl")
7070
export getregisteredmodel, createregisteredmodel, deleteregisteredmodel,
71-
renameregisteredmodel, updateregisteredmodel, searchregisteredmodels
71+
renameregisteredmodel, updateregisteredmodel, searchregisteredmodels,
72+
setregisteredmodeltag, deleteregisteredmodeltag
7273

7374
include("services/model_version.jl")
7475
export getlatestmodelversions, getmodelversion, createmodelversion, deletemodelversion,
7576
updatemodelversion, searchmodelversions, getdownloaduriformodelversionartifacts,
76-
transitionmodelversionstage
77+
transitionmodelversionstage, setmodelversiontag, deletemodelversiontag
7778

7879
end

src/services/model_version.jl

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,3 +169,41 @@ function transitionmodelversionstage(instance::MLFlow, name::String, version::St
169169
version=version, stage=stage, archive_existing_versions=archive_existing_versions)
170170
return result["model_version"] |> ModelVersion
171171
end
172+
173+
"""
174+
setmodelversiontag(instance::MLFlow, name::String, key::String, value::String)
175+
176+
# Arguments
177+
- `instance:` [`MLFlow`](@ref) configuration.
178+
- `name:` Unique name of the model.
179+
- `version:` Model version number.
180+
- `key:` Name of the [`Tag`](@ref).
181+
- `value:` String value of the tag being logged.
182+
183+
# Returns
184+
`true` if successful. Otherwise, raises exception.
185+
"""
186+
function setmodelversiontag(instance::MLFlow, name::String, version::String, key::String,
187+
value::String)::Bool
188+
mlfpost(instance, "model-versions/set-tag"; name=name, version=version, key=key,
189+
value=value)
190+
return true
191+
end
192+
193+
"""
194+
deletemodelversiontag(instance::MLFlow, name::String, version::String, key::String)
195+
196+
# Arguments
197+
- `instance:` [`MLFlow`](@ref) configuration.
198+
- `name:` Name of the [`RegisteredModel`](@ref) that the tag was logged under.
199+
- `version:` [`ModelVersion`](@ref) number that the tag was logged under.
200+
- `key:` Name of the [`Tag`](@ref).
201+
202+
# Returns
203+
`true` if successful. Otherwise, raises exception.
204+
"""
205+
function deletemodelversiontag(instance::MLFlow, name::String, version::String,
206+
key::String)::Bool
207+
mlfdelete(instance, "model-versions/delete-tag"; name=name, version=version, key=key)
208+
return true
209+
end

src/services/registered_model.jl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,36 @@ function searchregisteredmodels(instance::MLFlow; filter::String="",
123123

124124
return registered_models, next_page_token
125125
end
126+
127+
"""
128+
setregisteredmodeltag(instance::MLFlow, name::String, key::String, value::String)
129+
130+
# Arguments
131+
- `instance:` [`MLFlow`](@ref) configuration.
132+
- `name:` Unique name of the model.
133+
- `key:` Name of the [`Tag`](@ref).
134+
- `value:` String value of the [`Tag`](@ref) being logged.
135+
136+
# Returns
137+
`true` if successful. Otherwise, raises exception.
138+
"""
139+
function setregisteredmodeltag(instance::MLFlow, name::String, key::String, value::String)::Bool
140+
mlfpost(instance, "registered-models/set-tag"; name=name, key=key, value=value)
141+
return true
142+
end
143+
144+
"""
145+
deleteregisteredmodeltag(instance::MLFlow, name::String, key::String)
146+
147+
# Arguments
148+
- `instance:` [`MLFlow`](@ref) configuration.
149+
- `name:` Name of the [`RegisteredModel`](@ref) that the tag was logged under.
150+
- `key:` Name of the [`Tag`](@ref).
151+
152+
# Returns
153+
`true` if successful. Otherwise, raises exception.
154+
"""
155+
function deleteregisteredmodeltag(instance::MLFlow, name::String, key::String)::Bool
156+
mlfdelete(instance, "registered-models/delete-tag"; name=name, key=key)
157+
return true
158+
end

test/services/model_version.jl

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ end
142142
createregisteredmodel(mlf, "missy")
143143

144144
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
145-
download_uri = getdownloaduriformodelversionartifacts(mlf, "missy", model_version.version)
145+
download_uri = getdownloaduriformodelversionartifacts(mlf, model_version.name,
146+
model_version.version)
146147

147148
@test download_uri isa String
148149
@test download_uri == run.info.artifact_uri
@@ -159,7 +160,8 @@ end
159160
createregisteredmodel(mlf, "missy")
160161

161162
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
162-
updated_model_version = transitionmodelversionstage(mlf, "missy", model_version.version, "Production", true)
163+
updated_model_version = transitionmodelversionstage(mlf, model_version.name,
164+
model_version.version, "Production", true)
163165

164166
@test updated_model_version isa ModelVersion
165167
@test updated_model_version.name == model_version.name
@@ -171,3 +173,42 @@ end
171173
deleteregisteredmodel(mlf, "missy")
172174
deleteexperiment(mlf, experiment)
173175
end
176+
177+
@testset verbose = true "set model version tag" begin
178+
@ensuremlf
179+
180+
experiment = createexperiment(mlf, UUIDs.uuid4() |> string)
181+
run = createrun(mlf, experiment)
182+
createregisteredmodel(mlf, "missy")
183+
184+
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
185+
setmodelversiontag(mlf, model_version.name, model_version.version, "test_key",
186+
"test_value")
187+
retrieved_model_version = getmodelversion(mlf, "missy", model_version.version)
188+
189+
@test retrieved_model_version.tags |> length == 1
190+
@test (retrieved_model_version.tags |> first).key == "test_key"
191+
@test (retrieved_model_version.tags |> first).value == "test_value"
192+
193+
deleteregisteredmodel(mlf, "missy")
194+
deleteexperiment(mlf, experiment)
195+
end
196+
197+
@testset verbose = true "delete model version tag" begin
198+
@ensuremlf
199+
200+
experiment = createexperiment(mlf, UUIDs.uuid4() |> string)
201+
run = createrun(mlf, experiment)
202+
createregisteredmodel(mlf, "missy")
203+
204+
model_version = createmodelversion(mlf, "missy", run.info.artifact_uri)
205+
setmodelversiontag(mlf, model_version.name, model_version.version, "test_key",
206+
"test_value")
207+
deletemodelversiontag(mlf, model_version.name, model_version.version, "test_key")
208+
retrieved_model_version = getmodelversion(mlf, "missy", model_version.version)
209+
210+
@test isempty(retrieved_model_version.tags)
211+
212+
deleteregisteredmodel(mlf, "missy")
213+
deleteexperiment(mlf, experiment)
214+
end

test/services/registered_model.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,30 @@ end
110110
deleteregisteredmodel(mlf, "missy")
111111
deleteregisteredmodel(mlf, "gala")
112112
end
113+
114+
@testset verbose = true "set registered model tag" begin
115+
@ensuremlf
116+
117+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
118+
setregisteredmodeltag(mlf, registered_model.name, "test_key", "test_value")
119+
120+
retrieved_registered_model = getregisteredmodel(mlf, registered_model.name)
121+
@test retrieved_registered_model.tags |> !isempty
122+
@test (retrieved_registered_model.tags |> first).key == "test_key"
123+
@test (retrieved_registered_model.tags |> first).value == "test_value"
124+
125+
deleteregisteredmodel(mlf, "missy")
126+
end
127+
128+
@testset verbose = true "delete registered model tag" begin
129+
@ensuremlf
130+
131+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
132+
setregisteredmodeltag(mlf, registered_model.name, "test_key", "test_value")
133+
deleteregisteredmodeltag(mlf, registered_model.name, "test_key")
134+
135+
retrieved_registered_model = getregisteredmodel(mlf, registered_model.name)
136+
@test retrieved_registered_model.tags |> isempty
137+
138+
deleteregisteredmodel(mlf, "missy")
139+
end

0 commit comments

Comments
 (0)