Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a6316fb3
Unverified
Commit
a6316fb3
authored
Sep 08, 2017
by
Jordan Liggitt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix discovery restmapper finding resources in non-preferred versions
parent
a5f76606
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
57 additions
and
5 deletions
+57
-5
test-cmd-util.sh
hack/make-rules/test-cmd-util.sh
+3
-3
restmapper.go
staging/src/k8s.io/client-go/discovery/restmapper.go
+16
-0
restmapper_test.go
staging/src/k8s.io/client-go/discovery/restmapper_test.go
+36
-0
kubectl.go
test/e2e/kubectl/kubectl.go
+2
-2
No files found.
hack/make-rules/test-cmd-util.sh
View file @
a6316fb3
...
...
@@ -1249,13 +1249,13 @@ run_kubectl_run_tests() {
kubectl delete deployment nginx-apps
"
${
kube_flags
[@]
}
"
# Pre-Condition: no Job exists
kube::test::get_object_assert cronjob
.v1beta1.batch
"{{range.items}}{{
$id_field
}}:{{end}}"
''
kube::test::get_object_assert cronjob
s
"{{range.items}}{{
$id_field
}}:{{end}}"
''
# Command
kubectl run pi
--schedule
=
"*/5 * * * *"
--generator
=
cronjob/v1beta1
"--image=
$IMAGE_PERL
"
--restart
=
OnFailure
--
perl
-Mbignum
=
bpi
-wle
'print bpi(20)'
"
${
kube_flags
[@]
}
"
# Post-Condition: CronJob "pi" is created
kube::test::get_object_assert cronjob
.v1beta1.batch
"{{range.items}}{{
$id_field
}}:{{end}}"
'pi:'
kube::test::get_object_assert cronjob
s
"{{range.items}}{{
$id_field
}}:{{end}}"
'pi:'
# Clean up
kubectl delete cronjob
.v1beta1.batch
pi
"
${
kube_flags
[@]
}
"
kubectl delete cronjob
s
pi
"
${
kube_flags
[@]
}
"
set
+o nounset
set
+o errexit
...
...
staging/src/k8s.io/client-go/discovery/restmapper.go
View file @
a6316fb3
...
...
@@ -49,6 +49,7 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V
for
_
,
group
:=
range
groupResources
{
groupPriority
=
append
(
groupPriority
,
group
.
Group
.
Name
)
// Make sure the preferred version comes first
if
len
(
group
.
Group
.
PreferredVersion
.
Version
)
!=
0
{
preferred
:=
group
.
Group
.
PreferredVersion
.
Version
if
_
,
ok
:=
group
.
VersionedResources
[
preferred
];
ok
{
...
...
@@ -72,6 +73,21 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V
continue
}
// Add non-preferred versions after the preferred version, in case there are resources that only exist in those versions
if
discoveryVersion
.
Version
!=
group
.
Group
.
PreferredVersion
.
Version
{
resourcePriority
=
append
(
resourcePriority
,
schema
.
GroupVersionResource
{
Group
:
group
.
Group
.
Name
,
Version
:
discoveryVersion
.
Version
,
Resource
:
meta
.
AnyResource
,
})
kindPriority
=
append
(
kindPriority
,
schema
.
GroupVersionKind
{
Group
:
group
.
Group
.
Name
,
Version
:
discoveryVersion
.
Version
,
Kind
:
meta
.
AnyKind
,
})
}
gv
:=
schema
.
GroupVersion
{
Group
:
group
.
Group
.
Name
,
Version
:
discoveryVersion
.
Version
}
versionMapper
:=
meta
.
NewDefaultRESTMapper
([]
schema
.
GroupVersion
{
gv
},
versionInterfaces
)
...
...
staging/src/k8s.io/client-go/discovery/restmapper_test.go
View file @
a6316fb3
...
...
@@ -67,6 +67,32 @@ func TestRESTMapper(t *testing.T) {
},
},
},
// This group tests finding and prioritizing resources that only exist in non-preferred versions
{
Group
:
metav1
.
APIGroup
{
Name
:
"unpreferred"
,
Versions
:
[]
metav1
.
GroupVersionForDiscovery
{
{
Version
:
"v1"
},
{
Version
:
"v2beta1"
},
{
Version
:
"v2alpha1"
},
},
PreferredVersion
:
metav1
.
GroupVersionForDiscovery
{
Version
:
"v1"
},
},
VersionedResources
:
map
[
string
][]
metav1
.
APIResource
{
"v1"
:
{
{
Name
:
"broccoli"
,
Namespaced
:
true
,
Kind
:
"Broccoli"
},
},
"v2beta1"
:
{
{
Name
:
"broccoli"
,
Namespaced
:
true
,
Kind
:
"Broccoli"
},
{
Name
:
"peas"
,
Namespaced
:
true
,
Kind
:
"Pea"
},
},
"v2alpha1"
:
{
{
Name
:
"broccoli"
,
Namespaced
:
true
,
Kind
:
"Broccoli"
},
{
Name
:
"peas"
,
Namespaced
:
true
,
Kind
:
"Pea"
},
},
},
},
}
restMapper
:=
NewRESTMapper
(
resources
,
nil
)
...
...
@@ -123,6 +149,16 @@ func TestRESTMapper(t *testing.T) {
Kind
:
"Job"
,
},
},
{
input
:
schema
.
GroupVersionResource
{
Resource
:
"peas"
,
},
want
:
schema
.
GroupVersionKind
{
Group
:
"unpreferred"
,
Version
:
"v2beta1"
,
Kind
:
"Pea"
,
},
},
}
for
_
,
tc
:=
range
kindTCs
{
...
...
test/e2e/kubectl/kubectl.go
View file @
a6316fb3
...
...
@@ -234,7 +234,7 @@ var _ = SIGDescribe("Kubectl alpha client", func() {
})
AfterEach
(
func
()
{
framework
.
RunKubectlOrDie
(
"delete"
,
"cronjob
.v2alpha1.batch
"
,
cjName
,
nsFlag
)
framework
.
RunKubectlOrDie
(
"delete"
,
"cronjob
s
"
,
cjName
,
nsFlag
)
})
It
(
"should create a CronJob"
,
func
()
{
...
...
@@ -1380,7 +1380,7 @@ metadata:
})
AfterEach
(
func
()
{
framework
.
RunKubectlOrDie
(
"delete"
,
"cronjob
.v1beta1.batch
"
,
cjName
,
nsFlag
)
framework
.
RunKubectlOrDie
(
"delete"
,
"cronjob
s
"
,
cjName
,
nsFlag
)
})
It
(
"should create a CronJob"
,
func
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment