Skip to content

Commit 3628b3d

Browse files
committed
Implementing RegisteredModel operations
1 parent 3602bd9 commit 3628b3d

File tree

5 files changed

+150
-2
lines changed

5 files changed

+150
-2
lines changed

docs/src/reference/registered_model.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ setregisteredmodeltag
1010
deleteregisteredmodeltag
1111
deleteregisteredmodelalias
1212
setregisteredmodelalias
13+
createregisteredmodelpermission
14+
getregisteredmodelpermission
15+
updateregisteredmodelpermission
16+
deleteregisteredmodelpermission
1317
```

src/MLFlowClient.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ include("services/registered_model.jl")
7575
export getregisteredmodel, createregisteredmodel, deleteregisteredmodel,
7676
renameregisteredmodel, updateregisteredmodel, searchregisteredmodels,
7777
setregisteredmodeltag, deleteregisteredmodeltag, deleteregisteredmodelalias,
78-
setregisteredmodelalias
78+
setregisteredmodelalias, createregisteredmodelpermission, getregisteredmodelpermission,
79+
updateregisteredmodelpermission, deleteregisteredmodelpermission
7980

8081
include("services/model_version.jl")
8182
export getlatestmodelversions, getmodelversion, createmodelversion, deletemodelversion,

src/services/registered_model.jl

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,79 @@ function setregisteredmodelalias(instance::MLFlow, name::String, alias::String,
190190
mlfpost(instance, "registered-models/alias"; name=name, alias=alias, version=version)
191191
return true
192192
end
193+
194+
"""
195+
createregisteredmodelpermission(instance::MLFlow, name::String, username::String,
196+
permission::Permission)
197+
198+
# Arguments
199+
- `instance:` [`MLFlow`](@ref) configuration.
200+
- `name:` [`RegisteredModel`](@ref) name.
201+
- `username:` [`User`](@ref) username.
202+
- `permission:` [`Permission`](@ref) to grant.
203+
204+
# Returns
205+
An instance of type [`RegisteredModelPermission`](@ref).
206+
"""
207+
function createregisteredmodelpermission(instance::MLFlow, name::String, username::String,
208+
permission::Permission)::RegisteredModelPermission
209+
result = mlfpost(instance, "registered-models/permissions/create"; name=name,
210+
username=username, permission=permission)
211+
return result["registered_model_permission"] |> RegisteredModelPermission
212+
end
213+
214+
"""
215+
getregisteredmodelpermission(instance::MLFlow, name::String, username::String)
216+
217+
# Arguments
218+
- `instance:` [`MLFlow`](@ref) configuration.
219+
- `name:` [`RegisteredModel`](@ref) name.
220+
- `username:` [`User`](@ref) username.
221+
222+
# Returns
223+
An instance of type [`RegisteredModelPermission`](@ref).
224+
"""
225+
function getregisteredmodelpermission(instance::MLFlow, name::String,
226+
username::String)::RegisteredModelPermission
227+
result = mlfget(instance, "registered-models/permissions/get"; name=name,
228+
username=username)
229+
return result["registered_model_permission"] |> RegisteredModelPermission
230+
end
231+
232+
"""
233+
updateregisteredmodelpermission(instance::MLFlow, name::String, username::String,
234+
permission::Permission)
235+
236+
# Arguments
237+
- `instance:` [`MLFlow`](@ref) configuration.
238+
- `name:` [`RegisteredModel`](@ref) name.
239+
- `username:` [`User`](@ref) username.
240+
- `permission:` New [`Permission`](@ref) to grant.
241+
242+
# Returns
243+
`true` if successful. Otherwise, raises exception.
244+
"""
245+
function updateregisteredmodelpermission(instance::MLFlow, name::String, username::String,
246+
permission::Permission)::Bool
247+
mlfpatch(instance, "registered-models/permissions/update"; name=name, username=username,
248+
permission=permission)
249+
return true
250+
end
251+
252+
"""
253+
deleteregisteredmodelpermission(instance::MLFlow, name::String, username::String)
254+
255+
# Arguments
256+
- `instance:` [`MLFlow`](@ref) configuration.
257+
- `name:` [`RegisteredModel`](@ref) name.
258+
- `username:` [`User`](@ref) username.
259+
260+
# Returns
261+
`true` if successful. Otherwise, raises exception.
262+
"""
263+
function deleteregisteredmodelpermission(instance::MLFlow, name::String,
264+
username::String)::Bool
265+
mlfdelete(instance, "registered-models/permissions/delete"; name=name,
266+
username=username)
267+
return true
268+
end

src/types/registered_model.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@ struct RegisteredModelPermission
6363
permission::Permission
6464
end
6565
RegisteredModelPermission(data::Dict{String,Any}) = RegisteredModelPermission(data["name"],
66-
data["user_id"], Permission(data["permission"]))
66+
data["user_id"] |> string, Permission(data["permission"]))
6767
Base.show(io::IO, t::RegisteredModelPermission) = show(io, ShowCase(t, new_lines=true))

test/services/registered_model.jl

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,70 @@ end
176176
deleteregisteredmodel(mlf, "missy")
177177
deleteexperiment(mlf, experiment)
178178
end
179+
180+
@testset verbose = true "create registered model permission" begin
181+
@ensuremlf
182+
183+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
184+
user = createuser(mlf, "missy", "gala")
185+
permission = createregisteredmodelpermission(mlf, registered_model.name, user.username, Permission("READ"))
186+
187+
@test permission isa RegisteredModelPermission
188+
@test permission.name == registered_model.name
189+
@test permission.user_id == user.id
190+
@test permission.permission == Permission("READ")
191+
192+
deleteregisteredmodelpermission(mlf, registered_model.name, user.username)
193+
deleteuser(mlf, user.username)
194+
deleteregisteredmodel(mlf, "missy")
195+
end
196+
197+
@testset verbose = true "get registered model permission" begin
198+
@ensuremlf
199+
200+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
201+
user = createuser(mlf, "missy", "gala")
202+
permission = createregisteredmodelpermission(mlf, registered_model.name, user.username, Permission("READ"))
203+
retrieved_permission = getregisteredmodelpermission(mlf, registered_model.name, user.username)
204+
205+
@test retrieved_permission isa RegisteredModelPermission
206+
@test retrieved_permission.name == registered_model.name
207+
@test retrieved_permission.user_id == user.id
208+
@test retrieved_permission.permission == Permission("READ")
209+
210+
deleteregisteredmodelpermission(mlf, registered_model.name, user.username)
211+
deleteuser(mlf, user.username)
212+
deleteregisteredmodel(mlf, "missy")
213+
end
214+
215+
@testset verbose = true "update registered model permission" begin
216+
@ensuremlf
217+
218+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
219+
user = createuser(mlf, "missy", "gala")
220+
permission = createregisteredmodelpermission(mlf, registered_model.name, user.username, Permission("READ"))
221+
updateregisteredmodelpermission(mlf, registered_model.name, user.username, Permission("MANAGE"))
222+
retrieved_permission = getregisteredmodelpermission(mlf, registered_model.name, user.username)
223+
224+
@test retrieved_permission isa RegisteredModelPermission
225+
@test retrieved_permission.name == registered_model.name
226+
@test retrieved_permission.user_id == user.id
227+
@test retrieved_permission.permission == Permission("MANAGE")
228+
229+
deleteregisteredmodelpermission(mlf, registered_model.name, user.username)
230+
deleteuser(mlf, user.username)
231+
deleteregisteredmodel(mlf, "missy")
232+
end
233+
#
234+
@testset verbose = true "delete registered model permission" begin
235+
@ensuremlf
236+
237+
registered_model = createregisteredmodel(mlf, "missy"; description="gala")
238+
user = createuser(mlf, "missy", "gala")
239+
permission = createregisteredmodelpermission(mlf, registered_model.name, user.username, Permission("READ"))
240+
deleteregisteredmodelpermission(mlf, registered_model.name, user.username)
241+
242+
@test_throws ErrorException getregisteredmodelpermission(mlf, registered_model.name, user.username)
243+
deleteuser(mlf, user.username)
244+
deleteregisteredmodel(mlf, "missy")
245+
end

0 commit comments

Comments
 (0)