You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2020/07/08 13:18:28 UTC
[brooklyn-server] 18/20: Change sensor polling
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 <du...@cloudsoft.io>
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);
}