This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 8b074003effe61ea2357e3c643943380066fad8c
Author: Duncan Grant <[email protected]>
AuthorDate: Wed Jul 8 13:04:19 2020 +0100

    Change sensor polling
    
    Was previously creating feed per sensor but this was failing randomly
---
 .../container/entity/helm/HelmEntityImpl.java      | 35 ++++++++--------------
 .../container/entity/helm/HelmEntityLiveTest.java  |  8 ++---
 2 files changed, 16 insertions(+), 27 deletions(-)

diff --git 
a/locations/container/src/main/java/org/apache/brooklyn/container/entity/helm/HelmEntityImpl.java
 
b/locations/container/src/main/java/org/apache/brooklyn/container/entity/helm/HelmEntityImpl.java
index 70dda0f..0c2ccf1 100644
--- 
a/locations/container/src/main/java/org/apache/brooklyn/container/entity/helm/HelmEntityImpl.java
+++ 
b/locations/container/src/main/java/org/apache/brooklyn/container/entity/helm/HelmEntityImpl.java
@@ -21,7 +21,9 @@ package org.apache.brooklyn.container.entity.helm;
 import com.google.common.base.Functions;
 import com.google.common.collect.ImmutableList;
 import io.fabric8.kubernetes.api.model.apps.Deployment;
+import io.fabric8.kubernetes.api.model.apps.DoneableDeployment;
 import io.fabric8.kubernetes.client.*;
+import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.container.location.kubernetes.KubernetesLocation;
@@ -124,27 +126,6 @@ public class HelmEntityImpl extends AbstractEntity 
implements HelmEntity {
                 .period(Duration.TEN_SECONDS)
                 .build());
 
-        String config = getLocation().getConfig(KubernetesLocation.KUBECONFIG);
-        KubernetesClient client = getClient(config);
-        String helmNameInstallName = 
getConfig(HelmEntity.HELM_DEPLOYMENT_NAME);
-        List<Deployment> deployments = getDeployments(client, 
helmNameInstallName);
-
-        for (Deployment deployment : deployments) {
-            String sensorName = "helm.deployment." + 
deployment.getMetadata().getName() + ".replicas";
-            addFeed(FunctionFeed.builder()
-            .entity(this)
-            .poll(new FunctionPollConfig<String, 
Integer>(Sensors.newIntegerSensor(sensorName))
-                    
.callable(getKubeReplicasCallable(deployment.getMetadata().getName())))
-                    .period(Duration.TEN_SECONDS)
-                    .build());
-
-            addFeed(FunctionFeed.builder()
-                    .entity(this)
-                    .poll(new FunctionPollConfig<String, 
Integer>(Sensors.newIntegerSensor(sensorName))
-                            
.callable(getKubeReplicasAvailableCallable(deployment.getMetadata().getName())))
-                    .period(Duration.TEN_SECONDS)
-                    .build());
-        }
     }
 
     private void addHelmFeed(String command, AttributeSensor<String> sensor) {
@@ -249,6 +230,12 @@ public class HelmEntityImpl extends AbstractEntity 
implements HelmEntity {
             public List<String> call() throws Exception {
                 KubernetesClient client = getClient(config);
                 List<Deployment> deployments = getDeployments(client, 
helmNameInstallName);
+                for (Deployment deployment : deployments) {
+                    String sensorName = "helm.deployment." + 
deployment.getMetadata().getName() + ".replicas";
+                    sensors().set(Sensors.newIntegerSensor(sensorName), 
deployment.getStatus().getReplicas());
+                    
sensors().set(Sensors.newIntegerSensor(sensorName+".available"), 
deployment.getStatus().getAvailableReplicas());
+                }
+
                 return deployments.stream().map(deployment -> 
deployment.getMetadata().getName()).collect(Collectors.toList());
             }
         };
@@ -312,7 +299,8 @@ public class HelmEntityImpl extends AbstractEntity 
implements HelmEntity {
             @Override
             public Integer call() throws Exception {
                 KubernetesClient client = getClient(config);
-                return countReplicas(getDeployments(client, deploymentName));
+                Deployment deployment = 
client.apps().deployments().inNamespace(getNamespace()).withName(deploymentName).get();
+                return deployment.getStatus().getReplicas();
             }
         };
     }
@@ -324,7 +312,8 @@ public class HelmEntityImpl extends AbstractEntity 
implements HelmEntity {
             @Override
             public Integer call() throws Exception {
                 KubernetesClient client = getClient(config);
-                return countAvailableReplicas(getDeployments(client, 
deploymentName));
+                Deployment deployment = 
client.apps().deployments().inNamespace(getNamespace()).withName(deploymentName).get();
+                return deployment.getStatus().getAvailableReplicas();
             }
         };
     }
diff --git 
a/locations/container/src/test/java/org/apache/brooklyn/container/entity/helm/HelmEntityLiveTest.java
 
b/locations/container/src/test/java/org/apache/brooklyn/container/entity/helm/HelmEntityLiveTest.java
index d6d53fd..291f84d 100644
--- 
a/locations/container/src/test/java/org/apache/brooklyn/container/entity/helm/HelmEntityLiveTest.java
+++ 
b/locations/container/src/test/java/org/apache/brooklyn/container/entity/helm/HelmEntityLiveTest.java
@@ -130,13 +130,13 @@ public class HelmEntityLiveTest extends 
BrooklynAppLiveTestSupport {
 
         app.start(newKubernetesLocation());
 
-        assertAttributeEqualsEventually(andManageChild, 
HelmEntity.AVAILABLE_REPLICAS, 1);
-        assertAttributeEqualsEventually(andManageChild, HelmEntity.REPLICAS, 
1);
+        assertAttributeEqualsEventually(andManageChild, 
Sensors.newIntegerSensor("helm.deployment.prometheus-server.replicas"), 1);
+        assertAttributeEqualsEventually(andManageChild, 
Sensors.newIntegerSensor("helm.deployment.prometheus-server.replicas.available"),
 1);
 
         andManageChild.resize("prometheus-server", 2);
 
-        assertAttributeEqualsEventually(andManageChild, 
HelmEntity.AVAILABLE_REPLICAS, 2);
-        assertAttributeEqualsEventually(andManageChild, HelmEntity.REPLICAS, 
2);
+        assertAttributeEqualsEventually(andManageChild, 
Sensors.newIntegerSensor("helm.deployment.prometheus-server.replicas"), 2);
+        assertAttributeEqualsEventually(andManageChild, 
Sensors.newIntegerSensor("helm.deployment.prometheus-server.replicas.available"),
 2);
 
         assertAttributeEqualsEventually(andManageChild, 
HelmEntity.DEPLOYMENT_READY, true);
     }

Reply via email to