Modify to add extra labels only during resource creation

This commit is contained in:
Sergey Dudoladov 2018-02-26 11:11:50 +01:00
parent 00dc810544
commit 071547e5bf
4 changed files with 19 additions and 12 deletions

View File

@ -491,7 +491,7 @@ func (c *Cluster) generatePodTemplate(
template := v1.PodTemplateSpec{ template := v1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Labels: c.labelsSet(), Labels: c.labelsSet(true),
Namespace: c.Namespace, Namespace: c.Namespace,
}, },
Spec: podSpec, Spec: podSpec,
@ -559,7 +559,7 @@ func (c *Cluster) generateStatefulSet(spec *spec.PostgresSpec) (*v1beta1.Statefu
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: c.statefulSetName(), Name: c.statefulSetName(),
Namespace: c.Namespace, Namespace: c.Namespace,
Labels: c.labelsSet(), Labels: c.labelsSet(true),
}, },
Spec: v1beta1.StatefulSetSpec{ Spec: v1beta1.StatefulSetSpec{
Replicas: &numberOfInstances, Replicas: &numberOfInstances,
@ -653,7 +653,7 @@ func (c *Cluster) generateSingleUserSecret(namespace string, pgUser spec.PgUser)
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: c.credentialSecretName(username), Name: c.credentialSecretName(username),
Namespace: namespace, Namespace: namespace,
Labels: c.labelsSet(), Labels: c.labelsSet(true),
}, },
Type: v1.SecretTypeOpaque, Type: v1.SecretTypeOpaque,
Data: map[string][]byte{ Data: map[string][]byte{
@ -780,7 +780,7 @@ func (c *Cluster) generatePodDisruptionBudget() *policybeta1.PodDisruptionBudget
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: c.podDisruptionBudgetName(), Name: c.podDisruptionBudgetName(),
Namespace: c.Namespace, Namespace: c.Namespace,
Labels: c.labelsSet(), Labels: c.labelsSet(true),
}, },
Spec: policybeta1.PodDisruptionBudgetSpec{ Spec: policybeta1.PodDisruptionBudgetSpec{
MinAvailable: &minAvailable, MinAvailable: &minAvailable,

View File

@ -13,7 +13,7 @@ import (
func (c *Cluster) listPods() ([]v1.Pod, error) { func (c *Cluster) listPods() ([]v1.Pod, error) {
listOptions := metav1.ListOptions{ listOptions := metav1.ListOptions{
LabelSelector: c.labelsSet().String(), LabelSelector: c.labelsSet(false).String(),
} }
pods, err := c.KubeClient.Pods(c.Namespace).List(listOptions) pods, err := c.KubeClient.Pods(c.Namespace).List(listOptions)
@ -268,7 +268,7 @@ func (c *Cluster) recreatePod(podName spec.NamespacedName) (*v1.Pod, error) {
func (c *Cluster) recreatePods() error { func (c *Cluster) recreatePods() error {
c.setProcessName("recreating pods") c.setProcessName("recreating pods")
ls := c.labelsSet() ls := c.labelsSet(false)
namespace := c.Namespace namespace := c.Namespace
listOptions := metav1.ListOptions{ listOptions := metav1.ListOptions{

View File

@ -261,7 +261,7 @@ func (c *Cluster) waitStatefulsetReady() error {
return retryutil.Retry(c.OpConfig.ResourceCheckInterval, c.OpConfig.ResourceCheckTimeout, return retryutil.Retry(c.OpConfig.ResourceCheckInterval, c.OpConfig.ResourceCheckTimeout,
func() (bool, error) { func() (bool, error) {
listOptions := metav1.ListOptions{ listOptions := metav1.ListOptions{
LabelSelector: c.labelsSet().String(), LabelSelector: c.labelsSet(false).String(),
} }
ss, err := c.KubeClient.StatefulSets(c.Namespace).List(listOptions) ss, err := c.KubeClient.StatefulSets(c.Namespace).List(listOptions)
if err != nil { if err != nil {
@ -277,7 +277,7 @@ func (c *Cluster) waitStatefulsetReady() error {
} }
func (c *Cluster) waitPodLabelsReady() error { func (c *Cluster) waitPodLabelsReady() error {
ls := c.labelsSet() ls := c.labelsSet(false)
namespace := c.Namespace namespace := c.Namespace
listOptions := metav1.ListOptions{ listOptions := metav1.ListOptions{
@ -337,19 +337,26 @@ func (c *Cluster) waitStatefulsetPodsReady() error {
return nil return nil
} }
func (c *Cluster) labelsSet() labels.Set { // Returns labels used to create or list k8s objects such as pods
// For backward compatability, shouldAddExtraLabels must be false
// when listing k8s objects. See operator PR #252
func (c *Cluster) labelsSet(shouldAddExtraLabels bool) labels.Set {
lbls := make(map[string]string) lbls := make(map[string]string)
for k, v := range c.OpConfig.ClusterLabels { for k, v := range c.OpConfig.ClusterLabels {
lbls[k] = v lbls[k] = v
} }
lbls[c.OpConfig.ClusterNameLabel] = c.Name lbls[c.OpConfig.ClusterNameLabel] = c.Name
if shouldAddExtraLabels {
// enables filtering resources owned by a team
lbls["team"] = c.Postgresql.Spec.TeamID lbls["team"] = c.Postgresql.Spec.TeamID
}
return labels.Set(lbls) return labels.Set(lbls)
} }
func (c *Cluster) roleLabelsSet(role PostgresRole) labels.Set { func (c *Cluster) roleLabelsSet(role PostgresRole) labels.Set {
lbls := c.labelsSet() lbls := c.labelsSet(false)
lbls[c.OpConfig.PodRoleLabel] = string(role) lbls[c.OpConfig.PodRoleLabel] = string(role)
return lbls return lbls
} }

View File

@ -19,7 +19,7 @@ import (
func (c *Cluster) listPersistentVolumeClaims() ([]v1.PersistentVolumeClaim, error) { func (c *Cluster) listPersistentVolumeClaims() ([]v1.PersistentVolumeClaim, error) {
ns := c.Namespace ns := c.Namespace
listOptions := metav1.ListOptions{ listOptions := metav1.ListOptions{
LabelSelector: c.labelsSet().String(), LabelSelector: c.labelsSet(false).String(),
} }
pvcs, err := c.KubeClient.PersistentVolumeClaims(ns).List(listOptions) pvcs, err := c.KubeClient.PersistentVolumeClaims(ns).List(listOptions)