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
|
||||||
|
k8s.api.apps_v1.patch_namespaced_stateful_set(sts.metadata.name, sts.metadata.namespace, annotation_patch)
|
||||||
|
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)
|
||||||
|
|
||||||
|
patch_config_ignored_annotations = {
|
||||||
|
"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")
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
self.eventuallyTrue(lambda: k8s.check_statefulset_annotations(cluster_label, annotations), "Annotations missing")
|
|
||||||
|
|
||||||
current_master_node, _ = k8s.get_pg_nodes(cluster_label)
|
sts = k8s.api.apps_v1.read_namespaced_stateful_set('acid-minimal-cluster', 'default')
|
||||||
self.eventuallyEqual(lambda: master_node, current_master_node, "unexpected rolling update happened")
|
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