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
1d053c4f
Commit
1d053c4f
authored
Aug 15, 2017
by
Dr. Stefan Schimanski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
controllers: simplify deepcopy calls
parent
28f6b3fc
Hide whitespace changes
Inline
Side-by-side
Showing
50 changed files
with
86 additions
and
475 deletions
+86
-475
BUILD
pkg/controller/bootstrap/BUILD
+0
-1
bootstrapsigner.go
pkg/controller/bootstrap/bootstrapsigner.go
+1
-14
BUILD
pkg/controller/certificates/BUILD
+0
-1
certificate_controller.go
pkg/controller/certificates/certificate_controller.go
+1
-6
node_controller.go
pkg/controller/cloud/node_controller.go
+1
-6
controller_utils.go
pkg/controller/controller_utils.go
+5
-16
daemon_controller.go
pkg/controller/daemon/daemon_controller.go
+1
-6
update.go
pkg/controller/daemon/update.go
+3
-18
BUILD
pkg/controller/daemon/util/BUILD
+0
-1
daemonset_util.go
pkg/controller/daemon/util/daemonset_util.go
+1
-3
deployment_controller.go
pkg/controller/deployment/deployment_controller.go
+1
-4
recreate_test.go
pkg/controller/deployment/recreate_test.go
+1
-7
sync.go
pkg/controller/deployment/sync.go
+4
-16
BUILD
pkg/controller/deployment/util/BUILD
+0
-2
deployment_util.go
pkg/controller/deployment/util/deployment_util.go
+2
-23
deployment_util_test.go
pkg/controller/deployment/util/deployment_util_test.go
+2
-4
pod_util.go
pkg/controller/deployment/util/pod_util.go
+1
-6
replicaset_util.go
pkg/controller/deployment/util/replicaset_util.go
+3
-13
BUILD
pkg/controller/disruption/BUILD
+0
-1
disruption.go
pkg/controller/disruption/disruption.go
+2
-12
disruption_test.go
pkg/controller/disruption/disruption_test.go
+1
-7
BUILD
pkg/controller/endpoint/BUILD
+0
-1
endpoints_controller.go
pkg/controller/endpoint/endpoints_controller.go
+1
-6
BUILD
pkg/controller/history/BUILD
+0
-1
controller_history.go
pkg/controller/history/controller_history.go
+8
-37
node_controller.go
pkg/controller/node/node_controller.go
+1
-6
BUILD
pkg/controller/node/util/BUILD
+0
-1
controller_utils.go
pkg/controller/node/util/controller_utils.go
+8
-32
horizontal.go
pkg/controller/podautoscaler/horizontal.go
+2
-13
replica_set.go
pkg/controller/replicaset/replica_set.go
+1
-5
replication_controller.go
pkg/controller/replication/replication_controller.go
+1
-5
BUILD
pkg/controller/service/BUILD
+0
-1
service_controller.go
pkg/controller/service/service_controller.go
+1
-5
service_controller_test.go
pkg/controller/service/service_controller_test.go
+1
-6
BUILD
pkg/controller/statefulset/BUILD
+0
-3
stateful_pod_control.go
pkg/controller/statefulset/stateful_pod_control.go
+1
-6
stateful_set.go
pkg/controller/statefulset/stateful_set.go
+1
-6
stateful_set_control.go
pkg/controller/statefulset/stateful_set_control.go
+4
-13
stateful_set_control_test.go
pkg/controller/statefulset/stateful_set_control_test.go
+6
-28
stateful_set_status_updater.go
pkg/controller/statefulset/stateful_set_status_updater.go
+1
-6
stateful_set_utils.go
pkg/controller/statefulset/stateful_set_utils.go
+1
-5
BUILD
pkg/controller/ttl/BUILD
+0
-1
ttl_controller.go
pkg/controller/ttl/ttl_controller.go
+1
-6
BUILD
pkg/controller/volume/attachdetach/statusupdater/BUILD
+0
-1
node_status_updater.go
.../volume/attachdetach/statusupdater/node_status_updater.go
+1
-15
BUILD
pkg/controller/volume/attachdetach/util/BUILD
+0
-1
util.go
pkg/controller/volume/attachdetach/util/util.go
+2
-20
framework_test.go
pkg/controller/volume/persistentvolume/framework_test.go
+5
-14
pv_controller.go
pkg/controller/volume/persistentvolume/pv_controller.go
+6
-43
pv_controller_base.go
pkg/controller/volume/persistentvolume/pv_controller_base.go
+3
-21
No files found.
pkg/controller/bootstrap/BUILD
View file @
1d053c4f
...
@@ -54,7 +54,6 @@ go_library(
...
@@ -54,7 +54,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
],
],
...
...
pkg/controller/bootstrap/bootstrapsigner.go
View file @
1d053c4f
...
@@ -31,7 +31,6 @@ import (
...
@@ -31,7 +31,6 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/apimachinery/pkg/watch"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"k8s.io/client-go/util/workqueue"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
...
@@ -179,11 +178,7 @@ func (e *BootstrapSigner) signConfigMap() {
...
@@ -179,11 +178,7 @@ func (e *BootstrapSigner) signConfigMap() {
var
needUpdate
=
false
var
needUpdate
=
false
newCM
,
err
:=
copyConfigMap
(
origCM
)
newCM
:=
origCM
.
DeepCopy
()
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
}
// First capture the config we are signing
// First capture the config we are signing
content
,
ok
:=
newCM
.
Data
[
bootstrapapi
.
KubeConfigKey
]
content
,
ok
:=
newCM
.
Data
[
bootstrapapi
.
KubeConfigKey
]
...
@@ -290,11 +285,3 @@ func (e *BootstrapSigner) getTokens() map[string]string {
...
@@ -290,11 +285,3 @@ func (e *BootstrapSigner) getTokens() map[string]string {
return
ret
return
ret
}
}
func
copyConfigMap
(
orig
*
v1
.
ConfigMap
)
(
*
v1
.
ConfigMap
,
error
)
{
newCMObj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
orig
)
if
err
!=
nil
{
return
nil
,
err
}
return
newCMObj
.
(
*
v1
.
ConfigMap
),
nil
}
pkg/controller/certificates/BUILD
View file @
1d053c4f
...
@@ -23,7 +23,6 @@ go_library(
...
@@ -23,7 +23,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers/certificates/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/informers/certificates/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/certificates/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/listers/certificates/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
...
...
pkg/controller/certificates/certificate_controller.go
View file @
1d053c4f
...
@@ -28,7 +28,6 @@ import (
...
@@ -28,7 +28,6 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
certificatesinformers
"k8s.io/client-go/informers/certificates/v1beta1"
certificatesinformers
"k8s.io/client-go/informers/certificates/v1beta1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
certificateslisters
"k8s.io/client-go/listers/certificates/v1beta1"
certificateslisters
"k8s.io/client-go/listers/certificates/v1beta1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
...
@@ -179,11 +178,7 @@ func (cc *CertificateController) syncFunc(key string) error {
...
@@ -179,11 +178,7 @@ func (cc *CertificateController) syncFunc(key string) error {
}
}
// need to operate on a copy so we don't mutate the csr in the shared cache
// need to operate on a copy so we don't mutate the csr in the shared cache
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
csr
)
csr
=
csr
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
csr
=
copy
.
(
*
certificates
.
CertificateSigningRequest
)
return
cc
.
handler
(
csr
)
return
cc
.
handler
(
csr
)
}
}
pkg/controller/cloud/node_controller.go
View file @
1d053c4f
...
@@ -178,12 +178,7 @@ func (cnc *CloudNodeController) updateNodeAddress(node *v1.Node, instances cloud
...
@@ -178,12 +178,7 @@ func (cnc *CloudNodeController) updateNodeAddress(node *v1.Node, instances cloud
}
}
nodeAddresses
=
[]
v1
.
NodeAddress
{
*
nodeIP
}
nodeAddresses
=
[]
v1
.
NodeAddress
{
*
nodeIP
}
}
}
nodeCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
node
)
newNode
:=
node
.
DeepCopy
()
if
err
!=
nil
{
glog
.
Errorf
(
"failed to copy node to a new object"
)
return
}
newNode
:=
nodeCopy
.
(
*
v1
.
Node
)
newNode
.
Status
.
Addresses
=
nodeAddresses
newNode
.
Status
.
Addresses
=
nodeAddresses
if
!
nodeAddressesChangeDetected
(
node
.
Status
.
Addresses
,
newNode
.
Status
.
Addresses
)
{
if
!
nodeAddressesChangeDetected
(
node
.
Status
.
Addresses
,
newNode
.
Status
.
Addresses
)
{
return
return
...
...
pkg/controller/controller_utils.go
View file @
1d053c4f
...
@@ -559,11 +559,7 @@ func GetPodFromTemplate(template *v1.PodTemplateSpec, parentObject runtime.Objec
...
@@ -559,11 +559,7 @@ func GetPodFromTemplate(template *v1.PodTemplateSpec, parentObject runtime.Objec
if
controllerRef
!=
nil
{
if
controllerRef
!=
nil
{
pod
.
OwnerReferences
=
append
(
pod
.
OwnerReferences
,
*
controllerRef
)
pod
.
OwnerReferences
=
append
(
pod
.
OwnerReferences
,
*
controllerRef
)
}
}
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
&
template
.
Spec
)
pod
.
Spec
=
*
template
.
Spec
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
pod
.
Spec
=
*
clone
.
(
*
v1
.
PodSpec
)
return
pod
,
nil
return
pod
,
nil
}
}
...
@@ -991,18 +987,11 @@ func PatchNodeTaints(c clientset.Interface, nodeName string, oldNode *v1.Node, n
...
@@ -991,18 +987,11 @@ func PatchNodeTaints(c clientset.Interface, nodeName string, oldNode *v1.Node, n
}
}
newTaints
:=
newNode
.
Spec
.
Taints
newTaints
:=
newNode
.
Spec
.
Taints
objCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
oldNode
)
newNodeClone
:=
oldNode
.
DeepCopy
()
if
err
!=
nil
{
newNodeClone
.
Spec
.
Taints
=
newTaints
return
fmt
.
Errorf
(
"failed to copy node object %#v: %v"
,
oldNode
,
err
)
newData
,
err
:=
json
.
Marshal
(
newNodeClone
)
}
newNode
,
ok
:=
(
objCopy
)
.
(
*
v1
.
Node
)
if
!
ok
{
return
fmt
.
Errorf
(
"failed to cast copy onto node object %#v: %v"
,
newNode
,
err
)
}
newNode
.
Spec
.
Taints
=
newTaints
newData
,
err
:=
json
.
Marshal
(
newNode
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to marshal new node %#v for node %q: %v"
,
newNode
,
nodeName
,
err
)
return
fmt
.
Errorf
(
"failed to marshal new node %#v for node %q: %v"
,
newNode
Clone
,
nodeName
,
err
)
}
}
patchBytes
,
err
:=
strategicpatch
.
CreateTwoWayMergePatch
(
oldData
,
newData
,
v1
.
Node
{})
patchBytes
,
err
:=
strategicpatch
.
CreateTwoWayMergePatch
(
oldData
,
newData
,
v1
.
Node
{})
...
...
pkg/controller/daemon/daemon_controller.go
View file @
1d053c4f
...
@@ -967,12 +967,7 @@ func storeDaemonSetStatus(dsClient unversionedextensions.DaemonSetInterface, ds
...
@@ -967,12 +967,7 @@ func storeDaemonSetStatus(dsClient unversionedextensions.DaemonSetInterface, ds
return
nil
return
nil
}
}
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
ds
)
toUpdate
:=
ds
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
toUpdate
:=
clone
.
(
*
extensions
.
DaemonSet
)
var
updateErr
,
getErr
error
var
updateErr
,
getErr
error
for
i
:=
0
;
i
<
StatusUpdateRetries
;
i
++
{
for
i
:=
0
;
i
<
StatusUpdateRetries
;
i
++
{
...
...
pkg/controller/daemon/update.go
View file @
1d053c4f
...
@@ -32,7 +32,6 @@ import (
...
@@ -32,7 +32,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
intstrutil
"k8s.io/apimachinery/pkg/util/intstr"
intstrutil
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/client-go/kubernetes/scheme"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/daemon/util"
"k8s.io/kubernetes/pkg/controller/daemon/util"
...
@@ -93,12 +92,7 @@ func (dsc *DaemonSetsController) constructHistory(ds *extensions.DaemonSet) (cur
...
@@ -93,12 +92,7 @@ func (dsc *DaemonSetsController) constructHistory(ds *extensions.DaemonSet) (cur
// Add the unique label if it's not already added to the history
// Add the unique label if it's not already added to the history
// We use history name instead of computing hash, so that we don't need to worry about hash collision
// We use history name instead of computing hash, so that we don't need to worry about hash collision
if
_
,
ok
:=
history
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
];
!
ok
{
if
_
,
ok
:=
history
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
];
!
ok
{
var
clone
interface
{}
toUpdate
:=
history
.
DeepCopy
()
clone
,
err
=
scheme
.
Scheme
.
DeepCopy
(
history
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
toUpdate
:=
clone
.
(
*
apps
.
ControllerRevision
)
toUpdate
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
=
toUpdate
.
Name
toUpdate
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
=
toUpdate
.
Name
history
,
err
=
dsc
.
kubeClient
.
AppsV1beta1
()
.
ControllerRevisions
(
ds
.
Namespace
)
.
Update
(
toUpdate
)
history
,
err
=
dsc
.
kubeClient
.
AppsV1beta1
()
.
ControllerRevisions
(
ds
.
Namespace
)
.
Update
(
toUpdate
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -133,12 +127,7 @@ func (dsc *DaemonSetsController) constructHistory(ds *extensions.DaemonSet) (cur
...
@@ -133,12 +127,7 @@ func (dsc *DaemonSetsController) constructHistory(ds *extensions.DaemonSet) (cur
}
}
// Update revision number if necessary
// Update revision number if necessary
if
cur
.
Revision
<
currRevision
{
if
cur
.
Revision
<
currRevision
{
var
clone
interface
{}
toUpdate
:=
cur
.
DeepCopy
()
clone
,
err
=
scheme
.
Scheme
.
DeepCopy
(
cur
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
toUpdate
:=
clone
.
(
*
apps
.
ControllerRevision
)
toUpdate
.
Revision
=
currRevision
toUpdate
.
Revision
=
currRevision
_
,
err
=
dsc
.
kubeClient
.
AppsV1beta1
()
.
ControllerRevisions
(
ds
.
Namespace
)
.
Update
(
toUpdate
)
_
,
err
=
dsc
.
kubeClient
.
AppsV1beta1
()
.
ControllerRevisions
(
ds
.
Namespace
)
.
Update
(
toUpdate
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -233,11 +222,7 @@ func (dsc *DaemonSetsController) dedupCurHistories(ds *extensions.DaemonSet, cur
...
@@ -233,11 +222,7 @@ func (dsc *DaemonSetsController) dedupCurHistories(ds *extensions.DaemonSet, cur
}
}
for
_
,
pod
:=
range
pods
{
for
_
,
pod
:=
range
pods
{
if
pod
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
!=
keepCur
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
{
if
pod
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
!=
keepCur
.
Labels
[
extensions
.
DefaultDaemonSetUniqueLabelKey
]
{
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
pod
)
toUpdate
:=
pod
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
toUpdate
:=
clone
.
(
*
v1
.
Pod
)
if
toUpdate
.
Labels
==
nil
{
if
toUpdate
.
Labels
==
nil
{
toUpdate
.
Labels
=
make
(
map
[
string
]
string
)
toUpdate
.
Labels
=
make
(
map
[
string
]
string
)
}
}
...
...
pkg/controller/daemon/util/BUILD
View file @
1d053c4f
...
@@ -20,7 +20,6 @@ go_library(
...
@@ -20,7 +20,6 @@ go_library(
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
],
],
)
)
...
...
pkg/controller/daemon/util/daemonset_util.go
View file @
1d053c4f
...
@@ -23,7 +23,6 @@ import (
...
@@ -23,7 +23,6 @@ import (
extensions
"k8s.io/api/extensions/v1beta1"
extensions
"k8s.io/api/extensions/v1beta1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/kubernetes/scheme"
v1helper
"k8s.io/kubernetes/pkg/api/v1/helper"
v1helper
"k8s.io/kubernetes/pkg/api/v1/helper"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/features"
...
@@ -36,8 +35,7 @@ import (
...
@@ -36,8 +35,7 @@ import (
// label which contains templateGeneration (for backward compatibility),
// label which contains templateGeneration (for backward compatibility),
// hash of provided template and sets default daemon tolerations.
// hash of provided template and sets default daemon tolerations.
func
CreatePodTemplate
(
template
v1
.
PodTemplateSpec
,
generation
int64
,
hash
string
)
v1
.
PodTemplateSpec
{
func
CreatePodTemplate
(
template
v1
.
PodTemplateSpec
,
generation
int64
,
hash
string
)
v1
.
PodTemplateSpec
{
obj
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
template
)
newTemplate
:=
*
template
.
DeepCopy
()
newTemplate
:=
obj
.
(
v1
.
PodTemplateSpec
)
// DaemonSet pods shouldn't be deleted by NodeController in case of node problems.
// DaemonSet pods shouldn't be deleted by NodeController in case of node problems.
// Add infinite toleration for taint notReady:NoExecute here
// Add infinite toleration for taint notReady:NoExecute here
// to survive taint-based eviction enforced by NodeController
// to survive taint-based eviction enforced by NodeController
...
...
pkg/controller/deployment/deployment_controller.go
View file @
1d053c4f
...
@@ -578,10 +578,7 @@ func (dc *DeploymentController) syncDeployment(key string) error {
...
@@ -578,10 +578,7 @@ func (dc *DeploymentController) syncDeployment(key string) error {
// Deep-copy otherwise we are mutating our cache.
// Deep-copy otherwise we are mutating our cache.
// TODO: Deep-copy only when needed.
// TODO: Deep-copy only when needed.
d
,
err
:=
util
.
DeploymentDeepCopy
(
deployment
)
d
:=
deployment
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
everything
:=
metav1
.
LabelSelector
{}
everything
:=
metav1
.
LabelSelector
{}
if
reflect
.
DeepEqual
(
d
.
Spec
.
Selector
,
&
everything
)
{
if
reflect
.
DeepEqual
(
d
.
Spec
.
Selector
,
&
everything
)
{
...
...
pkg/controller/deployment/recreate_test.go
View file @
1d053c4f
...
@@ -27,7 +27,6 @@ import (
...
@@ -27,7 +27,6 @@ import (
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
)
)
...
@@ -53,12 +52,7 @@ func TestScaleDownOldReplicaSets(t *testing.T) {
...
@@ -53,12 +52,7 @@ func TestScaleDownOldReplicaSets(t *testing.T) {
rs
:=
newReplicaSet
(
test
.
d
,
fmt
.
Sprintf
(
"%s-%d"
,
test
.
d
.
Name
,
n
),
size
)
rs
:=
newReplicaSet
(
test
.
d
,
fmt
.
Sprintf
(
"%s-%d"
,
test
.
d
.
Name
,
n
),
size
)
oldRSs
=
append
(
oldRSs
,
rs
)
oldRSs
=
append
(
oldRSs
,
rs
)
objCopy
,
err
:=
api
.
Scheme
.
Copy
(
rs
)
rsCopy
:=
rs
.
DeepCopy
()
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error while deep-copying: %v"
,
err
)
continue
}
rsCopy
:=
objCopy
.
(
*
extensions
.
ReplicaSet
)
zero
:=
int32
(
0
)
zero
:=
int32
(
0
)
rsCopy
.
Spec
.
Replicas
=
&
zero
rsCopy
.
Spec
.
Replicas
=
&
zero
...
...
pkg/controller/deployment/sync.go
View file @
1d053c4f
...
@@ -29,7 +29,6 @@ import (
...
@@ -29,7 +29,6 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"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/client-go/kubernetes/scheme"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
deploymentutil
"k8s.io/kubernetes/pkg/controller/deployment/util"
deploymentutil
"k8s.io/kubernetes/pkg/controller/deployment/util"
labelsutil
"k8s.io/kubernetes/pkg/util/labels"
labelsutil
"k8s.io/kubernetes/pkg/util/labels"
...
@@ -250,11 +249,7 @@ func (dc *DeploymentController) getNewReplicaSet(d *extensions.Deployment, rsLis
...
@@ -250,11 +249,7 @@ func (dc *DeploymentController) getNewReplicaSet(d *extensions.Deployment, rsLis
// and maxReplicas) and also update the revision annotation in the deployment with the
// and maxReplicas) and also update the revision annotation in the deployment with the
// latest revision.
// latest revision.
if
existingNewRS
!=
nil
{
if
existingNewRS
!=
nil
{
objCopy
,
err
:=
scheme
.
Scheme
.
Copy
(
existingNewRS
)
rsCopy
:=
existingNewRS
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
rsCopy
:=
objCopy
.
(
*
extensions
.
ReplicaSet
)
// Set existing new replica set's annotation
// Set existing new replica set's annotation
annotationsUpdated
:=
deploymentutil
.
SetNewReplicaSetAnnotations
(
d
,
rsCopy
,
newRevision
,
true
)
annotationsUpdated
:=
deploymentutil
.
SetNewReplicaSetAnnotations
(
d
,
rsCopy
,
newRevision
,
true
)
...
@@ -290,11 +285,7 @@ func (dc *DeploymentController) getNewReplicaSet(d *extensions.Deployment, rsLis
...
@@ -290,11 +285,7 @@ func (dc *DeploymentController) getNewReplicaSet(d *extensions.Deployment, rsLis
}
}
// new ReplicaSet does not exist, create one.
// new ReplicaSet does not exist, create one.
templateCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
d
.
Spec
.
Template
)
newRSTemplate
:=
*
d
.
Spec
.
Template
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
newRSTemplate
:=
templateCopy
.
(
v1
.
PodTemplateSpec
)
podTemplateSpecHash
:=
fmt
.
Sprintf
(
"%d"
,
controller
.
ComputeHash
(
&
newRSTemplate
,
d
.
Status
.
CollisionCount
))
podTemplateSpecHash
:=
fmt
.
Sprintf
(
"%d"
,
controller
.
ComputeHash
(
&
newRSTemplate
,
d
.
Status
.
CollisionCount
))
newRSTemplate
.
Labels
=
labelsutil
.
CloneAndAddLabel
(
d
.
Spec
.
Template
.
Labels
,
extensions
.
DefaultDeploymentUniqueLabelKey
,
podTemplateSpecHash
)
newRSTemplate
.
Labels
=
labelsutil
.
CloneAndAddLabel
(
d
.
Spec
.
Template
.
Labels
,
extensions
.
DefaultDeploymentUniqueLabelKey
,
podTemplateSpecHash
)
// Add podTemplateHash label to selector.
// Add podTemplateHash label to selector.
...
@@ -513,11 +504,7 @@ func (dc *DeploymentController) scaleReplicaSetAndRecordEvent(rs *extensions.Rep
...
@@ -513,11 +504,7 @@ func (dc *DeploymentController) scaleReplicaSetAndRecordEvent(rs *extensions.Rep
}
}
func
(
dc
*
DeploymentController
)
scaleReplicaSet
(
rs
*
extensions
.
ReplicaSet
,
newScale
int32
,
deployment
*
extensions
.
Deployment
,
scalingOperation
string
)
(
bool
,
*
extensions
.
ReplicaSet
,
error
)
{
func
(
dc
*
DeploymentController
)
scaleReplicaSet
(
rs
*
extensions
.
ReplicaSet
,
newScale
int32
,
deployment
*
extensions
.
Deployment
,
scalingOperation
string
)
(
bool
,
*
extensions
.
ReplicaSet
,
error
)
{
objCopy
,
err
:=
scheme
.
Scheme
.
Copy
(
rs
)
rsCopy
:=
rs
.
DeepCopy
()
if
err
!=
nil
{
return
false
,
nil
,
err
}
rsCopy
:=
objCopy
.
(
*
extensions
.
ReplicaSet
)
sizeNeedsUpdate
:=
*
(
rsCopy
.
Spec
.
Replicas
)
!=
newScale
sizeNeedsUpdate
:=
*
(
rsCopy
.
Spec
.
Replicas
)
!=
newScale
// TODO: Do not mutate the replica set here, instead simply compare the annotation and if they mismatch
// TODO: Do not mutate the replica set here, instead simply compare the annotation and if they mismatch
...
@@ -526,6 +513,7 @@ func (dc *DeploymentController) scaleReplicaSet(rs *extensions.ReplicaSet, newSc
...
@@ -526,6 +513,7 @@ func (dc *DeploymentController) scaleReplicaSet(rs *extensions.ReplicaSet, newSc
annotationsNeedUpdate
:=
deploymentutil
.
SetReplicasAnnotations
(
rsCopy
,
*
(
deployment
.
Spec
.
Replicas
),
*
(
deployment
.
Spec
.
Replicas
)
+
deploymentutil
.
MaxSurge
(
*
deployment
))
annotationsNeedUpdate
:=
deploymentutil
.
SetReplicasAnnotations
(
rsCopy
,
*
(
deployment
.
Spec
.
Replicas
),
*
(
deployment
.
Spec
.
Replicas
)
+
deploymentutil
.
MaxSurge
(
*
deployment
))
scaled
:=
false
scaled
:=
false
var
err
error
if
sizeNeedsUpdate
||
annotationsNeedUpdate
{
if
sizeNeedsUpdate
||
annotationsNeedUpdate
{
*
(
rsCopy
.
Spec
.
Replicas
)
=
newScale
*
(
rsCopy
.
Spec
.
Replicas
)
=
newScale
rs
,
err
=
dc
.
client
.
Extensions
()
.
ReplicaSets
(
rsCopy
.
Namespace
)
.
Update
(
rsCopy
)
rs
,
err
=
dc
.
client
.
Extensions
()
.
ReplicaSets
(
rsCopy
.
Namespace
)
.
Update
(
rsCopy
)
...
...
pkg/controller/deployment/util/BUILD
View file @
1d053c4f
...
@@ -29,7 +29,6 @@ go_library(
...
@@ -29,7 +29,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
...
@@ -58,7 +57,6 @@ go_test(
...
@@ -58,7 +57,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
],
],
)
)
...
...
pkg/controller/deployment/util/deployment_util.go
View file @
1d053c4f
...
@@ -36,7 +36,6 @@ import (
...
@@ -36,7 +36,6 @@ import (
intstrutil
"k8s.io/apimachinery/pkg/util/intstr"
intstrutil
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
extensionsv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
extensionsv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
extensionslisters
"k8s.io/client-go/listers/extensions/v1beta1"
extensionslisters
"k8s.io/client-go/listers/extensions/v1beta1"
...
@@ -649,16 +648,8 @@ func ListPods(deployment *extensions.Deployment, rsList []*extensions.ReplicaSet
...
@@ -649,16 +648,8 @@ func ListPods(deployment *extensions.Deployment, rsList []*extensions.ReplicaSet
// (e.g. the addition of a new field will cause the hash code to change)
// (e.g. the addition of a new field will cause the hash code to change)
// Note that we assume input podTemplateSpecs contain non-empty labels
// Note that we assume input podTemplateSpecs contain non-empty labels
func
EqualIgnoreHash
(
template1
,
template2
*
v1
.
PodTemplateSpec
)
(
bool
,
error
)
{
func
EqualIgnoreHash
(
template1
,
template2
*
v1
.
PodTemplateSpec
)
(
bool
,
error
)
{
cp
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
template1
)
t1Copy
:=
template1
.
DeepCopy
()
if
err
!=
nil
{
t2Copy
:=
template2
.
DeepCopy
()
return
false
,
err
}
t1Copy
:=
cp
.
(
*
v1
.
PodTemplateSpec
)
cp
,
err
=
scheme
.
Scheme
.
DeepCopy
(
template2
)
if
err
!=
nil
{
return
false
,
err
}
t2Copy
:=
cp
.
(
*
v1
.
PodTemplateSpec
)
// First, compare template.Labels (ignoring hash)
// First, compare template.Labels (ignoring hash)
labels1
,
labels2
:=
t1Copy
.
Labels
,
t2Copy
.
Labels
labels1
,
labels2
:=
t1Copy
.
Labels
,
t2Copy
.
Labels
if
len
(
labels1
)
>
len
(
labels2
)
{
if
len
(
labels1
)
>
len
(
labels2
)
{
...
@@ -990,15 +981,3 @@ func ResolveFenceposts(maxSurge, maxUnavailable *intstrutil.IntOrString, desired
...
@@ -990,15 +981,3 @@ func ResolveFenceposts(maxSurge, maxUnavailable *intstrutil.IntOrString, desired
return
int32
(
surge
),
int32
(
unavailable
),
nil
return
int32
(
surge
),
int32
(
unavailable
),
nil
}
}
func
DeploymentDeepCopy
(
deployment
*
extensions
.
Deployment
)
(
*
extensions
.
Deployment
,
error
)
{
objCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
deployment
)
if
err
!=
nil
{
return
nil
,
err
}
copied
,
ok
:=
objCopy
.
(
*
extensions
.
Deployment
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"expected Deployment, got %#v"
,
objCopy
)
}
return
copied
,
nil
}
pkg/controller/deployment/util/deployment_util_test.go
View file @
1d053c4f
...
@@ -33,7 +33,6 @@ import (
...
@@ -33,7 +33,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/scheme"
core
"k8s.io/client-go/testing"
core
"k8s.io/client-go/testing"
apiv1
"k8s.io/kubernetes/pkg/api/v1"
apiv1
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
...
@@ -185,8 +184,7 @@ func newDControllerRef(d *extensions.Deployment) *metav1.OwnerReference {
...
@@ -185,8 +184,7 @@ func newDControllerRef(d *extensions.Deployment) *metav1.OwnerReference {
// generateRS creates a replica set, with the input deployment's template as its template
// generateRS creates a replica set, with the input deployment's template as its template
func
generateRS
(
deployment
extensions
.
Deployment
)
extensions
.
ReplicaSet
{
func
generateRS
(
deployment
extensions
.
Deployment
)
extensions
.
ReplicaSet
{
cp
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
deployment
.
Spec
.
Template
)
template
:=
deployment
.
Spec
.
Template
.
DeepCopy
()
template
:=
cp
.
(
v1
.
PodTemplateSpec
)
return
extensions
.
ReplicaSet
{
return
extensions
.
ReplicaSet
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
UID
:
randomUID
(),
UID
:
randomUID
(),
...
@@ -196,7 +194,7 @@ func generateRS(deployment extensions.Deployment) extensions.ReplicaSet {
...
@@ -196,7 +194,7 @@ func generateRS(deployment extensions.Deployment) extensions.ReplicaSet {
},
},
Spec
:
extensions
.
ReplicaSetSpec
{
Spec
:
extensions
.
ReplicaSetSpec
{
Replicas
:
new
(
int32
),
Replicas
:
new
(
int32
),
Template
:
template
,
Template
:
*
template
,
Selector
:
&
metav1
.
LabelSelector
{
MatchLabels
:
template
.
Labels
},
Selector
:
&
metav1
.
LabelSelector
{
MatchLabels
:
template
.
Labels
},
},
},
}
}
...
...
pkg/controller/deployment/util/pod_util.go
View file @
1d053c4f
...
@@ -21,7 +21,6 @@ import (
...
@@ -21,7 +21,6 @@ import (
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
errorsutil
"k8s.io/apimachinery/pkg/util/errors"
errorsutil
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/client-go/kubernetes/scheme"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
...
@@ -42,11 +41,7 @@ func UpdatePodWithRetries(podClient v1core.PodInterface, podLister corelisters.P
...
@@ -42,11 +41,7 @@ func UpdatePodWithRetries(podClient v1core.PodInterface, podLister corelisters.P
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
obj
,
deepCopyErr
:=
scheme
.
Scheme
.
DeepCopy
(
pod
)
pod
=
pod
.
DeepCopy
()
if
deepCopyErr
!=
nil
{
return
deepCopyErr
}
pod
=
obj
.
(
*
v1
.
Pod
)
// Apply the update, then attempt to push it to the apiserver.
// Apply the update, then attempt to push it to the apiserver.
if
applyErr
:=
applyUpdate
(
pod
);
applyErr
!=
nil
{
if
applyErr
:=
applyUpdate
(
pod
);
applyErr
!=
nil
{
return
applyErr
return
applyErr
...
...
pkg/controller/deployment/util/replicaset_util.go
View file @
1d053c4f
...
@@ -21,10 +21,8 @@ import (
...
@@ -21,10 +21,8 @@ import (
"github.com/golang/glog"
"github.com/golang/glog"
"k8s.io/api/core/v1"
extensions
"k8s.io/api/extensions/v1beta1"
extensions
"k8s.io/api/extensions/v1beta1"
errorsutil
"k8s.io/apimachinery/pkg/util/errors"
errorsutil
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/client-go/kubernetes/scheme"
unversionedextensions
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
unversionedextensions
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
extensionslisters
"k8s.io/client-go/listers/extensions/v1beta1"
extensionslisters
"k8s.io/client-go/listers/extensions/v1beta1"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
...
@@ -47,11 +45,7 @@ func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsL
...
@@ -47,11 +45,7 @@ func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsL
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
obj
,
deepCopyErr
:=
scheme
.
Scheme
.
DeepCopy
(
rs
)
rs
=
rs
.
DeepCopy
()
if
deepCopyErr
!=
nil
{
return
deepCopyErr
}
rs
=
obj
.
(
*
extensions
.
ReplicaSet
)
// Apply the update, then attempt to push it to the apiserver.
// Apply the update, then attempt to push it to the apiserver.
if
applyErr
:=
applyUpdate
(
rs
);
applyErr
!=
nil
{
if
applyErr
:=
applyUpdate
(
rs
);
applyErr
!=
nil
{
return
applyErr
return
applyErr
...
@@ -71,11 +65,7 @@ func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsL
...
@@ -71,11 +65,7 @@ func UpdateRSWithRetries(rsClient unversionedextensions.ReplicaSetInterface, rsL
// GetReplicaSetHash returns the pod template hash of a ReplicaSet's pod template space
// GetReplicaSetHash returns the pod template hash of a ReplicaSet's pod template space
func
GetReplicaSetHash
(
rs
*
extensions
.
ReplicaSet
,
uniquifier
*
int32
)
(
string
,
error
)
{
func
GetReplicaSetHash
(
rs
*
extensions
.
ReplicaSet
,
uniquifier
*
int32
)
(
string
,
error
)
{
template
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
rs
.
Spec
.
Template
)
rsTemplate
:=
rs
.
Spec
.
Template
.
DeepCopy
()
if
err
!=
nil
{
return
""
,
err
}
rsTemplate
:=
template
.
(
v1
.
PodTemplateSpec
)
rsTemplate
.
Labels
=
labelsutil
.
CloneAndRemoveLabel
(
rsTemplate
.
Labels
,
extensions
.
DefaultDeploymentUniqueLabelKey
)
rsTemplate
.
Labels
=
labelsutil
.
CloneAndRemoveLabel
(
rsTemplate
.
Labels
,
extensions
.
DefaultDeploymentUniqueLabelKey
)
return
fmt
.
Sprintf
(
"%d"
,
controller
.
ComputeHash
(
&
rsTemplate
,
uniquifier
)),
nil
return
fmt
.
Sprintf
(
"%d"
,
controller
.
ComputeHash
(
rsTemplate
,
uniquifier
)),
nil
}
}
pkg/controller/disruption/BUILD
View file @
1d053c4f
...
@@ -58,7 +58,6 @@ go_test(
...
@@ -58,7 +58,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
],
],
...
...
pkg/controller/disruption/disruption.go
View file @
1d053c4f
...
@@ -676,13 +676,8 @@ func (dc *DisruptionController) buildDisruptedPodMap(pods []*v1.Pod, pdb *policy
...
@@ -676,13 +676,8 @@ func (dc *DisruptionController) buildDisruptedPodMap(pods []*v1.Pod, pdb *policy
// this field correctly, we will prevent the /evict handler from approving an
// this field correctly, we will prevent the /evict handler from approving an
// eviction when it may be unsafe to do so.
// eviction when it may be unsafe to do so.
func
(
dc
*
DisruptionController
)
failSafe
(
pdb
*
policy
.
PodDisruptionBudget
)
error
{
func
(
dc
*
DisruptionController
)
failSafe
(
pdb
*
policy
.
PodDisruptionBudget
)
error
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
pdb
)
newPdb
:=
pdb
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
newPdb
:=
obj
.
(
*
policy
.
PodDisruptionBudget
)
newPdb
.
Status
.
PodDisruptionsAllowed
=
0
newPdb
.
Status
.
PodDisruptionsAllowed
=
0
return
dc
.
getUpdater
()(
newPdb
)
return
dc
.
getUpdater
()(
newPdb
)
}
}
...
@@ -707,12 +702,7 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget,
...
@@ -707,12 +702,7 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget,
return
nil
return
nil
}
}
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
pdb
)
newPdb
:=
pdb
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
newPdb
:=
obj
.
(
*
policy
.
PodDisruptionBudget
)
newPdb
.
Status
=
policy
.
PodDisruptionBudgetStatus
{
newPdb
.
Status
=
policy
.
PodDisruptionBudgetStatus
{
CurrentHealthy
:
currentHealthy
,
CurrentHealthy
:
currentHealthy
,
DesiredHealthy
:
desiredHealthy
,
DesiredHealthy
:
desiredHealthy
,
...
...
pkg/controller/disruption/disruption_test.go
View file @
1d053c4f
...
@@ -31,7 +31,6 @@ import (
...
@@ -31,7 +31,6 @@ import (
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"k8s.io/client-go/util/workqueue"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
...
@@ -50,12 +49,7 @@ func (ps *pdbStates) Set(pdb *policy.PodDisruptionBudget) error {
...
@@ -50,12 +49,7 @@ func (ps *pdbStates) Set(pdb *policy.PodDisruptionBudget) error {
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
pdb
)
(
*
ps
)[
key
]
=
*
pdb
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
(
*
ps
)[
key
]
=
*
obj
.
(
*
policy
.
PodDisruptionBudget
)
return
nil
return
nil
}
}
...
...
pkg/controller/endpoint/BUILD
View file @
1d053c4f
...
@@ -29,7 +29,6 @@ go_library(
...
@@ -29,7 +29,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
"//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
...
...
pkg/controller/endpoint/endpoints_controller.go
View file @
1d053c4f
...
@@ -32,7 +32,6 @@ import (
...
@@ -32,7 +32,6 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
coreinformers
"k8s.io/client-go/informers/core/v1"
coreinformers
"k8s.io/client-go/informers/core/v1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/leaderelection/resourcelock"
"k8s.io/client-go/tools/leaderelection/resourcelock"
...
@@ -499,11 +498,7 @@ func (e *EndpointController) syncService(key string) error {
...
@@ -499,11 +498,7 @@ func (e *EndpointController) syncService(key string) error {
glog
.
V
(
5
)
.
Infof
(
"endpoints are equal for %s/%s, skipping update"
,
service
.
Namespace
,
service
.
Name
)
glog
.
V
(
5
)
.
Infof
(
"endpoints are equal for %s/%s, skipping update"
,
service
.
Namespace
,
service
.
Name
)
return
nil
return
nil
}
}
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
currentEndpoints
)
newEndpoints
:=
currentEndpoints
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
newEndpoints
:=
copy
.
(
*
v1
.
Endpoints
)
newEndpoints
.
Subsets
=
subsets
newEndpoints
.
Subsets
=
subsets
newEndpoints
.
Labels
=
service
.
Labels
newEndpoints
.
Labels
=
service
.
Labels
if
newEndpoints
.
Annotations
==
nil
{
if
newEndpoints
.
Annotations
==
nil
{
...
...
pkg/controller/history/BUILD
View file @
1d053c4f
...
@@ -43,7 +43,6 @@ go_library(
...
@@ -43,7 +43,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/retry:go_default_library",
"//vendor/k8s.io/client-go/util/retry:go_default_library",
...
...
pkg/controller/history/controller_history.go
View file @
1d053c4f
...
@@ -37,7 +37,6 @@ import (
...
@@ -37,7 +37,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
)
)
...
@@ -243,11 +242,7 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
...
@@ -243,11 +242,7 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
}
}
// Clone the input
// Clone the input
any
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
any
.
(
*
apps
.
ControllerRevision
)
// Continue to attempt to create the revision updating the name with a new hash on each iteration
// Continue to attempt to create the revision updating the name with a new hash on each iteration
for
{
for
{
...
@@ -264,12 +259,8 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
...
@@ -264,12 +259,8 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
}
}
func
(
rh
*
realHistory
)
UpdateControllerRevision
(
revision
*
apps
.
ControllerRevision
,
newRevision
int64
)
(
*
apps
.
ControllerRevision
,
error
)
{
func
(
rh
*
realHistory
)
UpdateControllerRevision
(
revision
*
apps
.
ControllerRevision
,
newRevision
int64
)
(
*
apps
.
ControllerRevision
,
error
)
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
err
:=
retry
.
RetryOnConflict
(
retry
.
DefaultBackoff
,
func
()
error
{
return
nil
,
err
}
clone
:=
obj
.
(
*
apps
.
ControllerRevision
)
err
=
retry
.
RetryOnConflict
(
retry
.
DefaultBackoff
,
func
()
error
{
if
clone
.
Revision
==
newRevision
{
if
clone
.
Revision
==
newRevision
{
return
nil
return
nil
}
}
...
@@ -283,11 +274,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
...
@@ -283,11 +274,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
}
}
if
updated
,
err
:=
rh
.
lister
.
ControllerRevisions
(
clone
.
Namespace
)
.
Get
(
clone
.
Name
);
err
==
nil
{
if
updated
,
err
:=
rh
.
lister
.
ControllerRevisions
(
clone
.
Namespace
)
.
Get
(
clone
.
Name
);
err
==
nil
{
// make a copy so we don't mutate the shared cache
// make a copy so we don't mutate the shared cache
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
updated
)
clone
=
updated
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
clone
=
obj
.
(
*
apps
.
ControllerRevision
)
}
}
return
updateErr
return
updateErr
})
})
...
@@ -375,11 +362,7 @@ func (fh *fakeHistory) CreateControllerRevision(parent metav1.Object, revision *
...
@@ -375,11 +362,7 @@ func (fh *fakeHistory) CreateControllerRevision(parent metav1.Object, revision *
}
}
// Clone the input
// Clone the input
any
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
any
.
(
*
apps
.
ControllerRevision
)
clone
.
Namespace
=
parent
.
GetNamespace
()
clone
.
Namespace
=
parent
.
GetNamespace
()
// Continue to attempt to create the revision updating the name with a new hash on each iteration
// Continue to attempt to create the revision updating the name with a new hash on each iteration
...
@@ -412,11 +395,7 @@ func (fh *fakeHistory) DeleteControllerRevision(revision *apps.ControllerRevisio
...
@@ -412,11 +395,7 @@ func (fh *fakeHistory) DeleteControllerRevision(revision *apps.ControllerRevisio
}
}
func
(
fh
*
fakeHistory
)
UpdateControllerRevision
(
revision
*
apps
.
ControllerRevision
,
newRevision
int64
)
(
*
apps
.
ControllerRevision
,
error
)
{
func
(
fh
*
fakeHistory
)
UpdateControllerRevision
(
revision
*
apps
.
ControllerRevision
,
newRevision
int64
)
(
*
apps
.
ControllerRevision
,
error
)
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
obj
.
(
*
apps
.
ControllerRevision
)
clone
.
Revision
=
newRevision
clone
.
Revision
=
newRevision
return
clone
,
fh
.
indexer
.
Update
(
clone
)
return
clone
,
fh
.
indexer
.
Update
(
clone
)
}
}
...
@@ -438,11 +417,7 @@ func (fh *fakeHistory) AdoptControllerRevision(parent metav1.Object, parentKind
...
@@ -438,11 +417,7 @@ func (fh *fakeHistory) AdoptControllerRevision(parent metav1.Object, parentKind
if
!
found
{
if
!
found
{
return
nil
,
errors
.
NewNotFound
(
apps
.
Resource
(
"controllerrevisions"
),
revision
.
Name
)
return
nil
,
errors
.
NewNotFound
(
apps
.
Resource
(
"controllerrevisions"
),
revision
.
Name
)
}
}
obj2
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
obj2
.
(
*
apps
.
ControllerRevision
)
clone
.
OwnerReferences
=
append
(
clone
.
OwnerReferences
,
metav1
.
OwnerReference
{
clone
.
OwnerReferences
=
append
(
clone
.
OwnerReferences
,
metav1
.
OwnerReference
{
APIVersion
:
parentKind
.
GroupVersion
()
.
String
(),
APIVersion
:
parentKind
.
GroupVersion
()
.
String
(),
Kind
:
parentKind
.
Kind
,
Kind
:
parentKind
.
Kind
,
...
@@ -467,11 +442,7 @@ func (fh *fakeHistory) ReleaseControllerRevision(parent metav1.Object, revision
...
@@ -467,11 +442,7 @@ func (fh *fakeHistory) ReleaseControllerRevision(parent metav1.Object, revision
if
!
found
{
if
!
found
{
return
nil
,
nil
return
nil
,
nil
}
}
obj2
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
revision
)
clone
:=
revision
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
obj2
.
(
*
apps
.
ControllerRevision
)
refs
:=
clone
.
OwnerReferences
refs
:=
clone
.
OwnerReferences
clone
.
OwnerReferences
=
nil
clone
.
OwnerReferences
=
nil
for
i
:=
range
refs
{
for
i
:=
range
refs
{
...
...
pkg/controller/node/node_controller.go
View file @
1d053c4f
...
@@ -559,12 +559,7 @@ func (nc *NodeController) monitorNodeStatus() error {
...
@@ -559,12 +559,7 @@ func (nc *NodeController) monitorNodeStatus() error {
var
gracePeriod
time
.
Duration
var
gracePeriod
time
.
Duration
var
observedReadyCondition
v1
.
NodeCondition
var
observedReadyCondition
v1
.
NodeCondition
var
currentReadyCondition
*
v1
.
NodeCondition
var
currentReadyCondition
*
v1
.
NodeCondition
nodeCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
nodes
[
i
])
node
:=
nodes
[
i
]
.
DeepCopy
()
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
continue
}
node
:=
nodeCopy
.
(
*
v1
.
Node
)
if
err
:=
wait
.
PollImmediate
(
retrySleepTime
,
retrySleepTime
*
scheduler
.
NodeStatusUpdateRetry
,
func
()
(
bool
,
error
)
{
if
err
:=
wait
.
PollImmediate
(
retrySleepTime
,
retrySleepTime
*
scheduler
.
NodeStatusUpdateRetry
,
func
()
(
bool
,
error
)
{
gracePeriod
,
observedReadyCondition
,
currentReadyCondition
,
err
=
nc
.
tryUpdateNodeStatus
(
node
)
gracePeriod
,
observedReadyCondition
,
currentReadyCondition
,
err
=
nc
.
tryUpdateNodeStatus
(
node
)
if
err
==
nil
{
if
err
==
nil
{
...
...
pkg/controller/node/util/BUILD
View file @
1d053c4f
...
@@ -24,7 +24,6 @@ go_library(
...
@@ -24,7 +24,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
...
...
pkg/controller/node/util/controller_utils.go
View file @
1d053c4f
...
@@ -27,8 +27,6 @@ import (
...
@@ -27,8 +27,6 @@ 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"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
...
@@ -287,13 +285,7 @@ func SwapNodeControllerTaint(kubeClient clientset.Interface, taintToAdd, taintTo
...
@@ -287,13 +285,7 @@ func SwapNodeControllerTaint(kubeClient clientset.Interface, taintToAdd, taintTo
// CreateAddNodeHandler creates an add node handler.
// CreateAddNodeHandler creates an add node handler.
func
CreateAddNodeHandler
(
f
func
(
node
*
v1
.
Node
)
error
)
func
(
obj
interface
{})
{
func
CreateAddNodeHandler
(
f
func
(
node
*
v1
.
Node
)
error
)
func
(
obj
interface
{})
{
return
func
(
originalObj
interface
{})
{
return
func
(
originalObj
interface
{})
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
originalObj
)
node
:=
originalObj
.
(
*
v1
.
Node
)
.
DeepCopy
()
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
}
node
:=
obj
.
(
*
v1
.
Node
)
if
err
:=
f
(
node
);
err
!=
nil
{
if
err
:=
f
(
node
);
err
!=
nil
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Delete: %v"
,
err
))
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Delete: %v"
,
err
))
}
}
...
@@ -303,18 +295,8 @@ func CreateAddNodeHandler(f func(node *v1.Node) error) func(obj interface{}) {
...
@@ -303,18 +295,8 @@ func CreateAddNodeHandler(f func(node *v1.Node) error) func(obj interface{}) {
// CreateUpdateNodeHandler creates a node update handler.
// CreateUpdateNodeHandler creates a node update handler.
func
CreateUpdateNodeHandler
(
f
func
(
oldNode
,
newNode
*
v1
.
Node
)
error
)
func
(
oldObj
,
newObj
interface
{})
{
func
CreateUpdateNodeHandler
(
f
func
(
oldNode
,
newNode
*
v1
.
Node
)
error
)
func
(
oldObj
,
newObj
interface
{})
{
return
func
(
origOldObj
,
origNewObj
interface
{})
{
return
func
(
origOldObj
,
origNewObj
interface
{})
{
oldObj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
origOldObj
)
node
:=
origNewObj
.
(
*
v1
.
Node
)
.
DeepCopy
()
if
err
!=
nil
{
prevNode
:=
origOldObj
.
(
*
v1
.
Node
)
.
DeepCopy
()
utilruntime
.
HandleError
(
err
)
return
}
newObj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
origNewObj
)
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
}
node
:=
newObj
.
(
*
v1
.
Node
)
prevNode
:=
oldObj
.
(
*
v1
.
Node
)
if
err
:=
f
(
prevNode
,
node
);
err
!=
nil
{
if
err
:=
f
(
prevNode
,
node
);
err
!=
nil
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Add/Delete: %v"
,
err
))
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Add/Delete: %v"
,
err
))
...
@@ -325,28 +307,22 @@ func CreateUpdateNodeHandler(f func(oldNode, newNode *v1.Node) error) func(oldOb
...
@@ -325,28 +307,22 @@ func CreateUpdateNodeHandler(f func(oldNode, newNode *v1.Node) error) func(oldOb
// CreateDeleteNodeHandler creates a delete node handler.
// CreateDeleteNodeHandler creates a delete node handler.
func
CreateDeleteNodeHandler
(
f
func
(
node
*
v1
.
Node
)
error
)
func
(
obj
interface
{})
{
func
CreateDeleteNodeHandler
(
f
func
(
node
*
v1
.
Node
)
error
)
func
(
obj
interface
{})
{
return
func
(
originalObj
interface
{})
{
return
func
(
originalObj
interface
{})
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
originalObj
)
originalNode
,
isNode
:=
originalObj
.
(
*
v1
.
Node
)
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
}
node
,
isNode
:=
obj
.
(
*
v1
.
Node
)
// We can get DeletedFinalStateUnknown instead of *v1.Node here and
// We can get DeletedFinalStateUnknown instead of *v1.Node here and
// we need to handle that correctly. #34692
// we need to handle that correctly. #34692
if
!
isNode
{
if
!
isNode
{
deletedState
,
ok
:=
obj
.
(
cache
.
DeletedFinalStateUnknown
)
deletedState
,
ok
:=
o
riginalO
bj
.
(
cache
.
DeletedFinalStateUnknown
)
if
!
ok
{
if
!
ok
{
glog
.
Errorf
(
"Received unexpected object: %v"
,
obj
)
glog
.
Errorf
(
"Received unexpected object: %v"
,
o
riginalO
bj
)
return
return
}
}
n
ode
,
ok
=
deletedState
.
Obj
.
(
*
v1
.
Node
)
originalN
ode
,
ok
=
deletedState
.
Obj
.
(
*
v1
.
Node
)
if
!
ok
{
if
!
ok
{
glog
.
Errorf
(
"DeletedFinalStateUnknown contained non-Node object: %v"
,
deletedState
.
Obj
)
glog
.
Errorf
(
"DeletedFinalStateUnknown contained non-Node object: %v"
,
deletedState
.
Obj
)
return
return
}
}
}
}
node
:=
originalNode
.
DeepCopy
()
if
err
:=
f
(
node
);
err
!=
nil
{
if
err
:=
f
(
node
);
err
!=
nil
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Add/Delete: %v"
,
err
))
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"Error while processing Node Add/Delete: %v"
,
err
))
}
}
...
...
pkg/controller/podautoscaler/horizontal.go
View file @
1d053c4f
...
@@ -358,26 +358,15 @@ func (a *HorizontalController) reconcileKey(key string) error {
...
@@ -358,26 +358,15 @@ func (a *HorizontalController) reconcileKey(key string) error {
func
(
a
*
HorizontalController
)
reconcileAutoscaler
(
hpav1Shared
*
autoscalingv1
.
HorizontalPodAutoscaler
)
error
{
func
(
a
*
HorizontalController
)
reconcileAutoscaler
(
hpav1Shared
*
autoscalingv1
.
HorizontalPodAutoscaler
)
error
{
// make a copy so that we never mutate the shared informer cache (conversion can mutate the object)
// make a copy so that we never mutate the shared informer cache (conversion can mutate the object)
hpav1Raw
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
hpav1Shared
)
hpav1
:=
hpav1Shared
.
DeepCopy
()
if
err
!=
nil
{
a
.
eventRecorder
.
Event
(
hpav1Shared
,
v1
.
EventTypeWarning
,
"FailedConvertHPA"
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to deep-copy the HPA: %v"
,
err
)
}
// then, convert to autoscaling/v2, which makes our lives easier when calculating metrics
// then, convert to autoscaling/v2, which makes our lives easier when calculating metrics
hpav1
:=
hpav1Raw
.
(
*
autoscalingv1
.
HorizontalPodAutoscaler
)
hpaRaw
,
err
:=
UnsafeConvertToVersionVia
(
hpav1
,
autoscalingv2
.
SchemeGroupVersion
)
hpaRaw
,
err
:=
UnsafeConvertToVersionVia
(
hpav1
,
autoscalingv2
.
SchemeGroupVersion
)
if
err
!=
nil
{
if
err
!=
nil
{
a
.
eventRecorder
.
Event
(
hpav1
,
v1
.
EventTypeWarning
,
"FailedConvertHPA"
,
err
.
Error
())
a
.
eventRecorder
.
Event
(
hpav1
,
v1
.
EventTypeWarning
,
"FailedConvertHPA"
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to convert the given HPA to %s: %v"
,
autoscalingv2
.
SchemeGroupVersion
.
String
(),
err
)
return
fmt
.
Errorf
(
"failed to convert the given HPA to %s: %v"
,
autoscalingv2
.
SchemeGroupVersion
.
String
(),
err
)
}
}
hpa
:=
hpaRaw
.
(
*
autoscalingv2
.
HorizontalPodAutoscaler
)
hpa
:=
hpaRaw
.
(
*
autoscalingv2
.
HorizontalPodAutoscaler
)
hpaStatusOriginalRaw
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
&
hpa
.
Status
)
hpaStatusOriginal
:=
hpa
.
Status
.
DeepCopy
()
if
err
!=
nil
{
a
.
eventRecorder
.
Event
(
hpav1Shared
,
v1
.
EventTypeWarning
,
"FailedConvertHPA"
,
err
.
Error
())
return
fmt
.
Errorf
(
"failed to deep-copy the HPA status: %v"
,
err
)
}
hpaStatusOriginal
:=
hpaStatusOriginalRaw
.
(
*
autoscalingv2
.
HorizontalPodAutoscalerStatus
)
reference
:=
fmt
.
Sprintf
(
"%s/%s/%s"
,
hpa
.
Spec
.
ScaleTargetRef
.
Kind
,
hpa
.
Namespace
,
hpa
.
Spec
.
ScaleTargetRef
.
Name
)
reference
:=
fmt
.
Sprintf
(
"%s/%s/%s"
,
hpa
.
Spec
.
ScaleTargetRef
.
Kind
,
hpa
.
Namespace
,
hpa
.
Spec
.
ScaleTargetRef
.
Name
)
...
...
pkg/controller/replicaset/replica_set.go
View file @
1d053c4f
...
@@ -606,11 +606,7 @@ func (rsc *ReplicaSetController) syncReplicaSet(key string) error {
...
@@ -606,11 +606,7 @@ func (rsc *ReplicaSetController) syncReplicaSet(key string) error {
manageReplicasErr
=
rsc
.
manageReplicas
(
filteredPods
,
rs
)
manageReplicasErr
=
rsc
.
manageReplicas
(
filteredPods
,
rs
)
}
}
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
rs
)
rs
=
rs
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
rs
=
copy
.
(
*
extensions
.
ReplicaSet
)
newStatus
:=
calculateStatus
(
rs
,
filteredPods
,
manageReplicasErr
)
newStatus
:=
calculateStatus
(
rs
,
filteredPods
,
manageReplicasErr
)
...
...
pkg/controller/replication/replication_controller.go
View file @
1d053c4f
...
@@ -621,11 +621,7 @@ func (rm *ReplicationManager) syncReplicationController(key string) error {
...
@@ -621,11 +621,7 @@ func (rm *ReplicationManager) syncReplicationController(key string) error {
}
}
trace
.
Step
(
"manageReplicas done"
)
trace
.
Step
(
"manageReplicas done"
)
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
rc
)
rc
=
rc
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
rc
=
copy
.
(
*
v1
.
ReplicationController
)
newStatus
:=
calculateStatus
(
rc
,
filteredPods
,
manageReplicasErr
)
newStatus
:=
calculateStatus
(
rc
,
filteredPods
,
manageReplicasErr
)
...
...
pkg/controller/service/BUILD
View file @
1d053c4f
...
@@ -47,7 +47,6 @@ go_test(
...
@@ -47,7 +47,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
],
],
)
)
...
...
pkg/controller/service/service_controller.go
View file @
1d053c4f
...
@@ -299,11 +299,7 @@ func (s *ServiceController) createLoadBalancerIfNeeded(key string, service *v1.S
...
@@ -299,11 +299,7 @@ func (s *ServiceController) createLoadBalancerIfNeeded(key string, service *v1.S
// TODO: Be careful here ... what if there were other changes to the service?
// TODO: Be careful here ... what if there were other changes to the service?
if
!
v1helper
.
LoadBalancerStatusEqual
(
previousState
,
newState
)
{
if
!
v1helper
.
LoadBalancerStatusEqual
(
previousState
,
newState
)
{
// Make a copy so we don't mutate the shared informer cache
// Make a copy so we don't mutate the shared informer cache
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
service
)
service
=
service
.
DeepCopy
()
if
err
!=
nil
{
return
err
,
retryable
}
service
=
copy
.
(
*
v1
.
Service
)
// Update the status on the copy
// Update the status on the copy
service
.
Status
.
LoadBalancer
=
*
newState
service
.
Status
.
LoadBalancer
=
*
newState
...
...
pkg/controller/service/service_controller_test.go
View file @
1d053c4f
...
@@ -27,7 +27,6 @@ import (
...
@@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
fakecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
fakecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
...
@@ -367,11 +366,7 @@ func TestProcessServiceUpdate(t *testing.T) {
...
@@ -367,11 +366,7 @@ func TestProcessServiceUpdate(t *testing.T) {
t
.
Fatalf
(
"get service key error, expected: %s, got: %s"
,
keyExpected
,
keyGot
.
(
string
))
t
.
Fatalf
(
"get service key error, expected: %s, got: %s"
,
keyExpected
,
keyGot
.
(
string
))
}
}
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
svc
)
newService
:=
svc
.
DeepCopy
()
if
err
!=
nil
{
t
.
Fatalf
(
"copy service error: %v"
,
err
)
}
newService
:=
copy
.
(
*
v1
.
Service
)
newService
.
Spec
.
LoadBalancerIP
=
newLBIP
newService
.
Spec
.
LoadBalancerIP
=
newLBIP
return
newService
return
newService
...
...
pkg/controller/statefulset/BUILD
View file @
1d053c4f
...
@@ -16,7 +16,6 @@ go_library(
...
@@ -16,7 +16,6 @@ go_library(
"stateful_set_utils.go",
"stateful_set_utils.go",
],
],
deps = [
deps = [
"//pkg/api:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/history:go_default_library",
"//pkg/controller/history:go_default_library",
...
@@ -56,7 +55,6 @@ go_test(
...
@@ -56,7 +55,6 @@ go_test(
],
],
library = ":go_default_library",
library = ":go_default_library",
deps = [
deps = [
"//pkg/api:go_default_library",
"//pkg/api/install:go_default_library",
"//pkg/api/install:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/api/v1/pod:go_default_library",
"//pkg/apis/apps/install:go_default_library",
"//pkg/apis/apps/install:go_default_library",
...
@@ -81,7 +79,6 @@ go_test(
...
@@ -81,7 +79,6 @@ go_test(
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/metrics/pkg/client/clientset_generated/clientset/scheme:go_default_library",
],
],
)
)
...
...
pkg/controller/statefulset/stateful_pod_control.go
View file @
1d053c4f
...
@@ -26,7 +26,6 @@ import (
...
@@ -26,7 +26,6 @@ import (
errorutils
"k8s.io/apimachinery/pkg/util/errors"
errorutils
"k8s.io/apimachinery/pkg/util/errors"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
...
@@ -121,11 +120,7 @@ func (spc *realStatefulPodControl) UpdateStatefulPod(set *apps.StatefulSet, pod
...
@@ -121,11 +120,7 @@ func (spc *realStatefulPodControl) UpdateStatefulPod(set *apps.StatefulSet, pod
if
updated
,
err
:=
spc
.
podLister
.
Pods
(
set
.
Namespace
)
.
Get
(
pod
.
Name
);
err
==
nil
{
if
updated
,
err
:=
spc
.
podLister
.
Pods
(
set
.
Namespace
)
.
Get
(
pod
.
Name
);
err
==
nil
{
// make a copy so we don't mutate the shared cache
// make a copy so we don't mutate the shared cache
if
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
updated
);
err
==
nil
{
pod
=
updated
.
DeepCopy
()
pod
=
copy
.
(
*
v1
.
Pod
)
}
else
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error copying updated Pod: %v"
,
err
))
}
}
else
{
}
else
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error getting updated Pod %s/%s from lister: %v"
,
set
.
Namespace
,
pod
.
Name
,
err
))
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error getting updated Pod %s/%s from lister: %v"
,
set
.
Namespace
,
pod
.
Name
,
err
))
}
}
...
...
pkg/controller/statefulset/stateful_set.go
View file @
1d053c4f
...
@@ -38,7 +38,6 @@ import (
...
@@ -38,7 +38,6 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/workqueue"
"k8s.io/client-go/util/workqueue"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
...
@@ -451,11 +450,7 @@ func (ssc *StatefulSetController) sync(key string) error {
...
@@ -451,11 +450,7 @@ func (ssc *StatefulSetController) sync(key string) error {
func
(
ssc
*
StatefulSetController
)
syncStatefulSet
(
set
*
apps
.
StatefulSet
,
pods
[]
*
v1
.
Pod
)
error
{
func
(
ssc
*
StatefulSetController
)
syncStatefulSet
(
set
*
apps
.
StatefulSet
,
pods
[]
*
v1
.
Pod
)
error
{
glog
.
V
(
4
)
.
Infof
(
"Syncing StatefulSet %v/%v with %d pods"
,
set
.
Namespace
,
set
.
Name
,
len
(
pods
))
glog
.
V
(
4
)
.
Infof
(
"Syncing StatefulSet %v/%v with %d pods"
,
set
.
Namespace
,
set
.
Name
,
len
(
pods
))
// TODO: investigate where we mutate the set during the update as it is not obvious.
// TODO: investigate where we mutate the set during the update as it is not obvious.
setCopy
,
err
:=
api
.
Scheme
.
DeepCopy
(
set
)
if
err
:=
ssc
.
control
.
UpdateStatefulSet
(
set
.
DeepCopy
(),
pods
);
err
!=
nil
{
if
err
!=
nil
{
return
err
}
if
err
:=
ssc
.
control
.
UpdateStatefulSet
(
setCopy
.
(
*
apps
.
StatefulSet
),
pods
);
err
!=
nil
{
return
err
return
err
}
}
glog
.
V
(
4
)
.
Infof
(
"Successfully synced StatefulSet %s/%s successful"
,
set
.
Namespace
,
set
.
Name
)
glog
.
V
(
4
)
.
Infof
(
"Successfully synced StatefulSet %s/%s successful"
,
set
.
Namespace
,
set
.
Name
)
...
...
pkg/controller/statefulset/stateful_set_control.go
View file @
1d053c4f
...
@@ -20,13 +20,12 @@ import (
...
@@ -20,13 +20,12 @@ import (
"math"
"math"
"sort"
"sort"
"github.com/golang/glog"
apps
"k8s.io/api/apps/v1beta1"
apps
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
"github.com/golang/glog"
)
)
// StatefulSetControl implements the control logic for updating StatefulSets and their children Pods. It is implemented
// StatefulSetControl implements the control logic for updating StatefulSets and their children Pods. It is implemented
...
@@ -433,11 +432,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
...
@@ -433,11 +432,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
continue
continue
}
}
// Make a deep copy so we don't mutate the shared cache
// Make a deep copy so we don't mutate the shared cache
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
replicas
[
i
])
replica
:=
replicas
[
i
]
.
DeepCopy
()
if
err
!=
nil
{
return
&
status
,
err
}
replica
:=
copy
.
(
*
v1
.
Pod
)
if
err
:=
ssc
.
podControl
.
UpdateStatefulPod
(
updateSet
,
replica
);
err
!=
nil
{
if
err
:=
ssc
.
podControl
.
UpdateStatefulPod
(
updateSet
,
replica
);
err
!=
nil
{
return
&
status
,
err
return
&
status
,
err
}
}
...
@@ -543,11 +538,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSetStatus(
...
@@ -543,11 +538,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSetStatus(
}
}
// copy set and update its status
// copy set and update its status
obj
,
err
:=
scheme
.
Scheme
.
Copy
(
set
)
set
=
set
.
DeepCopy
()
if
err
!=
nil
{
return
err
}
set
=
obj
.
(
*
apps
.
StatefulSet
)
if
err
:=
ssc
.
statusUpdater
.
UpdateStatefulSetStatus
(
set
,
status
);
err
!=
nil
{
if
err
:=
ssc
.
statusUpdater
.
UpdateStatefulSetStatus
(
set
,
status
);
err
!=
nil
{
return
err
return
err
}
}
...
...
pkg/controller/statefulset/stateful_set_control_test.go
View file @
1d053c4f
...
@@ -41,11 +41,9 @@ import (
...
@@ -41,11 +41,9 @@ import (
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/kubernetes/pkg/api"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/metrics/pkg/client/clientset_generated/clientset/scheme"
)
)
type
invariantFunc
func
(
set
*
apps
.
StatefulSet
,
spc
*
fakeStatefulPodControl
)
error
type
invariantFunc
func
(
set
*
apps
.
StatefulSet
,
spc
*
fakeStatefulPodControl
)
error
...
@@ -502,11 +500,7 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
...
@@ -502,11 +500,7 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
}
}
updateRevision
:=
func
(
cr
*
apps
.
ControllerRevision
,
revision
int64
)
*
apps
.
ControllerRevision
{
updateRevision
:=
func
(
cr
*
apps
.
ControllerRevision
,
revision
int64
)
*
apps
.
ControllerRevision
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
cr
)
clone
:=
cr
.
DeepCopy
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
clone
:=
obj
.
(
*
apps
.
ControllerRevision
)
clone
.
Revision
=
revision
clone
.
Revision
=
revision
return
clone
return
clone
}
}
...
@@ -514,12 +508,12 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
...
@@ -514,12 +508,12 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
set
.
Status
.
CollisionCount
=
new
(
int32
)
set
.
Status
.
CollisionCount
=
new
(
int32
)
rev0
:=
newRevisionOrDie
(
set
,
1
)
rev0
:=
newRevisionOrDie
(
set
,
1
)
set1
:=
copySet
(
set
)
set1
:=
set
.
DeepCopy
(
)
set1
.
Spec
.
Template
.
Spec
.
Containers
[
0
]
.
Image
=
"foo"
set1
.
Spec
.
Template
.
Spec
.
Containers
[
0
]
.
Image
=
"foo"
set1
.
Status
.
CurrentRevision
=
rev0
.
Name
set1
.
Status
.
CurrentRevision
=
rev0
.
Name
set1
.
Status
.
CollisionCount
=
new
(
int32
)
set1
.
Status
.
CollisionCount
=
new
(
int32
)
rev1
:=
newRevisionOrDie
(
set1
,
2
)
rev1
:=
newRevisionOrDie
(
set1
,
2
)
set2
:=
copySet
(
set1
)
set2
:=
set1
.
DeepCopy
(
)
set2
.
Spec
.
Template
.
Labels
[
"new"
]
=
"label"
set2
.
Spec
.
Template
.
Labels
[
"new"
]
=
"label"
set2
.
Status
.
CurrentRevision
=
rev0
.
Name
set2
.
Status
.
CurrentRevision
=
rev0
.
Name
set2
.
Status
.
CollisionCount
=
new
(
int32
)
set2
.
Status
.
CollisionCount
=
new
(
int32
)
...
@@ -1549,22 +1543,6 @@ func (spc *fakeStatefulPodControl) SetDeleteStatefulPodError(err error, after in
...
@@ -1549,22 +1543,6 @@ func (spc *fakeStatefulPodControl) SetDeleteStatefulPodError(err error, after in
spc
.
deletePodTracker
.
after
=
after
spc
.
deletePodTracker
.
after
=
after
}
}
func
copyPod
(
pod
*
v1
.
Pod
)
*
v1
.
Pod
{
obj
,
err
:=
api
.
Scheme
.
Copy
(
pod
)
if
err
!=
nil
{
panic
(
err
)
}
return
obj
.
(
*
v1
.
Pod
)
}
func
copySet
(
set
*
apps
.
StatefulSet
)
*
apps
.
StatefulSet
{
obj
,
err
:=
scheme
.
Scheme
.
Copy
(
set
)
if
err
!=
nil
{
panic
(
err
)
}
return
obj
.
(
*
apps
.
StatefulSet
)
}
func
(
spc
*
fakeStatefulPodControl
)
setPodPending
(
set
*
apps
.
StatefulSet
,
ordinal
int
)
([]
*
v1
.
Pod
,
error
)
{
func
(
spc
*
fakeStatefulPodControl
)
setPodPending
(
set
*
apps
.
StatefulSet
,
ordinal
int
)
([]
*
v1
.
Pod
,
error
)
{
selector
,
err
:=
metav1
.
LabelSelectorAsSelector
(
set
.
Spec
.
Selector
)
selector
,
err
:=
metav1
.
LabelSelectorAsSelector
(
set
.
Spec
.
Selector
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -1578,7 +1556,7 @@ func (spc *fakeStatefulPodControl) setPodPending(set *apps.StatefulSet, ordinal
...
@@ -1578,7 +1556,7 @@ func (spc *fakeStatefulPodControl) setPodPending(set *apps.StatefulSet, ordinal
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
}
}
sort
.
Sort
(
ascendingOrdinal
(
pods
))
sort
.
Sort
(
ascendingOrdinal
(
pods
))
pod
:=
copyPod
(
pods
[
ordinal
]
)
pod
:=
pods
[
ordinal
]
.
DeepCopy
(
)
pod
.
Status
.
Phase
=
v1
.
PodPending
pod
.
Status
.
Phase
=
v1
.
PodPending
fakeResourceVersion
(
pod
)
fakeResourceVersion
(
pod
)
spc
.
podsIndexer
.
Update
(
pod
)
spc
.
podsIndexer
.
Update
(
pod
)
...
@@ -1598,7 +1576,7 @@ func (spc *fakeStatefulPodControl) setPodRunning(set *apps.StatefulSet, ordinal
...
@@ -1598,7 +1576,7 @@ func (spc *fakeStatefulPodControl) setPodRunning(set *apps.StatefulSet, ordinal
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
}
}
sort
.
Sort
(
ascendingOrdinal
(
pods
))
sort
.
Sort
(
ascendingOrdinal
(
pods
))
pod
:=
copyPod
(
pods
[
ordinal
]
)
pod
:=
pods
[
ordinal
]
.
DeepCopy
(
)
pod
.
Status
.
Phase
=
v1
.
PodRunning
pod
.
Status
.
Phase
=
v1
.
PodRunning
fakeResourceVersion
(
pod
)
fakeResourceVersion
(
pod
)
spc
.
podsIndexer
.
Update
(
pod
)
spc
.
podsIndexer
.
Update
(
pod
)
...
@@ -1618,7 +1596,7 @@ func (spc *fakeStatefulPodControl) setPodReady(set *apps.StatefulSet, ordinal in
...
@@ -1618,7 +1596,7 @@ func (spc *fakeStatefulPodControl) setPodReady(set *apps.StatefulSet, ordinal in
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
return
nil
,
fmt
.
Errorf
(
"ordinal %d out of range [0,%d)"
,
ordinal
,
len
(
pods
))
}
}
sort
.
Sort
(
ascendingOrdinal
(
pods
))
sort
.
Sort
(
ascendingOrdinal
(
pods
))
pod
:=
copyPod
(
pods
[
ordinal
]
)
pod
:=
pods
[
ordinal
]
.
DeepCopy
(
)
condition
:=
v1
.
PodCondition
{
Type
:
v1
.
PodReady
,
Status
:
v1
.
ConditionTrue
}
condition
:=
v1
.
PodCondition
{
Type
:
v1
.
PodReady
,
Status
:
v1
.
ConditionTrue
}
podutil
.
UpdatePodCondition
(
&
pod
.
Status
,
&
condition
)
podutil
.
UpdatePodCondition
(
&
pod
.
Status
,
&
condition
)
fakeResourceVersion
(
pod
)
fakeResourceVersion
(
pod
)
...
...
pkg/controller/statefulset/stateful_set_status_updater.go
View file @
1d053c4f
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
apps
"k8s.io/api/apps/v1beta1"
apps
"k8s.io/api/apps/v1beta1"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
appslisters
"k8s.io/client-go/listers/apps/v1beta1"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
)
)
...
@@ -60,11 +59,7 @@ func (ssu *realStatefulSetStatusUpdater) UpdateStatefulSetStatus(
...
@@ -60,11 +59,7 @@ func (ssu *realStatefulSetStatusUpdater) UpdateStatefulSetStatus(
}
}
if
updated
,
err
:=
ssu
.
setLister
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
);
err
==
nil
{
if
updated
,
err
:=
ssu
.
setLister
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
);
err
==
nil
{
// make a copy so we don't mutate the shared cache
// make a copy so we don't mutate the shared cache
if
copy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
updated
);
err
==
nil
{
set
=
updated
.
DeepCopy
()
set
=
copy
.
(
*
apps
.
StatefulSet
)
}
else
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error copying updated StatefulSet: %v"
,
err
))
}
}
else
{
}
else
{
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error getting updated StatefulSet %s/%s from lister: %v"
,
set
.
Namespace
,
set
.
Name
,
err
))
utilruntime
.
HandleError
(
fmt
.
Errorf
(
"error getting updated StatefulSet %s/%s from lister: %v"
,
set
.
Namespace
,
set
.
Name
,
err
))
}
}
...
...
pkg/controller/statefulset/stateful_set_utils.go
View file @
1d053c4f
...
@@ -332,11 +332,7 @@ func newRevision(set *apps.StatefulSet, revision int64, collisionCount *int32) (
...
@@ -332,11 +332,7 @@ func newRevision(set *apps.StatefulSet, revision int64, collisionCount *int32) (
// ApplyRevision returns a new StatefulSet constructed by restoring the state in revision to set. If the returned error
// ApplyRevision returns a new StatefulSet constructed by restoring the state in revision to set. If the returned error
// is nil, the returned StatefulSet is valid.
// is nil, the returned StatefulSet is valid.
func
ApplyRevision
(
set
*
apps
.
StatefulSet
,
revision
*
apps
.
ControllerRevision
)
(
*
apps
.
StatefulSet
,
error
)
{
func
ApplyRevision
(
set
*
apps
.
StatefulSet
,
revision
*
apps
.
ControllerRevision
)
(
*
apps
.
StatefulSet
,
error
)
{
obj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
set
)
clone
:=
set
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
err
}
clone
:=
obj
.
(
*
apps
.
StatefulSet
)
patched
,
err
:=
strategicpatch
.
StrategicMergePatch
([]
byte
(
runtime
.
EncodeOrDie
(
patchCodec
,
clone
)),
revision
.
Data
.
Raw
,
clone
)
patched
,
err
:=
strategicpatch
.
StrategicMergePatch
([]
byte
(
runtime
.
EncodeOrDie
(
patchCodec
,
clone
)),
revision
.
Data
.
Raw
,
clone
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
...
pkg/controller/ttl/BUILD
View file @
1d053c4f
...
@@ -21,7 +21,6 @@ go_library(
...
@@ -21,7 +21,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
"//vendor/k8s.io/client-go/util/workqueue:go_default_library",
...
...
pkg/controller/ttl/ttl_controller.go
View file @
1d053c4f
...
@@ -42,7 +42,6 @@ import (
...
@@ -42,7 +42,6 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
informers
"k8s.io/client-go/informers/core/v1"
informers
"k8s.io/client-go/informers/core/v1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
listers
"k8s.io/client-go/listers/core/v1"
listers
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"k8s.io/client-go/util/workqueue"
...
@@ -288,9 +287,5 @@ func (ttlc *TTLController) updateNodeIfNeeded(key string) error {
...
@@ -288,9 +287,5 @@ func (ttlc *TTLController) updateNodeIfNeeded(key string) error {
return
nil
return
nil
}
}
objCopy
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
node
)
return
ttlc
.
patchNodeWithAnnotation
(
node
.
DeepCopy
(),
v1
.
ObjectTTLAnnotationKey
,
desiredTTL
)
if
err
!=
nil
{
return
err
}
return
ttlc
.
patchNodeWithAnnotation
(
objCopy
.
(
*
v1
.
Node
),
v1
.
ObjectTTLAnnotationKey
,
desiredTTL
)
}
}
pkg/controller/volume/attachdetach/statusupdater/BUILD
View file @
1d053c4f
...
@@ -19,7 +19,6 @@ go_library(
...
@@ -19,7 +19,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
],
],
)
)
...
...
pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go
View file @
1d053c4f
...
@@ -29,7 +29,6 @@ import (
...
@@ -29,7 +29,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/strategicpatch"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
)
)
...
@@ -100,20 +99,7 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error {
...
@@ -100,20 +99,7 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error {
}
}
func
(
nsu
*
nodeStatusUpdater
)
updateNodeStatus
(
nodeName
types
.
NodeName
,
nodeObj
*
v1
.
Node
,
attachedVolumes
[]
v1
.
AttachedVolume
)
error
{
func
(
nsu
*
nodeStatusUpdater
)
updateNodeStatus
(
nodeName
types
.
NodeName
,
nodeObj
*
v1
.
Node
,
attachedVolumes
[]
v1
.
AttachedVolume
)
error
{
clonedNode
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
nodeObj
)
node
:=
nodeObj
.
DeepCopy
()
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error cloning node %q: %v"
,
nodeName
,
err
)
}
node
,
ok
:=
clonedNode
.
(
*
v1
.
Node
)
if
!
ok
||
node
==
nil
{
return
fmt
.
Errorf
(
"failed to cast %q object %#v to Node"
,
nodeName
,
clonedNode
)
}
// TODO: Change to pkg/util/node.UpdateNodeStatus.
// TODO: Change to pkg/util/node.UpdateNodeStatus.
oldData
,
err
:=
json
.
Marshal
(
node
)
oldData
,
err
:=
json
.
Marshal
(
node
)
...
...
pkg/controller/volume/attachdetach/util/BUILD
View file @
1d053c4f
...
@@ -15,7 +15,6 @@ go_library(
...
@@ -15,7 +15,6 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/core/v1:go_default_library",
],
],
)
)
...
...
pkg/controller/volume/attachdetach/util/util.go
View file @
1d053c4f
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
"github.com/golang/glog"
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/kubernetes/scheme"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
...
@@ -80,16 +79,7 @@ func CreateVolumeSpec(podVolume v1.Volume, podNamespace string, pvcLister coreli
...
@@ -80,16 +79,7 @@ func CreateVolumeSpec(podVolume v1.Volume, podNamespace string, pvcLister coreli
// Do not return the original volume object, since it's from the shared
// Do not return the original volume object, since it's from the shared
// informer it may be mutated by another consumer.
// informer it may be mutated by another consumer.
clonedPodVolumeObj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
&
podVolume
)
clonedPodVolume
:=
podVolume
.
DeepCopy
()
if
err
!=
nil
||
clonedPodVolumeObj
==
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to deep copy %q volume object. err=%v"
,
podVolume
.
Name
,
err
)
}
clonedPodVolume
,
ok
:=
clonedPodVolumeObj
.
(
*
v1
.
Volume
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"failed to cast clonedPodVolume %#v to v1.Volume"
,
clonedPodVolumeObj
)
}
return
volume
.
NewSpecFromVolume
(
clonedPodVolume
),
nil
return
volume
.
NewSpecFromVolume
(
clonedPodVolume
),
nil
}
}
...
@@ -146,15 +136,7 @@ func getPVSpecFromCache(name string, pvcReadOnly bool, expectedClaimUID types.UI
...
@@ -146,15 +136,7 @@ func getPVSpecFromCache(name string, pvcReadOnly bool, expectedClaimUID types.UI
// Do not return the object from the informer, since the store is shared it
// Do not return the object from the informer, since the store is shared it
// may be mutated by another consumer.
// may be mutated by another consumer.
clonedPVObj
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
pv
)
clonedPV
:=
pv
.
DeepCopy
()
if
err
!=
nil
||
clonedPVObj
==
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to deep copy %q PV object. err=%v"
,
name
,
err
)
}
clonedPV
,
ok
:=
clonedPVObj
.
(
*
v1
.
PersistentVolume
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"failed to cast %q clonedPV %#v to PersistentVolume"
,
name
,
pv
)
}
return
volume
.
NewSpecFromPersistentVolume
(
clonedPV
,
pvcReadOnly
),
nil
return
volume
.
NewSpecFromPersistentVolume
(
clonedPV
,
pvcReadOnly
),
nil
}
}
...
...
pkg/controller/volume/persistentvolume/framework_test.go
View file @
1d053c4f
...
@@ -41,7 +41,6 @@ import (
...
@@ -41,7 +41,6 @@ import (
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/scheme"
storagelisters
"k8s.io/client-go/listers/storage/v1"
storagelisters
"k8s.io/client-go/listers/storage/v1"
core
"k8s.io/client-go/testing"
core
"k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
...
@@ -308,8 +307,7 @@ func (r *volumeReactor) checkVolumes(expectedVolumes []*v1.PersistentVolume) err
...
@@ -308,8 +307,7 @@ func (r *volumeReactor) checkVolumes(expectedVolumes []*v1.PersistentVolume) err
for
_
,
v
:=
range
r
.
volumes
{
for
_
,
v
:=
range
r
.
volumes
{
// We must clone the volume because of golang race check - it was
// We must clone the volume because of golang race check - it was
// written by the controller without any locks on it.
// written by the controller without any locks on it.
clone
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
v
)
v
:=
v
.
DeepCopy
()
v
=
clone
.
(
*
v1
.
PersistentVolume
)
v
.
ResourceVersion
=
""
v
.
ResourceVersion
=
""
if
v
.
Spec
.
ClaimRef
!=
nil
{
if
v
.
Spec
.
ClaimRef
!=
nil
{
v
.
Spec
.
ClaimRef
.
ResourceVersion
=
""
v
.
Spec
.
ClaimRef
.
ResourceVersion
=
""
...
@@ -339,8 +337,7 @@ func (r *volumeReactor) checkClaims(expectedClaims []*v1.PersistentVolumeClaim)
...
@@ -339,8 +337,7 @@ func (r *volumeReactor) checkClaims(expectedClaims []*v1.PersistentVolumeClaim)
for
_
,
c
:=
range
r
.
claims
{
for
_
,
c
:=
range
r
.
claims
{
// We must clone the claim because of golang race check - it was
// We must clone the claim because of golang race check - it was
// written by the controller without any locks on it.
// written by the controller without any locks on it.
clone
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
c
)
c
=
c
.
DeepCopy
()
c
=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
c
.
ResourceVersion
=
""
c
.
ResourceVersion
=
""
gotMap
[
c
.
Name
]
=
c
gotMap
[
c
.
Name
]
=
c
}
}
...
@@ -508,9 +505,7 @@ func (r *volumeReactor) deleteVolumeEvent(volume *v1.PersistentVolume) {
...
@@ -508,9 +505,7 @@ func (r *volumeReactor) deleteVolumeEvent(volume *v1.PersistentVolume) {
// Generate deletion event. Cloned volume is needed to prevent races (and we
// Generate deletion event. Cloned volume is needed to prevent races (and we
// would get a clone from etcd too).
// would get a clone from etcd too).
if
r
.
fakeVolumeWatch
!=
nil
{
if
r
.
fakeVolumeWatch
!=
nil
{
clone
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
r
.
fakeVolumeWatch
.
Delete
(
volume
.
DeepCopy
())
volumeClone
:=
clone
.
(
*
v1
.
PersistentVolume
)
r
.
fakeVolumeWatch
.
Delete
(
volumeClone
)
}
}
}
}
...
@@ -526,9 +521,7 @@ func (r *volumeReactor) deleteClaimEvent(claim *v1.PersistentVolumeClaim) {
...
@@ -526,9 +521,7 @@ func (r *volumeReactor) deleteClaimEvent(claim *v1.PersistentVolumeClaim) {
// Generate deletion event. Cloned volume is needed to prevent races (and we
// Generate deletion event. Cloned volume is needed to prevent races (and we
// would get a clone from etcd too).
// would get a clone from etcd too).
if
r
.
fakeClaimWatch
!=
nil
{
if
r
.
fakeClaimWatch
!=
nil
{
clone
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
claim
)
r
.
fakeClaimWatch
.
Delete
(
claim
.
DeepCopy
())
claimClone
:=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
r
.
fakeClaimWatch
.
Delete
(
claimClone
)
}
}
}
}
...
@@ -556,9 +549,7 @@ func (r *volumeReactor) modifyVolumeEvent(volume *v1.PersistentVolume) {
...
@@ -556,9 +549,7 @@ func (r *volumeReactor) modifyVolumeEvent(volume *v1.PersistentVolume) {
// Generate deletion event. Cloned volume is needed to prevent races (and we
// Generate deletion event. Cloned volume is needed to prevent races (and we
// would get a clone from etcd too).
// would get a clone from etcd too).
if
r
.
fakeVolumeWatch
!=
nil
{
if
r
.
fakeVolumeWatch
!=
nil
{
clone
,
_
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
r
.
fakeVolumeWatch
.
Modify
(
volume
.
DeepCopy
())
volumeClone
:=
clone
.
(
*
v1
.
PersistentVolume
)
r
.
fakeVolumeWatch
.
Modify
(
volumeClone
)
}
}
}
}
...
...
pkg/controller/volume/persistentvolume/pv_controller.go
View file @
1d053c4f
...
@@ -595,15 +595,7 @@ func (ctrl *PersistentVolumeController) updateClaimStatus(claim *v1.PersistentVo
...
@@ -595,15 +595,7 @@ func (ctrl *PersistentVolumeController) updateClaimStatus(claim *v1.PersistentVo
dirty
:=
false
dirty
:=
false
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
claim
)
claimClone
:=
claim
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Error cloning claim: %v"
,
err
)
}
claimClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected claim cast error : %v"
,
claimClone
)
}
if
claim
.
Status
.
Phase
!=
phase
{
if
claim
.
Status
.
Phase
!=
phase
{
claimClone
.
Status
.
Phase
=
phase
claimClone
.
Status
.
Phase
=
phase
dirty
=
true
dirty
=
true
...
@@ -700,15 +692,7 @@ func (ctrl *PersistentVolumeController) updateVolumePhase(volume *v1.PersistentV
...
@@ -700,15 +692,7 @@ func (ctrl *PersistentVolumeController) updateVolumePhase(volume *v1.PersistentV
return
volume
,
nil
return
volume
,
nil
}
}
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
volumeClone
:=
volume
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Error cloning claim: %v"
,
err
)
}
volumeClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolume
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected volume cast error : %v"
,
volumeClone
)
}
volumeClone
.
Status
.
Phase
=
phase
volumeClone
.
Status
.
Phase
=
phase
volumeClone
.
Status
.
Message
=
message
volumeClone
.
Status
.
Message
=
message
...
@@ -765,14 +749,7 @@ func (ctrl *PersistentVolumeController) bindVolumeToClaim(volume *v1.PersistentV
...
@@ -765,14 +749,7 @@ func (ctrl *PersistentVolumeController) bindVolumeToClaim(volume *v1.PersistentV
// The volume from method args can be pointing to watcher cache. We must not
// The volume from method args can be pointing to watcher cache. We must not
// modify these, therefore create a copy.
// modify these, therefore create a copy.
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
volumeClone
:=
volume
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Error cloning pv: %v"
,
err
)
}
volumeClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolume
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected volume cast error : %v"
,
volumeClone
)
}
// Bind the volume to the claim if it is not bound yet
// Bind the volume to the claim if it is not bound yet
if
volume
.
Spec
.
ClaimRef
==
nil
||
if
volume
.
Spec
.
ClaimRef
==
nil
||
...
@@ -830,14 +807,7 @@ func (ctrl *PersistentVolumeController) bindClaimToVolume(claim *v1.PersistentVo
...
@@ -830,14 +807,7 @@ func (ctrl *PersistentVolumeController) bindClaimToVolume(claim *v1.PersistentVo
// The claim from method args can be pointing to watcher cache. We must not
// The claim from method args can be pointing to watcher cache. We must not
// modify these, therefore create a copy.
// modify these, therefore create a copy.
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
claim
)
claimClone
:=
claim
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Error cloning claim: %v"
,
err
)
}
claimClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected claim cast error : %v"
,
claimClone
)
}
if
shouldBind
{
if
shouldBind
{
dirty
=
true
dirty
=
true
...
@@ -928,15 +898,8 @@ func (ctrl *PersistentVolumeController) bind(volume *v1.PersistentVolume, claim
...
@@ -928,15 +898,8 @@ func (ctrl *PersistentVolumeController) bind(volume *v1.PersistentVolume, claim
func
(
ctrl
*
PersistentVolumeController
)
unbindVolume
(
volume
*
v1
.
PersistentVolume
)
error
{
func
(
ctrl
*
PersistentVolumeController
)
unbindVolume
(
volume
*
v1
.
PersistentVolume
)
error
{
glog
.
V
(
4
)
.
Infof
(
"updating PersistentVolume[%s]: rolling back binding from %q"
,
volume
.
Name
,
claimrefToClaimKey
(
volume
.
Spec
.
ClaimRef
))
glog
.
V
(
4
)
.
Infof
(
"updating PersistentVolume[%s]: rolling back binding from %q"
,
volume
.
Name
,
claimrefToClaimKey
(
volume
.
Spec
.
ClaimRef
))
// Save the PV only when any modification is necessary.
// Save the PV only when any modification is neccessary.
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
volumeClone
:=
volume
.
DeepCopy
()
if
err
!=
nil
{
return
fmt
.
Errorf
(
"Error cloning pv: %v"
,
err
)
}
volumeClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolume
)
if
!
ok
{
return
fmt
.
Errorf
(
"Unexpected volume cast error : %v"
,
volumeClone
)
}
if
metav1
.
HasAnnotation
(
volume
.
ObjectMeta
,
annBoundByController
)
{
if
metav1
.
HasAnnotation
(
volume
.
ObjectMeta
,
annBoundByController
)
{
// The volume was bound by the controller.
// The volume was bound by the controller.
...
...
pkg/controller/volume/persistentvolume/pv_controller_base.go
View file @
1d053c4f
...
@@ -130,12 +130,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeLister corelister
...
@@ -130,12 +130,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeLister corelister
return
return
}
}
for
_
,
volume
:=
range
volumeList
{
for
_
,
volume
:=
range
volumeList
{
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
volume
)
volumeClone
:=
volume
.
DeepCopy
()
if
err
!=
nil
{
glog
.
Errorf
(
"error cloning volume %q: %v"
,
volume
.
Name
,
err
)
continue
}
volumeClone
:=
clone
.
(
*
v1
.
PersistentVolume
)
if
_
,
err
=
ctrl
.
storeVolumeUpdate
(
volumeClone
);
err
!=
nil
{
if
_
,
err
=
ctrl
.
storeVolumeUpdate
(
volumeClone
);
err
!=
nil
{
glog
.
Errorf
(
"error updating volume cache: %v"
,
err
)
glog
.
Errorf
(
"error updating volume cache: %v"
,
err
)
}
}
...
@@ -147,13 +142,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeLister corelister
...
@@ -147,13 +142,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeLister corelister
return
return
}
}
for
_
,
claim
:=
range
claimList
{
for
_
,
claim
:=
range
claimList
{
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
claim
)
if
_
,
err
=
ctrl
.
storeClaimUpdate
(
claim
.
DeepCopy
());
err
!=
nil
{
if
err
!=
nil
{
glog
.
Errorf
(
"error cloning claim %q: %v"
,
claimToClaimKey
(
claim
),
err
)
continue
}
claimClone
:=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
if
_
,
err
=
ctrl
.
storeClaimUpdate
(
claimClone
);
err
!=
nil
{
glog
.
Errorf
(
"error updating claim cache: %v"
,
err
)
glog
.
Errorf
(
"error updating claim cache: %v"
,
err
)
}
}
}
}
...
@@ -433,14 +422,7 @@ func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.Persistent
...
@@ -433,14 +422,7 @@ func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.Persistent
// The volume from method args can be pointing to watcher cache. We must not
// The volume from method args can be pointing to watcher cache. We must not
// modify these, therefore create a copy.
// modify these, therefore create a copy.
clone
,
err
:=
scheme
.
Scheme
.
DeepCopy
(
claim
)
claimClone
:=
claim
.
DeepCopy
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Error cloning pv: %v"
,
err
)
}
claimClone
,
ok
:=
clone
.
(
*
v1
.
PersistentVolumeClaim
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Unexpected claim cast error : %v"
,
claimClone
)
}
metav1
.
SetMetaDataAnnotation
(
&
claimClone
.
ObjectMeta
,
annStorageProvisioner
,
class
.
Provisioner
)
metav1
.
SetMetaDataAnnotation
(
&
claimClone
.
ObjectMeta
,
annStorageProvisioner
,
class
.
Provisioner
)
newClaim
,
err
:=
ctrl
.
kubeClient
.
Core
()
.
PersistentVolumeClaims
(
claim
.
Namespace
)
.
Update
(
claimClone
)
newClaim
,
err
:=
ctrl
.
kubeClient
.
Core
()
.
PersistentVolumeClaims
(
claim
.
Namespace
)
.
Update
(
claimClone
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
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