Merge changes Id1d64ee9,Iaac568c3,Ic3d00b49

* changes:
  [Operator] Fix order of cleanup after tests
  [Operator] Explicitely name the event source in the discriminators
  [Operator] Fix LabelSelectors
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
index 1fb8e0e..07c04ff 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
@@ -59,13 +59,22 @@
   public Map<String, String> getLabels(String component, String createdBy) {
     Map<String, String> labels = new HashMap<>();
 
+    labels.putAll(getSelectorLabels(component));
+    labels.put("app.kubernetes.io/version", getClass().getPackage().getImplementationVersion());
+    labels.put("app.kubernetes.io/created-by", createdBy);
+
+    return labels;
+  }
+
+  @JsonIgnore
+  public Map<String, String> getSelectorLabels(String component) {
+    Map<String, String> labels = new HashMap<>();
+
     labels.put("app.kubernetes.io/name", "gerrit");
     labels.put("app.kubernetes.io/instance", getMetadata().getName());
-    labels.put("app.kubernetes.io/version", getClass().getPackage().getImplementationVersion());
     labels.put("app.kubernetes.io/component", component);
     labels.put("app.kubernetes.io/part-of", getMetadata().getName());
     labels.put("app.kubernetes.io/managed-by", "gerrit-operator");
-    labels.put("app.kubernetes.io/created-by", createdBy);
 
     return labels;
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritLogsPVCDiscriminator.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritLogsPVCDiscriminator.java
index 74158ab..da6c7df 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritLogsPVCDiscriminator.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritLogsPVCDiscriminator.java
@@ -14,6 +14,8 @@
 
 package com.google.gerrit.k8s.operator.cluster;
 
+import static com.google.gerrit.k8s.operator.cluster.GerritClusterReconciler.PVC_EVENT_SOURCE;
+
 import io.fabric8.kubernetes.api.model.PersistentVolumeClaim;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
 import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
@@ -30,7 +32,9 @@
       Context<GerritCluster> context) {
     InformerEventSource<PersistentVolumeClaim, GerritCluster> ies =
         (InformerEventSource<PersistentVolumeClaim, GerritCluster>)
-            context.eventSourceRetriever().getResourceEventSourceFor(PersistentVolumeClaim.class);
+            context
+                .eventSourceRetriever()
+                .getResourceEventSourceFor(PersistentVolumeClaim.class, PVC_EVENT_SOURCE);
 
     return ies.get(
         new ResourceID(GerritLogsPVC.LOGS_PVC_NAME, primary.getMetadata().getNamespace()));
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GitRepositoriesPVCDiscriminator.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GitRepositoriesPVCDiscriminator.java
index 7e6265a..2fe0078 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GitRepositoriesPVCDiscriminator.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GitRepositoriesPVCDiscriminator.java
@@ -14,6 +14,8 @@
 
 package com.google.gerrit.k8s.operator.cluster;
 
+import static com.google.gerrit.k8s.operator.cluster.GerritClusterReconciler.PVC_EVENT_SOURCE;
+
 import io.fabric8.kubernetes.api.model.PersistentVolumeClaim;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
 import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
@@ -30,7 +32,9 @@
       Context<GerritCluster> context) {
     InformerEventSource<PersistentVolumeClaim, GerritCluster> ies =
         (InformerEventSource<PersistentVolumeClaim, GerritCluster>)
-            context.eventSourceRetriever().getResourceEventSourceFor(PersistentVolumeClaim.class);
+            context
+                .eventSourceRetriever()
+                .getResourceEventSourceFor(PersistentVolumeClaim.class, PVC_EVENT_SOURCE);
 
     return ies.get(
         new ResourceID(
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/PluginCachePVCDiscriminator.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/PluginCachePVCDiscriminator.java
index 52feba7..ea58044 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/PluginCachePVCDiscriminator.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/PluginCachePVCDiscriminator.java
@@ -14,6 +14,8 @@
 
 package com.google.gerrit.k8s.operator.cluster;
 
+import static com.google.gerrit.k8s.operator.cluster.GerritClusterReconciler.PVC_EVENT_SOURCE;
+
 import io.fabric8.kubernetes.api.model.PersistentVolumeClaim;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
 import io.javaoperatorsdk.operator.api.reconciler.ResourceDiscriminator;
@@ -30,7 +32,9 @@
       Context<GerritCluster> context) {
     InformerEventSource<PersistentVolumeClaim, GerritCluster> ies =
         (InformerEventSource<PersistentVolumeClaim, GerritCluster>)
-            context.eventSourceRetriever().getResourceEventSourceFor(PersistentVolumeClaim.class);
+            context
+                .eventSourceRetriever()
+                .getResourceEventSourceFor(PersistentVolumeClaim.class, PVC_EVENT_SOURCE);
 
     return ies.get(
         new ResourceID(PluginCachePVC.PLUGIN_CACHE_PVC_NAME, primary.getMetadata().getNamespace()));
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
index 0b7660a..9611d00 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
@@ -59,7 +59,7 @@
         .withNewSpec()
         .withType(gerrit.getSpec().getService().getType())
         .withPorts(getServicePorts(gerrit))
-        .withSelector(StatefulSetDependentResource.getLabels(gerritCluster, gerrit))
+        .withSelector(StatefulSetDependentResource.getSelectorLabels(gerritCluster, gerrit))
         .endSpec()
         .build();
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
index 3aea878..f3cfd7b 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
@@ -85,7 +85,7 @@
         .endRollingUpdate()
         .endUpdateStrategy()
         .withNewSelector()
-        .withMatchLabels(getLabels(gerritCluster, gerrit))
+        .withMatchLabels(getSelectorLabels(gerritCluster, gerrit))
         .endSelector()
         .withNewTemplate()
         .withNewMetadata()
@@ -135,7 +135,7 @@
         .addNewVolumeClaimTemplate()
         .withNewMetadata()
         .withName(SITE_VOLUME_NAME)
-        .withLabels(getLabels(gerritCluster, gerrit))
+        .withLabels(getSelectorLabels(gerritCluster, gerrit))
         .endMetadata()
         .withNewSpec()
         .withAccessModes("ReadWriteOnce")
@@ -150,10 +150,17 @@
     return stsBuilder.build();
   }
 
-  public static Map<String, String> getLabels(GerritCluster gerritCluster, Gerrit gerrit) {
+  private static String getComponentName(Gerrit gerrit) {
+    return String.format("gerrit-statefulset-%s", gerrit.getMetadata().getName());
+  }
+
+  public static Map<String, String> getSelectorLabels(GerritCluster gerritCluster, Gerrit gerrit) {
+    return gerritCluster.getSelectorLabels(getComponentName(gerrit));
+  }
+
+  private static Map<String, String> getLabels(GerritCluster gerritCluster, Gerrit gerrit) {
     return gerritCluster.getLabels(
-        String.format("gerrit-statefulset-%s", gerrit.getMetadata().getName()),
-        GerritReconciler.class.getSimpleName());
+        getComponentName(gerrit), GerritReconciler.class.getSimpleName());
   }
 
   private Set<Volume> getVolumes(Gerrit gerrit, GerritCluster gerritCluster) {
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
index b50fc5a..3bf31a4 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
@@ -81,7 +81,7 @@
         .endRollingUpdate()
         .endStrategy()
         .withNewSelector()
-        .withMatchLabels(getLabels(gerritCluster, receiver))
+        .withMatchLabels(getSelectorLabels(gerritCluster, receiver))
         .endSelector()
         .withNewTemplate()
         .withNewMetadata()
@@ -117,10 +117,18 @@
     return deploymentBuilder.build();
   }
 
+  private static String getComponentName(Receiver receiver) {
+    return String.format("receiver-deployment-%s", receiver.getMetadata().getName());
+  }
+
+  public static Map<String, String> getSelectorLabels(
+      GerritCluster gerritCluster, Receiver receiver) {
+    return gerritCluster.getSelectorLabels(getComponentName(receiver));
+  }
+
   public static Map<String, String> getLabels(GerritCluster gerritCluster, Receiver receiver) {
     return gerritCluster.getLabels(
-        String.format("receiver-deployment-%s", receiver.getMetadata().getName()),
-        ReceiverReconciler.class.getSimpleName());
+        getComponentName(receiver), ReceiverReconciler.class.getSimpleName());
   }
 
   private Set<Volume> getVolumes(Receiver receiver, GerritCluster gerritCluster) {
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
index 1bce580..cd11d29 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
@@ -59,7 +59,8 @@
         .withNewSpec()
         .withType(receiver.getSpec().getService().getType())
         .withPorts(getServicePorts(receiver))
-        .withSelector(ReceiverDeploymentDependentResource.getLabels(gerritCluster, receiver))
+        .withSelector(
+            ReceiverDeploymentDependentResource.getSelectorLabels(gerritCluster, receiver))
         .endSpec()
         .build();
   }
diff --git a/operator/src/test/java/com/google/gerrit/k8s/operator/test/AbstractGerritOperatorE2ETest.java b/operator/src/test/java/com/google/gerrit/k8s/operator/test/AbstractGerritOperatorE2ETest.java
index 6ed616c..bfa1878 100644
--- a/operator/src/test/java/com/google/gerrit/k8s/operator/test/AbstractGerritOperatorE2ETest.java
+++ b/operator/src/test/java/com/google/gerrit/k8s/operator/test/AbstractGerritOperatorE2ETest.java
@@ -70,8 +70,8 @@
   void cleanup() {
     client.resources(Gerrit.class).inNamespace(operator.getNamespace()).delete();
     client.resources(Receiver.class).inNamespace(operator.getNamespace()).delete();
-    client.resources(GerritCluster.class).inNamespace(operator.getNamespace()).delete();
     client.resources(GitGarbageCollection.class).inNamespace(operator.getNamespace()).delete();
+    client.resources(GerritCluster.class).inNamespace(operator.getNamespace()).delete();
   }
 
   private static KubernetesClient getKubernetesClient() {