fix e2e test
This commit is contained in:
		
							parent
							
								
									80d4eb3c0d
								
							
						
					
					
						commit
						6a3645aeec
					
				|  | @ -127,9 +127,7 @@ configKubernetes: | ||||||
| 
 | 
 | ||||||
|   # annotations to be ignored when comparing statefulsets, services etc. |   # annotations to be ignored when comparing statefulsets, services etc. | ||||||
|   # ignored_annotations: |   # ignored_annotations: | ||||||
|   # - "deployment-time" |   # - k8s.v1.cni.cncf.io/network-status | ||||||
|   # - "k8s.v1.cni.cncf.io/network-status" |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|   # namespaced name of the secret containing infrastructure roles names and passwords |   # namespaced name of the secret containing infrastructure roles names and passwords | ||||||
|   # infrastructure_roles_secret_name: postgresql-infrastructure-roles |   # infrastructure_roles_secret_name: postgresql-infrastructure-roles | ||||||
|  |  | ||||||
|  | @ -707,39 +707,45 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) |     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) | ||||||
|     def test_ignored_annotations(self): |     def test_ignored_annotations(self): | ||||||
|         ''' |         ''' | ||||||
|            Test if injected annotation does not cause failover when listed under ignored_annotations |            Test if injected annotation does not cause replacement of resources when listed under ignored_annotations | ||||||
|         ''' |         ''' | ||||||
|         k8s = self.k8s |         k8s = self.k8s | ||||||
|         cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster' |  | ||||||
| 
 | 
 | ||||||
|         # get node of current master |         annotation_patch = { | ||||||
|         master_node, _ = k8s.get_pg_nodes(cluster_label) |  | ||||||
| 
 |  | ||||||
|         patch_config_ignored_annotations = { |  | ||||||
|             "data": { |  | ||||||
|                 "ignored_annotations": "deployment-time", |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         k8s.update_config(patch_config_ignored_annotations) |  | ||||||
| 
 |  | ||||||
|         pg_crd_annotation = { |  | ||||||
|             "metadata": { |             "metadata": { | ||||||
|                 "annotations": { |                 "annotations": { | ||||||
|                     "deployment-time": "2022-04-01 12:00:00" |                     "k8s-status": "healthy" | ||||||
|                 }, |                 }, | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         k8s.api.custom_objects_api.patch_namespaced_custom_object( |  | ||||||
|             "acid.zalan.do", "v1", "default", "postgresqls", "acid-minimal-cluster", pg_crd_annotation) |  | ||||||
| 
 | 
 | ||||||
|         annotations = { |         try: | ||||||
|             "deployment-time": "2022-04-01 12:00:00", |             sts = k8s.api.apps_v1.read_namespaced_stateful_set('acid-minimal-cluster', 'default') | ||||||
|         } |             old_sts_creation_timestamp = sts.metadata.creation_timestamp | ||||||
|         self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync") |             k8s.api.apps_v1.patch_namespaced_stateful_set(sts.metadata.name, sts.metadata.namespace, annotation_patch) | ||||||
|         self.eventuallyTrue(lambda: k8s.check_statefulset_annotations(cluster_label, annotations), "Annotations missing") |             svc = k8s.api.core_v1.read_namespaced_service('acid-minimal-cluster', 'default') | ||||||
|  |             old_svc_creation_timestamp = svc.metadata.creation_timestamp | ||||||
|  |             k8s.api.core_v1.patch_namespaced_service(svc.metadata.name, svc.metadata.namespace, annotation_patch) | ||||||
| 
 | 
 | ||||||
|         current_master_node, _ = k8s.get_pg_nodes(cluster_label) |             patch_config_ignored_annotations = { | ||||||
|         self.eventuallyEqual(lambda: master_node, current_master_node, "unexpected rolling update happened") |                 "data": { | ||||||
|  |                     "ignored_annotations": "k8s-status", | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             k8s.update_config(patch_config_ignored_annotations) | ||||||
|  |             self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync") | ||||||
|  | 
 | ||||||
|  |             sts = k8s.api.apps_v1.read_namespaced_stateful_set('acid-minimal-cluster', 'default') | ||||||
|  |             new_sts_creation_timestamp = sts.metadata.creation_timestamp | ||||||
|  |             svc = k8s.api.core_v1.read_namespaced_service('acid-minimal-cluster', 'default') | ||||||
|  |             new_svc_creation_timestamp = svc.metadata.creation_timestamp | ||||||
|  | 
 | ||||||
|  |             self.eventuallyEqual(old_sts_creation_timestamp, new_sts_creation_timestamp, "unexpected replacement of statefulset on sync") | ||||||
|  |             self.eventuallyEqual(old_svc_creation_timestamp, new_svc_creation_timestamp, "unexpected replacement of master service on sync") | ||||||
|  | 
 | ||||||
|  |         except timeout_decorator.TimeoutError: | ||||||
|  |             print('Operator log: {}'.format(k8s.get_operator_log())) | ||||||
|  |             raise | ||||||
| 
 | 
 | ||||||
|     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) |     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) | ||||||
|     def test_infrastructure_roles(self): |     def test_infrastructure_roles(self): | ||||||
|  |  | ||||||
|  | @ -60,8 +60,7 @@ configuration: | ||||||
|     enable_pod_disruption_budget: true |     enable_pod_disruption_budget: true | ||||||
|     enable_sidecars: true |     enable_sidecars: true | ||||||
|     # ignored_annotations: |     # ignored_annotations: | ||||||
|     # - "deployment-time" |     # - k8s.v1.cni.cncf.io/network-status | ||||||
|     # - "k8s.v1.cni.cncf.io/network-status" |  | ||||||
|     # infrastructure_roles_secret_name: "postgresql-infrastructure-roles" |     # infrastructure_roles_secret_name: "postgresql-infrastructure-roles" | ||||||
|     # infrastructure_roles_secrets: |     # infrastructure_roles_secrets: | ||||||
|     # - secretname: "monitoring-roles" |     # - secretname: "monitoring-roles" | ||||||
|  |  | ||||||
|  | @ -385,7 +385,7 @@ func (c *Cluster) compareStatefulSetWith(statefulSet *appsv1.StatefulSet) *compa | ||||||
| 	if changed, reason := c.compareAnnotations(c.Statefulset.Annotations, statefulSet.Annotations); changed { | 	if changed, reason := c.compareAnnotations(c.Statefulset.Annotations, statefulSet.Annotations); changed { | ||||||
| 		match = false | 		match = false | ||||||
| 		needsReplace = true | 		needsReplace = true | ||||||
| 		reasons = append(reasons, "new statefulset's annotations do not match "+reason) | 		reasons = append(reasons, "new statefulset's annotations do not match: "+reason) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	needsRollUpdate, reasons = c.compareContainers("initContainers", c.Statefulset.Spec.Template.Spec.InitContainers, statefulSet.Spec.Template.Spec.InitContainers, needsRollUpdate, reasons) | 	needsRollUpdate, reasons = c.compareContainers("initContainers", c.Statefulset.Spec.Template.Spec.InitContainers, statefulSet.Spec.Template.Spec.InitContainers, needsRollUpdate, reasons) | ||||||
|  | @ -734,7 +734,7 @@ func (c *Cluster) compareAnnotations(old, new map[string]string) (bool, string) | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		if _, ok := new[key]; !ok { | 		if _, ok := new[key]; !ok { | ||||||
| 			reason += fmt.Sprintf(" Removed '%s'.", key) | 			reason += fmt.Sprintf(" Removed %q.", key) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -744,9 +744,9 @@ func (c *Cluster) compareAnnotations(old, new map[string]string) (bool, string) | ||||||
| 		} | 		} | ||||||
| 		v, ok := old[key] | 		v, ok := old[key] | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			reason += fmt.Sprintf(" Added '%s' with value '%s'.", key, new[key]) | 			reason += fmt.Sprintf(" Added %q with value %q.", key, new[key]) | ||||||
| 		} else if v != new[key] { | 		} else if v != new[key] { | ||||||
| 			reason += fmt.Sprintf(" '%s' changed from '%s' to '%s'.", key, v, new[key]) | 			reason += fmt.Sprintf(" %q changed from %q to %q.", key, v, new[key]) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue