@@ -42,6 +42,12 @@ func (client *Rke2Client) IsTransientError(err error) (bool) {
4242		if  strings .Contains (err .Error (), "i/o timeout" ) {
4343			return  true 
4444		}
45+ 		if  strings .Contains (err .Error (), "handshake timeout" ) {
46+ 			return  true 
47+ 		}
48+ 		if  strings .Contains (err .Error (), "connection reset by peer" ) {
49+ 			return  true 
50+ 		}
4551		if  strings .Contains (err .Error (), "context deadline exceeded" ) {
4652			return  true 
4753		}
@@ -57,23 +63,23 @@ func (client *Rke2Client) IsNotFoundError(err error) (bool) {
5763	return  false 
5864}
5965
60- // GetNode gets RKE2 node by node IP address 
61- func  (client  * Rke2Client ) GetNode (nodeIpAddr  string ) (nodeName  string , err  error ) {
66+ // GetNode gets RKE2 node name  by node IP address 
67+ func  (client  * Rke2Client ) GetNodeName (nodeIpAddr  string ) (nodeName  string , err  error ) {
6268        var  nodes  * v1.NodeList 
6369	for  retry  :=  0 ; retry  <  client .RancherConfig .Retries ; retry ++  {
6470		if  nodes , err  =  client .Management .CoreV1 ().Nodes ().List (context .TODO (), metav1.ListOptions {}); err  ==  nil  {
6571			for  _ , item  :=  range  nodes .Items  {
6672	        		var  hostIpAddr  net.IP 
6773	        		if  hostIpAddr , err  =  node .GetNodeHostIP (& item ); err  !=  nil  {
68- 		        		err  =  fmt .Errorf ("rke2-client.GetNode ().node.GetNodeHostIP() error: %s" , err )
74+ 		        		err  =  fmt .Errorf ("rke2-client.GetNodeName ().node.GetNodeHostIP() error: %s" , err )
6975		        		return 
7076                		}
7177                		if  hostIpAddr .String () ==  nodeIpAddr  {
7278                        		nodeName  =  item .Name 
7379		        		return 
7480                		}
7581        		}
76- 			err  =  fmt .Errorf ("rke2-client.GetNode ().node.GetNodeHostIP() error: node with IP address %s not found" , nodeIpAddr )
82+ 			err  =  fmt .Errorf ("rke2-client.GetNodeName ().node.GetNodeHostIP() error: node with IP address %s not found" , nodeIpAddr )
7783		        return 
7884        	}
7985		if  ! client .IsTransientError (err ) {
@@ -82,25 +88,15 @@ func (client *Rke2Client) GetNode(nodeIpAddr string) (nodeName string, err error
8288		time .Sleep (rke2RetriesWait  *  time .Second )
8389	}
8490	if  err  !=  nil  {
85- 		err  =  fmt .Errorf ("rke2-client.GetNode () error: %s" , err )
91+ 		err  =  fmt .Errorf ("rke2-client.GetNodeName () error: %s" , err )
8692	}
8793	return 
8894}
8995
90- // GetNodeRole gets RKE2 node role 
91- func  (client  * Rke2Client ) GetNodeRole (nodeName  string ) (controlplane  bool , etcd  bool , worker  bool , err  error ) {
92-         var  node  * v1.Node 
96+ // GetNodeByName gets RKE2 node by node name 
97+ func  (client  * Rke2Client ) GetNodeByName (nodeName  string ) (node  * v1.Node , err  error ) {
9398	for  retry  :=  0 ; retry  <  client .RancherConfig .Retries ; retry ++  {
9499		if  node , err  =  client .Management .CoreV1 ().Nodes ().Get (context .TODO (), nodeName , metav1.GetOptions {}); err  ==  nil  {
95- 			if  strings .ToLower (node .Labels [Rke2NodeRoleLabelWorker ]) ==  "true"  {
96- 				worker  =  true 
97- 			}
98- 			if  strings .ToLower (node .Labels [Rke2NodeRoleLabelControlplane ]) ==  "true"  {
99- 				controlplane  =  true 
100- 			}
101- 			if  strings .ToLower (node .Labels [Rke2NodeRoleLabelEtcd ]) ==  "true"  {
102- 				etcd  =  true 
103- 			}
104100			return 
105101		}
106102		if  ! client .IsTransientError (err ) {
@@ -109,6 +105,25 @@ func (client *Rke2Client) GetNodeRole(nodeName string) (controlplane bool, etcd
109105		time .Sleep (rke2RetriesWait  *  time .Second )
110106	}
111107	if  err  !=  nil  {
108+ 		err  =  fmt .Errorf ("rke2-client.GetNodeByName(%s) error: %s" , nodeName , err )
109+ 	}
110+ 	return 
111+ }
112+ 
113+ // GetNodeRole gets RKE2 node role 
114+ func  (client  * Rke2Client ) GetNodeRole (nodeName  string ) (controlplane  bool , etcd  bool , worker  bool , err  error ) {
115+         var  node  * v1.Node 
116+ 	if  node , err  =  client .GetNodeByName (nodeName ); err  ==  nil  {
117+ 		if  strings .ToLower (node .Labels [Rke2NodeRoleLabelWorker ]) ==  "true"  {
118+ 			worker  =  true 
119+ 		}
120+ 		if  strings .ToLower (node .Labels [Rke2NodeRoleLabelControlplane ]) ==  "true"  {
121+ 			controlplane  =  true 
122+ 		}
123+ 		if  strings .ToLower (node .Labels [Rke2NodeRoleLabelEtcd ]) ==  "true"  {
124+ 			etcd  =  true 
125+ 		}
126+ 	} else  {
112127		err  =  fmt .Errorf ("rke2-client.GetNodeRole(%s) error: %s" , nodeName , err )
113128	}
114129	return 
@@ -117,17 +132,9 @@ func (client *Rke2Client) GetNodeRole(nodeName string) (controlplane bool, etcd
117132// IsNodeReady returns true if node ready 
118133func  (client  * Rke2Client ) IsNodeReady (nodeName  string ) (ready  bool , err  error ) {
119134        var  nodeObj  * v1.Node 
120- 	for  retry  :=  0 ; retry  <  client .RancherConfig .Retries ; retry ++  {
121- 		if  nodeObj , err  =  client .Management .CoreV1 ().Nodes ().Get (context .TODO (), nodeName , metav1.GetOptions {}); err  ==  nil  {
122- 			ready  =  node .IsNodeReady (nodeObj )
123- 			return 
124- 		}
125- 		if  ! client .IsTransientError (err ) {
126- 			break 
127- 		}
128- 		time .Sleep (rke2RetriesWait  *  time .Second )
129- 	}
130- 	if  err  !=  nil  {
135+ 	if  nodeObj , err  =  client .GetNodeByName (nodeName ); err  ==  nil  {
136+ 		ready  =  node .IsNodeReady (nodeObj )
137+ 	} else  {
131138		err  =  fmt .Errorf ("rke2-client.IsNodeReady(%s) error: %s" , nodeName , err )
132139	}
133140	return 
@@ -277,10 +284,10 @@ func (client *Rke2Client) NodeSetAnnotationsLabelsTaints(nodeName string, annota
277284// NodeGetLabels get RKE2 node labels 
278285func  (client  * Rke2Client ) NodeGetLabels (nodeName  string ) (nodeLabels  map [string ]string , err  error ) {
279286        var  node  * v1.Node 
280- 	if  node , err  =  client .Management .CoreV1 ().Nodes ().Get (context .TODO (), nodeName , metav1.GetOptions {}); err  !=  nil  {
281- 		err  =  fmt .Errorf ("rke2-client.NodeGetLabels() error: %s" , err )
282- 	} else  {
287+ 	if  node , err  =  client .GetNodeByName (nodeName ); err  ==  nil  {
283288	        nodeLabels  =  node .Labels 
289+ 	} else  {
290+ 		err  =  fmt .Errorf ("rke2-client.NodeGetLabels() error: %s" , err )
284291	}
285292	return 
286293}
@@ -319,17 +326,9 @@ func (client *Rke2Client) NodeUpdateLabels(nodeName string, oldLabels map[string
319326// NodeGetTaints get RKE2 node taints 
320327func  (client  * Rke2Client ) NodeGetTaints (nodeName  string ) (nodeTaints  []v1.Taint , err  error ) {
321328        var  node  * v1.Node 
322- 	for  retry  :=  0 ; retry  <  client .RancherConfig .Retries ; retry ++  {
323- 		if  node , err  =  client .Management .CoreV1 ().Nodes ().Get (context .TODO (), nodeName , metav1.GetOptions {}); err  ==  nil  {
324- 			nodeTaints  =  node .Spec .Taints 
325- 			return 
326- 		}
327- 		if  ! client .IsTransientError (err ) {
328- 			break 
329- 		}
330- 		time .Sleep (rke2RetriesWait  *  time .Second )
331- 	}
332- 	if  err  !=  nil  {
329+ 	if  node , err  =  client .GetNodeByName (nodeName ); err  ==  nil  {
330+ 		nodeTaints  =  node .Spec .Taints 
331+ 	} else  {
333332		err  =  fmt .Errorf ("rke2-client.NodeGetTaints() error: %s" , err )
334333	}
335334	return 
0 commit comments