Skip to content

Commit 99b8eb8

Browse files
committed
Adding authentication data structures
1 parent ff8bd99 commit 99b8eb8

File tree

6 files changed

+81
-3
lines changed

6 files changed

+81
-3
lines changed

docs/src/reference/types.md

+4
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@ Metric
1818
RunData
1919
RunInfo
2020
RunInputs
21+
User
22+
Permission
23+
ExperimentPermission
24+
RegisteredModelPermission
2125
```

src/MLFlowClient.jl

+6-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ include("types/tag.jl")
2525
export Tag
2626

2727
include("types/enums.jl")
28-
export ViewType, RunStatus, ModelVersionStatus
28+
export ViewType, RunStatus, ModelVersionStatus, Permission
2929

3030
include("types/dataset.jl")
3131
export Dataset, DatasetInput
@@ -37,14 +37,17 @@ include("types/model_version.jl")
3737
export ModelVersion
3838

3939
include("types/registered_model.jl")
40-
export RegisteredModel, RegisteredModelAlias
40+
export RegisteredModel, RegisteredModelAlias, RegisteredModelPermission
4141

4242
include("types/experiment.jl")
43-
export Experiment
43+
export Experiment, ExperimentPermission
4444

4545
include("types/run.jl")
4646
export Run, Param, Metric, RunData, RunInfo, RunInputs
4747

48+
include("types/user.jl")
49+
export User
50+
4851
include("api.jl")
4952

5053
include("utils.jl")

src/types/enums.jl

+18
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,21 @@ View type for ListExperiments query.
5050
DELETED_ONLY = 2
5151
ALL = 3
5252
end
53+
54+
"""
55+
Permission
56+
57+
Permission of a user to an experiment or a registered model.
58+
59+
# Members
60+
- `READ`: Can read.
61+
- `EDIT`: Can read and update.
62+
- `MANAGE`: Can read, update, delete and manage.
63+
- `NO_PERMISSIONS`: No permissions.
64+
"""
65+
@enum Permission begin
66+
READ = 1
67+
EDIT = 2
68+
MANAGE = 3
69+
NO_PERMISSIONS = 4
70+
end

src/types/experiment.jl

+17
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,20 @@ Experiment(data::Dict{String,Any}) = Experiment(data["experiment_id"], data["nam
2424
data["artifact_location"], data["lifecycle_stage"], data["last_update_time"],
2525
data["creation_time"], [Tag(tag) for tag in get(data, "tags", [])])
2626
Base.show(io::IO, t::Experiment) = show(io, ShowCase(t, new_lines=true))
27+
28+
"""
29+
ExperimentPermission
30+
31+
# Fields
32+
- `experiment_id::String`: [`Experiment`](@ref) id.
33+
- `user_id::String`: [`User`](@ref) id.
34+
- `permission::Permission`: [`Permission`](@ref) granted.
35+
"""
36+
struct ExperimentPermission
37+
experiment_id::String
38+
user_id::String
39+
permission::Permission
40+
end
41+
ExperimentPermission(data::Dict{String,Any}) = ExperimentPermission(data["experiment_id"],
42+
data["user_id"], Permission(data["permission"]))
43+
Base.show(io::IO, t::ExperimentPermission) = show(io, ShowCase(t, new_lines=true))

src/types/registered_model.jl

+17
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,20 @@ RegisteredModel(data::Dict{String,Any}) = RegisteredModel(data["name"],
4848
[Tag(tag) for tag in get(data, "tags", [])],
4949
[RegisteredModelAlias(alias) for alias in get(data, "aliases", [])])
5050
Base.show(io::IO, t::RegisteredModel) = show(io, ShowCase(t, new_lines=true))
51+
52+
"""
53+
RegisteredModelPermission
54+
55+
# Fields
56+
- `name::String`: [`RegisteredModel`](@ref) name.
57+
- `user_id::String`: [`User`](@ref) id.
58+
- `permission::Permission`: [`Permission`](@ref) granted.
59+
"""
60+
struct RegisteredModelPermission
61+
name::String
62+
user_id::String
63+
permission::Permission
64+
end
65+
RegisteredModelPermission(data::Dict{String,Any}) = RegisteredModelPermission(data["name"],
66+
data["user_id"], Permission(data["permission"]))
67+
Base.show(io::IO, t::RegisteredModelPermission) = show(io, ShowCase(t, new_lines=true))

src/types/user.jl

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
User
3+
4+
# Fields
5+
- `id::String`: User ID.
6+
- `username::String`: Username.
7+
- `is_admin::Bool`: Whether the user is an admin.
8+
- `experiment_permissions::Array{ExperimentPermission}`: All experiment permissions
9+
explicitly granted to the user.
10+
- `registered_model_permissions::Array{RegisteredModelPermission}`: All registered model
11+
explicitly granted to the user.
12+
"""
13+
struct User
14+
id::String
15+
username::String
16+
is_admin::Bool
17+
experiment_permissions::Array{ExperimentPermission}
18+
registered_model_permissions::Array{RegisteredModelPermission}
19+
end

0 commit comments

Comments
 (0)