Merge pull request #41123 from xilabao/replace-update-to-patch-in-setupmaster

Automatic merge from submit-queue (batch tested with PRs 40917, 41181, 41123, 36592, 41183)

replace update in setupmaster.go

follow the TODO
This commit is contained in:
Kubernetes Submit Queue 2017-02-09 23:10:45 -08:00 committed by GitHub
commit 89ca179771
2 changed files with 20 additions and 2 deletions

View File

@ -22,6 +22,8 @@ go_library(
"//pkg/client/clientset_generated/clientset:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apimachinery/pkg/types",
"//vendor:k8s.io/apimachinery/pkg/util/strategicpatch",
],
)

View File

@ -23,6 +23,8 @@ import (
apierrs "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
)
@ -51,6 +53,11 @@ func attemptToUpdateMasterRoleLabelsAndTaints(client *clientset.Clientset) error
return err
}
oldData, err := json.Marshal(n)
if err != nil {
return err
}
// TODO: Switch to the new master label defined in https://github.com/kubernetes/kubernetes/pull/39112
n.ObjectMeta.Labels[metav1.NodeLabelKubeadmAlphaRole] = metav1.NodeLabelRoleMaster
@ -58,8 +65,17 @@ func attemptToUpdateMasterRoleLabelsAndTaints(client *clientset.Clientset) error
taintsAnnotation, _ := json.Marshal([]v1.Taint{{Key: "dedicated", Value: "master", Effect: "NoSchedule"}})
n.ObjectMeta.Annotations[v1.TaintsAnnotationKey] = string(taintsAnnotation)
// TODO: Use a patch instead of an Update
if _, err := client.Nodes().Update(n); err != nil {
newData, err := json.Marshal(n)
if err != nil {
return err
}
patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, v1.Node{})
if err != nil {
return err
}
if _, err := client.Nodes().Patch(n.Name, types.StrategicMergePatchType, patchBytes); err != nil {
if apierrs.IsConflict(err) {
fmt.Println("[apiclient] Temporarily unable to update master node metadata due to conflict (will retry)")
time.Sleep(apiCallRetryInterval)