mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	retry updates of nodes in daemonset e2e
This commit is contained in:
		@@ -21,6 +21,8 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						apierrs "k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/experimental"
 | 
						"k8s.io/kubernetes/pkg/apis/experimental"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/fields"
 | 
						"k8s.io/kubernetes/pkg/fields"
 | 
				
			||||||
@@ -32,6 +34,11 @@ import (
 | 
				
			|||||||
	. "github.com/onsi/gomega"
 | 
						. "github.com/onsi/gomega"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						updateRetryPeriod  = 5 * time.Second
 | 
				
			||||||
 | 
						updateRetryTimeout = 30 * time.Second
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ = Describe("Daemon set", func() {
 | 
					var _ = Describe("Daemon set", func() {
 | 
				
			||||||
	f := &Framework{BaseName: "daemonsets"}
 | 
						f := &Framework{BaseName: "daemonsets"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -61,7 +68,18 @@ func clearNodeLabels(c *client.Client) error {
 | 
				
			|||||||
	for _, node := range nodeList.Items {
 | 
						for _, node := range nodeList.Items {
 | 
				
			||||||
		if len(node.Labels) != 0 {
 | 
							if len(node.Labels) != 0 {
 | 
				
			||||||
			node.Labels = map[string]string{}
 | 
								node.Labels = map[string]string{}
 | 
				
			||||||
			newNode, err := nodeClient.Update(&node)
 | 
								var newNode *api.Node
 | 
				
			||||||
 | 
								err = wait.Poll(updateRetryPeriod, updateRetryTimeout, func() (bool, error) {
 | 
				
			||||||
 | 
									newNode, err = nodeClient.Update(&node)
 | 
				
			||||||
 | 
									if err == nil {
 | 
				
			||||||
 | 
										return true, err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if se, ok := err.(*apierrs.StatusError); ok && se.ErrStatus.Reason == unversioned.StatusReasonConflict {
 | 
				
			||||||
 | 
										Logf("failed to update node due to resource version conflict")
 | 
				
			||||||
 | 
										return false, nil
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return false, err
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			} else if len(newNode.Labels) != 0 {
 | 
								} else if len(newNode.Labels) != 0 {
 | 
				
			||||||
@@ -214,7 +232,18 @@ func testDaemonSets(f *Framework) {
 | 
				
			|||||||
	nodeList, err := nodeClient.List(labels.Everything(), fields.Everything())
 | 
						nodeList, err := nodeClient.List(labels.Everything(), fields.Everything())
 | 
				
			||||||
	Expect(len(nodeList.Items)).To(BeNumerically(">", 0))
 | 
						Expect(len(nodeList.Items)).To(BeNumerically(">", 0))
 | 
				
			||||||
	nodeList.Items[0].Labels = nodeSelector
 | 
						nodeList.Items[0].Labels = nodeSelector
 | 
				
			||||||
	newNode, err := nodeClient.Update(&nodeList.Items[0])
 | 
						var newNode *api.Node
 | 
				
			||||||
 | 
						err = wait.Poll(updateRetryPeriod, updateRetryTimeout, func() (bool, error) {
 | 
				
			||||||
 | 
							newNode, err = nodeClient.Update(&nodeList.Items[0])
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								return true, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if se, ok := err.(*apierrs.StatusError); ok && se.ErrStatus.Reason == unversioned.StatusReasonConflict {
 | 
				
			||||||
 | 
								Logf("failed to update node due to resource version conflict")
 | 
				
			||||||
 | 
								return false, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(len(newNode.Labels)).To(Equal(1))
 | 
						Expect(len(newNode.Labels)).To(Equal(1))
 | 
				
			||||||
	err = wait.Poll(retryInterval, retryTimeout, checkDaemonPodOnNodes(f, complexLabel, []string{newNode.Name}))
 | 
						err = wait.Poll(retryInterval, retryTimeout, checkDaemonPodOnNodes(f, complexLabel, []string{newNode.Name}))
 | 
				
			||||||
@@ -224,7 +253,17 @@ func testDaemonSets(f *Framework) {
 | 
				
			|||||||
	newNode, err = nodeClient.Get(newNode.Name)
 | 
						newNode, err = nodeClient.Get(newNode.Name)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred(), "error getting node")
 | 
						Expect(err).NotTo(HaveOccurred(), "error getting node")
 | 
				
			||||||
	newNode.Labels = map[string]string{}
 | 
						newNode.Labels = map[string]string{}
 | 
				
			||||||
 | 
						err = wait.Poll(updateRetryPeriod, updateRetryTimeout, func() (bool, error) {
 | 
				
			||||||
		newNode, err = nodeClient.Update(newNode)
 | 
							newNode, err = nodeClient.Update(newNode)
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								return true, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if se, ok := err.(*apierrs.StatusError); ok && se.ErrStatus.Reason == unversioned.StatusReasonConflict {
 | 
				
			||||||
 | 
								Logf("failed to update node due to resource version conflict")
 | 
				
			||||||
 | 
								return false, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(wait.Poll(retryInterval, retryTimeout, checkRunningOnNoNodes(f, complexLabel))).
 | 
						Expect(wait.Poll(retryInterval, retryTimeout, checkRunningOnNoNodes(f, complexLabel))).
 | 
				
			||||||
		NotTo(HaveOccurred(), "error waiting for daemon pod to not be running on nodes")
 | 
							NotTo(HaveOccurred(), "error waiting for daemon pod to not be running on nodes")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user