From 2ce1dcdc8367e94d9c514cc69b65bd955c1b3188 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Sun, 31 Jul 2022 15:32:44 -0700 Subject: [PATCH] Get Extension API during initialization Signed-off-by: Daniel Widdis --- .../opensearch/discovery/PluginResponse.java | 20 +++++++++---- .../extensions/ExtensionsOrchestrator.java | 28 ++++++++++--------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/server/src/main/java/org/opensearch/discovery/PluginResponse.java b/server/src/main/java/org/opensearch/discovery/PluginResponse.java index f8f20214e5846..f787200f95df6 100644 --- a/server/src/main/java/org/opensearch/discovery/PluginResponse.java +++ b/server/src/main/java/org/opensearch/discovery/PluginResponse.java @@ -37,6 +37,8 @@ import org.opensearch.transport.TransportResponse; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -46,31 +48,38 @@ */ public class PluginResponse extends TransportResponse { private String name; + private List api; - public PluginResponse(String name) { + public PluginResponse(String name, List api) { this.name = name; + this.api = new ArrayList<>(api); } public PluginResponse(StreamInput in) throws IOException { name = in.readString(); + api = in.readStringList(); } @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(name); + out.writeStringCollection(api); } /** * @return the node that is currently leading, according to the responding node. */ - public String getName() { return this.name; } + public List getApi() { + return new ArrayList<>(api); + } + @Override public String toString() { - return "PluginResponse{" + "name" + name + "}"; + return "PluginResponse {" + "name=" + name + ", api=" + api + "}"; } @Override @@ -78,11 +87,12 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; PluginResponse that = (PluginResponse) o; - return Objects.equals(name, that.name); + return Objects.equals(name, that.name) && Objects.equals(api, that.api); } @Override public int hashCode() { - return Objects.hash(name); + return Objects.hash(api, name); } + } diff --git a/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java b/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java index 6b9896c08f5ff..52d4e94f1d35a 100644 --- a/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java +++ b/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java @@ -8,17 +8,8 @@ package org.opensearch.extensions; -import java.io.IOException; -import java.io.InputStream; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -52,8 +43,17 @@ import org.opensearch.transport.TransportResponseHandler; import org.opensearch.transport.TransportService; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * The main class for Plugin Extensibility @@ -220,6 +220,8 @@ public void handleResponse(PluginResponse response) { for (DiscoveryExtension extension : extensionsList) { if (extension.getName().equals(response.getName())) { extensionsInitializedList.add(extension); + // Temporary for debug + logger.info("Received API from " + response.getName() + ": " + response.getApi()); break; } }