Skip to content

Commit 0978339

Browse files
authored
support other api versions (#22)
* Support other API versions
1 parent fe00a06 commit 0978339

File tree

1 file changed

+26
-31
lines changed

1 file changed

+26
-31
lines changed

src/simpleapi.jl

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,21 @@ sel(cnd::String...) = join(cnd, ", ")
99

1010
_delopts(; kwargs...) = Typedefs.MetaV1.DeleteOptions(; preconditions=Typedefs.MetaV1.Preconditions(; kwargs...), kwargs...)
1111

12-
function list(ctx::KuberContext, O::Symbol, name::String; namespace::Union{String,Nothing}=ctx.namespace, kwargs...)
12+
function _get_apictx(ctx::KuberContext, O::Symbol, apiversion::Union{String,Nothing})
13+
if apiversion !== nothing
14+
k = Kuber.api_group_type(apiversion)
15+
apictx = k(ctx.client)
16+
else
17+
kapi = ctx.modelapi[O]
18+
apictx = kapi.api(ctx.client)
19+
end
20+
apictx
21+
end
22+
23+
function list(ctx::KuberContext, O::Symbol, name::String, apiversion::Union{String,Nothing}=nothing; namespace::Union{String,Nothing}=ctx.namespace, kwargs...)
1324
isempty(ctx.apis) && set_api_versions!(ctx)
1425

15-
kapi = ctx.modelapi[O]
16-
apictx = kapi.api(ctx.client)
26+
apictx = _get_apictx(ctx, O, apiversion)
1727
namespaced = (namespace !== nothing) && !isempty(namespace)
1828
allnamespaces = namespaced && (namespace == "*")
1929

@@ -29,11 +39,10 @@ function list(ctx::KuberContext, O::Symbol, name::String; namespace::Union{Strin
2939
end
3040
end
3141

32-
function list(ctx::KuberContext, O::Symbol; namespace::Union{String,Nothing}=ctx.namespace, kwargs...)
42+
function list(ctx::KuberContext, O::Symbol, apiversion::Union{String,Nothing}=nothing; namespace::Union{String,Nothing}=ctx.namespace, kwargs...)
3343
isempty(ctx.apis) && set_api_versions!(ctx)
3444

35-
kapi = ctx.modelapi[O]
36-
apictx = kapi.api(ctx.client)
45+
apictx = _get_apictx(ctx, O, apiversion)
3746
namespaced = (namespace !== nothing) && !isempty(namespace)
3847
allnamespaces = namespaced && (namespace == "*")
3948

@@ -49,12 +58,10 @@ function list(ctx::KuberContext, O::Symbol; namespace::Union{String,Nothing}=ctx
4958
end
5059
end
5160

52-
function get(ctx::KuberContext, O::Symbol, name::String; kwargs...)
61+
function get(ctx::KuberContext, O::Symbol, name::String, apiversion::Union{String,Nothing}=nothing; kwargs...)
5362
isempty(ctx.apis) && set_api_versions!(ctx)
5463

55-
kapi = ctx.modelapi[O]
56-
apictx = kapi.api(ctx.client)
57-
64+
apictx = _get_apictx(ctx, O, apiversion)
5865
try
5966
apicall = eval(Symbol("read$O"))
6067
return apicall(apictx, name; kwargs...)
@@ -65,12 +72,10 @@ function get(ctx::KuberContext, O::Symbol, name::String; kwargs...)
6572
end
6673
end
6774

68-
function get(ctx::KuberContext, O::Symbol; label_selector=nothing, namespace::Union{String,Nothing}=ctx.namespace)
75+
function get(ctx::KuberContext, O::Symbol, apiversion::Union{String,Nothing}=nothing; label_selector=nothing, namespace::Union{String,Nothing}=ctx.namespace)
6976
isempty(ctx.apis) && set_api_versions!(ctx)
7077

71-
kapi = ctx.modelapi[O]
72-
apictx = kapi.api(ctx.client)
73-
78+
apictx = _get_apictx(ctx, O, apiversion)
7479
try
7580
apiname = "list$O"
7681
(namespace === nothing) && (apiname *= "ForAllNamespaces")
@@ -92,15 +97,7 @@ end
9297
function put!(ctx::KuberContext, O::Symbol, d::Dict{String,Any})
9398
isempty(ctx.apis) && set_api_versions!(ctx)
9499

95-
if haskey(d, "apiVersion")
96-
v = d["apiVersion"]
97-
k = Kuber.api_group_type(v)
98-
apictx = k(ctx.client)
99-
else
100-
kapi = ctx.modelapi[O]
101-
apictx = kapi.api(ctx.client)
102-
end
103-
100+
apictx = _get_apictx(ctx, O, get(d, "apiVersion", nothing))
104101
try
105102
apicall = eval(Symbol("create$O"))
106103
return apicall(apictx, d)
@@ -115,14 +112,13 @@ function delete!(ctx::KuberContext, v::T; kwargs...) where {T<:SwaggerModel}
115112
vjson = convert(Dict{String,Any}, v)
116113
kind = vjson["kind"]
117114
name = vjson["metadata"]["name"]
118-
delete!(ctx, Symbol(kind), name; kwargs...)
115+
delete!(ctx, Symbol(kind), name, get(vjson, "apiVersion", nothing); kwargs...)
119116
end
120117

121-
function delete!(ctx::KuberContext, O::Symbol, name::String; kwargs...)
118+
function delete!(ctx::KuberContext, O::Symbol, name::String, apiversion::Union{String,Nothing}=nothing; kwargs...)
122119
isempty(ctx.apis) && set_api_versions!(ctx)
120+
apictx = _get_apictx(ctx, O, apiversion)
123121

124-
kapi = ctx.modelapi[O]
125-
apictx = kapi.api(ctx.client)
126122
params = [apictx, name]
127123

128124
try
@@ -140,14 +136,13 @@ function update!(ctx::KuberContext, v::T, patch, patch_type) where {T<:SwaggerMo
140136
vjson = convert(Dict{String,Any}, v)
141137
kind = vjson["kind"]
142138
name = vjson["metadata"]["name"]
143-
update!(ctx, Symbol(kind), name, patch, patch_type)
139+
update!(ctx, Symbol(kind), name, patch, patch_type, get(vjson, "apiVersion", nothing))
144140
end
145141

146-
function update!(ctx::KuberContext, O::Symbol, name::String, patch, patch_type)
142+
function update!(ctx::KuberContext, O::Symbol, name::String, patch, patch_type, apiversion::Union{String,Nothing}=nothing)
147143
isempty(ctx.apis) && set_api_versions!(ctx)
148144

149-
kapi = ctx.modelapi[O]
150-
apictx = kapi.api(ctx.client)
145+
apictx = _get_apictx(ctx, O, apiversion)
151146

152147
try
153148
apicall = eval(Symbol("patch$O"))

0 commit comments

Comments
 (0)