aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java
new file mode 100644
index 0000000..b46ffce
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/cache/ServiceHealthCache.java
@@ -0,0 +1,65 @@
+package org.onap.msb.apiroute.wrapper.consulextend.cache;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.onap.msb.apiroute.wrapper.consulextend.HealthClient;
+import org.onap.msb.apiroute.wrapper.consulextend.async.ConsulResponseCallback;
+import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
+
+import com.orbitz.consul.option.CatalogOptions;
+import com.orbitz.consul.option.QueryOptions;
+
+public class ServiceHealthCache extends ConsulCache<List<ServiceHealth>> {
+ private ServiceHealthCache(CallbackConsumer<List<ServiceHealth>> callbackConsumer) {
+ super(callbackConsumer);
+ }
+
+ /**
+ * Factory method to construct a string/{@link ServiceHealth} map for a particular service.
+ * <p/>
+ * Keys will be a {@link HostAndPort} object made up of the service's address/port combo
+ *
+ * @param healthClient the {@link HealthClient}
+ * @param serviceName the name of the service
+ * @param passing include only passing services?
+ * @return a cache object
+ */
+ public static ServiceHealthCache newCache(
+ final HealthClient healthClient,
+ final String serviceName,
+ final boolean passing,
+ final CatalogOptions catalogOptions,
+ final int watchSeconds,
+ final QueryOptions queryOptions) {
+
+ CallbackConsumer<List<ServiceHealth>> callbackConsumer = new CallbackConsumer<List<ServiceHealth>>() {
+ @Override
+ public void consume(BigInteger index,
+ ConsulResponseCallback<List<ServiceHealth>> callback) {
+ // TODO Auto-generated method stub
+ QueryOptions params = watchParams(index, watchSeconds, queryOptions);
+ if (passing) {
+ healthClient.getHealthyServiceInstances(serviceName, catalogOptions, params, callback);
+ } else {
+ healthClient.getAllServiceInstances(serviceName, catalogOptions, params, callback);
+ }
+ }
+ };
+
+ return new ServiceHealthCache(callbackConsumer);
+ }
+
+ public static ServiceHealthCache newCache(
+ final HealthClient healthClient,
+ final String serviceName,
+ final boolean passing,
+ final CatalogOptions catalogOptions,
+ final int watchSeconds) {
+ return newCache(healthClient, serviceName, passing, catalogOptions, watchSeconds, QueryOptions.BLANK);
+ }
+
+ public static ServiceHealthCache newCache(final HealthClient healthClient, final String serviceName) {
+ return newCache(healthClient, serviceName, true, CatalogOptions.BLANK, 10);
+ }
+}