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); }
