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
e3a8b5e2
Unverified
Commit
e3a8b5e2
authored
Sep 27, 2017
by
Jordan Liggitt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Calculate patches for commands using input version
parent
e5175223
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
35 additions
and
5 deletions
+35
-5
test-cmd-util.sh
hack/make-rules/test-cmd-util.sh
+19
-0
helper.go
pkg/kubectl/cmd/set/helper.go
+3
-1
set_env.go
pkg/kubectl/cmd/set/set_env.go
+3
-1
set_image.go
pkg/kubectl/cmd/set/set_image.go
+3
-1
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+3
-1
set_subject.go
pkg/kubectl/cmd/set/set_subject.go
+4
-1
No files found.
hack/make-rules/test-cmd-util.sh
View file @
e3a8b5e2
...
@@ -2985,6 +2985,16 @@ run_rs_tests() {
...
@@ -2985,6 +2985,16 @@ run_rs_tests() {
# Cleanup services
# Cleanup services
kubectl delete service frontend
{
,-2
}
"
${
kube_flags
[@]
}
"
kubectl delete service frontend
{
,-2
}
"
${
kube_flags
[@]
}
"
# Test set commands
# Pre-condition: frontend replica set exists at generation 1
kube::test::get_object_assert
'rs frontend'
"{{
${
generation_field
}
}}"
'1'
kubectl
set
image rs/frontend
"
${
kube_flags
[@]
}
"
*
=
gcr.io/google-containers/pause:test-cmd
kube::test::get_object_assert
'rs frontend'
"{{
${
generation_field
}
}}"
'2'
kubectl
set env
rs/frontend
"
${
kube_flags
[@]
}
"
foo
=
bar
kube::test::get_object_assert
'rs frontend'
"{{
${
generation_field
}
}}"
'3'
kubectl
set
resources rs/frontend
"
${
kube_flags
[@]
}
"
--limits
=
cpu
=
200m,memory
=
512Mi
kube::test::get_object_assert
'rs frontend'
"{{
${
generation_field
}
}}"
'4'
### Delete replica set with id
### Delete replica set with id
# Pre-condition: frontend replica set exists
# Pre-condition: frontend replica set exists
kube::test::get_object_assert rs
"{{range.items}}{{
$id_field
}}:{{end}}"
'frontend:'
kube::test::get_object_assert rs
"{{range.items}}{{
$id_field
}}:{{end}}"
'frontend:'
...
@@ -3064,6 +3074,14 @@ run_daemonset_tests() {
...
@@ -3064,6 +3074,14 @@ run_daemonset_tests() {
kubectl apply
-f
hack/testdata/rollingupdate-daemonset.yaml
"
${
kube_flags
[@]
}
"
kubectl apply
-f
hack/testdata/rollingupdate-daemonset.yaml
"
${
kube_flags
[@]
}
"
# Template Generation should stay 1
# Template Generation should stay 1
kube::test::get_object_assert
'daemonsets bind'
"{{
${
template_generation_field
}
}}"
'1'
kube::test::get_object_assert
'daemonsets bind'
"{{
${
template_generation_field
}
}}"
'1'
# Test set commands
kubectl
set
image daemonsets/bind
"
${
kube_flags
[@]
}
"
*
=
gcr.io/google-containers/pause:test-cmd
kube::test::get_object_assert
'daemonsets bind'
"{{
${
template_generation_field
}
}}"
'2'
kubectl
set env
daemonsets/bind
"
${
kube_flags
[@]
}
"
foo
=
bar
kube::test::get_object_assert
'daemonsets bind'
"{{
${
template_generation_field
}
}}"
'3'
kubectl
set
resources daemonsets/bind
"
${
kube_flags
[@]
}
"
--limits
=
cpu
=
200m,memory
=
512Mi
kube::test::get_object_assert
'daemonsets bind'
"{{
${
template_generation_field
}
}}"
'4'
# Clean up
# Clean up
kubectl delete
-f
hack/testdata/rollingupdate-daemonset.yaml
"
${
kube_flags
[@]
}
"
kubectl delete
-f
hack/testdata/rollingupdate-daemonset.yaml
"
${
kube_flags
[@]
}
"
...
@@ -4355,6 +4373,7 @@ runTests() {
...
@@ -4355,6 +4373,7 @@ runTests() {
change_cause_annotation
=
'.*kubernetes.io/change-cause.*'
change_cause_annotation
=
'.*kubernetes.io/change-cause.*'
pdb_min_available
=
".spec.minAvailable"
pdb_min_available
=
".spec.minAvailable"
pdb_max_unavailable
=
".spec.maxUnavailable"
pdb_max_unavailable
=
".spec.maxUnavailable"
generation_field
=
".metadata.generation"
template_generation_field
=
".spec.templateGeneration"
template_generation_field
=
".spec.templateGeneration"
container_len
=
"(len .spec.template.spec.containers)"
container_len
=
"(len .spec.template.spec.containers)"
image_field0
=
"(index .spec.template.spec.containers 0).image"
image_field0
=
"(index .spec.template.spec.containers 0).image"
...
...
pkg/kubectl/cmd/set/helper.go
View file @
e3a8b5e2
...
@@ -126,7 +126,9 @@ type patchFn func(*resource.Info) ([]byte, error)
...
@@ -126,7 +126,9 @@ type patchFn func(*resource.Info) ([]byte, error)
// the changes in the object. Encoder must be able to encode the info into the appropriate destination type.
// the changes in the object. Encoder must be able to encode the info into the appropriate destination type.
// This function returns whether the mutation function made any change in the original object.
// This function returns whether the mutation function made any change in the original object.
func
CalculatePatch
(
patch
*
Patch
,
encoder
runtime
.
Encoder
,
mutateFn
patchFn
)
bool
{
func
CalculatePatch
(
patch
*
Patch
,
encoder
runtime
.
Encoder
,
mutateFn
patchFn
)
bool
{
patch
.
Before
,
patch
.
Err
=
runtime
.
Encode
(
encoder
,
patch
.
Info
.
Object
)
versionedEncoder
:=
api
.
Codecs
.
EncoderForVersion
(
encoder
,
patch
.
Info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
patch
.
Before
,
patch
.
Err
=
runtime
.
Encode
(
versionedEncoder
,
patch
.
Info
.
Object
)
patch
.
After
,
patch
.
Err
=
mutateFn
(
patch
.
Info
)
patch
.
After
,
patch
.
Err
=
mutateFn
(
patch
.
Info
)
if
patch
.
Err
!=
nil
{
if
patch
.
Err
!=
nil
{
...
...
pkg/kubectl/cmd/set/set_env.go
View file @
e3a8b5e2
...
@@ -381,7 +381,9 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
...
@@ -381,7 +381,9 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
})
})
if
err
==
nil
{
if
err
==
nil
{
return
runtime
.
Encode
(
o
.
Encoder
,
info
.
Object
)
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
versionedEncoder
:=
api
.
Codecs
.
EncoderForVersion
(
o
.
Encoder
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
return
runtime
.
Encode
(
versionedEncoder
,
info
.
Object
)
}
}
return
nil
,
err
return
nil
,
err
})
})
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
e3a8b5e2
...
@@ -225,7 +225,9 @@ func (o *ImageOptions) Run() error {
...
@@ -225,7 +225,9 @@ func (o *ImageOptions) Run() error {
return
nil
return
nil
})
})
if
transformed
&&
err
==
nil
{
if
transformed
&&
err
==
nil
{
return
runtime
.
Encode
(
o
.
Encoder
,
info
.
Object
)
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
versionedEncoder
:=
api
.
Codecs
.
EncoderForVersion
(
o
.
Encoder
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
return
runtime
.
Encode
(
versionedEncoder
,
info
.
Object
)
}
}
return
nil
,
err
return
nil
,
err
})
})
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
e3a8b5e2
...
@@ -216,7 +216,9 @@ func (o *ResourcesOptions) Run() error {
...
@@ -216,7 +216,9 @@ func (o *ResourcesOptions) Run() error {
return
nil
return
nil
})
})
if
transformed
&&
err
==
nil
{
if
transformed
&&
err
==
nil
{
return
runtime
.
Encode
(
o
.
Encoder
,
info
.
Object
)
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
versionedEncoder
:=
api
.
Codecs
.
EncoderForVersion
(
o
.
Encoder
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
return
runtime
.
Encode
(
versionedEncoder
,
info
.
Object
)
}
}
return
nil
,
err
return
nil
,
err
})
})
...
...
pkg/kubectl/cmd/set/set_subject.go
View file @
e3a8b5e2
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
...
@@ -218,7 +219,9 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
...
@@ -218,7 +219,9 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
transformed
,
err
:=
updateSubjectForObject
(
info
.
Object
,
subjects
,
fn
)
transformed
,
err
:=
updateSubjectForObject
(
info
.
Object
,
subjects
,
fn
)
if
transformed
&&
err
==
nil
{
if
transformed
&&
err
==
nil
{
return
runtime
.
Encode
(
o
.
Encoder
,
info
.
Object
)
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec, use info.VersionedObject, and avoid conversion completely
versionedEncoder
:=
api
.
Codecs
.
EncoderForVersion
(
o
.
Encoder
,
info
.
Mapping
.
GroupVersionKind
.
GroupVersion
())
return
runtime
.
Encode
(
versionedEncoder
,
info
.
Object
)
}
}
return
nil
,
err
return
nil
,
err
})
})
...
...
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