mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 02:48:39 +02:00
Prevent original labels from update
This commit is contained in:
+24
-12
@@ -75,7 +75,7 @@ class EndToEndTestCase(unittest.TestCase):
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
cluster_label = 'cluster-name=acid-minimal-cluster'
|
cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster'
|
||||||
|
|
||||||
# enable load balancer services
|
# enable load balancer services
|
||||||
pg_patch_enable_lbs = {
|
pg_patch_enable_lbs = {
|
||||||
@@ -123,7 +123,7 @@ class EndToEndTestCase(unittest.TestCase):
|
|||||||
Lower resource limits below configured minimum and let operator fix it
|
Lower resource limits below configured minimum and let operator fix it
|
||||||
'''
|
'''
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
cluster_label = 'cluster-name=acid-minimal-cluster'
|
cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster'
|
||||||
_, failover_targets = k8s.get_pg_nodes(cluster_label)
|
_, failover_targets = k8s.get_pg_nodes(cluster_label)
|
||||||
|
|
||||||
# configure minimum boundaries for CPU and memory limits
|
# configure minimum boundaries for CPU and memory limits
|
||||||
@@ -190,15 +190,26 @@ class EndToEndTestCase(unittest.TestCase):
|
|||||||
Scale up from 2 to 3 and back to 2 pods by updating the Postgres manifest at runtime.
|
Scale up from 2 to 3 and back to 2 pods by updating the Postgres manifest at runtime.
|
||||||
'''
|
'''
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
labels = "cluster-name=acid-minimal-cluster"
|
labels = "application=spilo,cluster-name=acid-minimal-cluster"
|
||||||
|
|
||||||
k8s.wait_for_pg_to_scale(3)
|
try:
|
||||||
self.assertEqual(3, k8s.count_pods_with_label(labels))
|
k8s.wait_for_pg_to_scale(3)
|
||||||
self.assert_master_is_unique()
|
self.assertEqual(3, k8s.count_pods_with_label(labels))
|
||||||
|
self.assert_master_is_unique()
|
||||||
|
|
||||||
k8s.wait_for_pg_to_scale(2)
|
k8s.wait_for_pg_to_scale(2)
|
||||||
self.assertEqual(2, k8s.count_pods_with_label(labels))
|
self.assertEqual(2, k8s.count_pods_with_label(labels))
|
||||||
self.assert_master_is_unique()
|
self.assert_master_is_unique()
|
||||||
|
except timeout_decorator.TimeoutError:
|
||||||
|
print('Operator log: {}'.format(k8s.get_operator_log()))
|
||||||
|
pods = k8s.api.core_v1.list_namespaced_pod('default').items
|
||||||
|
for p in pods:
|
||||||
|
response = k8s.api.core_v1.read_namespaced_pod(
|
||||||
|
name=p.metadata.name,
|
||||||
|
namespace='default'
|
||||||
|
)
|
||||||
|
print('Pod: {}'.format(response))
|
||||||
|
raise
|
||||||
|
|
||||||
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
||||||
def test_taint_based_eviction(self):
|
def test_taint_based_eviction(self):
|
||||||
@@ -206,7 +217,7 @@ class EndToEndTestCase(unittest.TestCase):
|
|||||||
Add taint "postgres=:NoExecute" to node with master. This must cause a failover.
|
Add taint "postgres=:NoExecute" to node with master. This must cause a failover.
|
||||||
'''
|
'''
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
cluster_label = 'cluster-name=acid-minimal-cluster'
|
cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster'
|
||||||
|
|
||||||
# get nodes of master and replica(s) (expected target of new master)
|
# get nodes of master and replica(s) (expected target of new master)
|
||||||
current_master_node, failover_targets = k8s.get_pg_nodes(cluster_label)
|
current_master_node, failover_targets = k8s.get_pg_nodes(cluster_label)
|
||||||
@@ -361,7 +372,8 @@ class EndToEndTestCase(unittest.TestCase):
|
|||||||
'''
|
'''
|
||||||
For a database without connection pool, then turns it on, scale up,
|
For a database without connection pool, then turns it on, scale up,
|
||||||
turn off and on again. Test with different ways of doing this (via
|
turn off and on again. Test with different ways of doing this (via
|
||||||
enableConnectionPool or connectionPool configuration section).
|
enableConnectionPool or connectionPool configuration section). At the
|
||||||
|
end turn the connection pool off to not interfere with other tests.
|
||||||
'''
|
'''
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
service_labels = {
|
service_labels = {
|
||||||
@@ -560,7 +572,7 @@ class K8s:
|
|||||||
_ = self.api.custom_objects_api.patch_namespaced_custom_object(
|
_ = self.api.custom_objects_api.patch_namespaced_custom_object(
|
||||||
"acid.zalan.do", "v1", namespace, "postgresqls", "acid-minimal-cluster", body)
|
"acid.zalan.do", "v1", namespace, "postgresqls", "acid-minimal-cluster", body)
|
||||||
|
|
||||||
labels = 'cluster-name=acid-minimal-cluster'
|
labels = 'application=spilo,cluster-name=acid-minimal-cluster'
|
||||||
while self.count_pods_with_label(labels) != number_of_instances:
|
while self.count_pods_with_label(labels) != number_of_instances:
|
||||||
time.sleep(self.RETRY_TIMEOUT_SEC)
|
time.sleep(self.RETRY_TIMEOUT_SEC)
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -420,18 +420,18 @@ func (c *Cluster) labelsSelector() *metav1.LabelSelector {
|
|||||||
// not interfere with it (it lists all the pods via labels, and if there would
|
// not interfere with it (it lists all the pods via labels, and if there would
|
||||||
// be no difference, it will recreate also pooler pods).
|
// be no difference, it will recreate also pooler pods).
|
||||||
func (c *Cluster) connPoolLabelsSelector() *metav1.LabelSelector {
|
func (c *Cluster) connPoolLabelsSelector() *metav1.LabelSelector {
|
||||||
labels := c.labelsSet(false)
|
connPoolLabels := labels.Set(map[string]string{})
|
||||||
connPoolLabels := map[string]string{
|
|
||||||
|
extraLabels := labels.Set(map[string]string{
|
||||||
"connection-pool": c.connPoolName(),
|
"connection-pool": c.connPoolName(),
|
||||||
"application": "connection-pool",
|
"application": "connection-pool",
|
||||||
}
|
})
|
||||||
|
|
||||||
for k, v := range connPoolLabels {
|
connPoolLabels = labels.Merge(connPoolLabels, c.labelsSet(false))
|
||||||
labels[k] = v
|
connPoolLabels = labels.Merge(connPoolLabels, extraLabels)
|
||||||
}
|
|
||||||
|
|
||||||
return &metav1.LabelSelector{
|
return &metav1.LabelSelector{
|
||||||
MatchLabels: labels,
|
MatchLabels: connPoolLabels,
|
||||||
MatchExpressions: nil,
|
MatchExpressions: nil,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user