From 1ae4284219facf4b0af495dcfd08fbd992423716 Mon Sep 17 00:00:00 2001 From: Frank Lou Date: Tue, 6 Dec 2022 00:03:59 +0000 Subject: [PATCH] add option field Signed-off-by: Frank Lou --- .../opensearch/extensions/DiscoveryExtension.java | 15 +++++++++++---- ...nDenpendency.java => ExtensionDependency.java} | 15 ++++++--------- .../extensions/ExtensionsOrchestrator.java | 5 ++++- 3 files changed, 21 insertions(+), 14 deletions(-) rename server/src/main/java/org/opensearch/extensions/{ExtensionDenpendency.java => ExtensionDependency.java} (76%) diff --git a/server/src/main/java/org/opensearch/extensions/DiscoveryExtension.java b/server/src/main/java/org/opensearch/extensions/DiscoveryExtension.java index daf3166fa0f8b..72c3537cba11e 100644 --- a/server/src/main/java/org/opensearch/extensions/DiscoveryExtension.java +++ b/server/src/main/java/org/opensearch/extensions/DiscoveryExtension.java @@ -32,7 +32,7 @@ public class DiscoveryExtension extends DiscoveryNode implements Writeable, ToXContentFragment { private final PluginInfo pluginInfo; - private List dependencies; + private List dependencies; public DiscoveryExtension( String name, @@ -44,7 +44,7 @@ public DiscoveryExtension( Map attributes, Version version, PluginInfo pluginInfo, - List dependencies + List dependencies ) { super(name, id, ephemeralId, hostName, hostAddress, address, attributes, DiscoveryNodeRole.BUILT_IN_ROLES, version); this.pluginInfo = pluginInfo; @@ -55,7 +55,10 @@ public DiscoveryExtension( public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); pluginInfo.writeTo(out); - ((DiscoveryNode) dependencies).writeTo(out); + out.writeVInt(dependencies.size()); + for(ExtensionDependency result : dependencies){ + result.writeTo(out); + } } /** @@ -67,7 +70,11 @@ public void writeTo(StreamOutput out) throws IOException { public DiscoveryExtension(final StreamInput in) throws IOException { super(in); this.pluginInfo = new PluginInfo(in); - this.dependencies = new ArrayList(); + int size = in.readVInt(); + dependencies = new ArrayList<>(size); + for(int i = 0; i < size; i++){ + dependencies.add(new ExtensionDependency(in)); + } } @Override diff --git a/server/src/main/java/org/opensearch/extensions/ExtensionDenpendency.java b/server/src/main/java/org/opensearch/extensions/ExtensionDependency.java similarity index 76% rename from server/src/main/java/org/opensearch/extensions/ExtensionDenpendency.java rename to server/src/main/java/org/opensearch/extensions/ExtensionDependency.java index 35ef2e91e3782..2877b18a87381 100644 --- a/server/src/main/java/org/opensearch/extensions/ExtensionDenpendency.java +++ b/server/src/main/java/org/opensearch/extensions/ExtensionDependency.java @@ -1,8 +1,6 @@ package org.opensearch.extensions; import java.io.IOException; -import java.util.Collections; -import java.util.List; import java.util.Objects; import org.opensearch.Version; @@ -11,31 +9,30 @@ import org.opensearch.common.io.stream.Writeable; public class ExtensionDenpendency implements Writeable { - public String uniqueId; - public Version version; + private String uniqueId; + private String version; - public ExtensionDenpendency(String uniqueId, Version version){ + public ExtensionDenpendency(String uniqueId, String version){ this.uniqueId = uniqueId; this.version = version; - List dependencies = Collections.emptyList(); } public ExtensionDenpendency(StreamInput in) throws IOException { uniqueId = in.readString(); - version = Version.readVersion(in); + version = in.readString(); } @Override public void writeTo(StreamOutput out) throws IOException { out.writeString(uniqueId); - Version.writeVersion(version, out); + Version.fromString(getVersion()); } public String getUniqueId(){ return uniqueId; } - public Version getVersion(){ + public String getVersion(){ return version; } diff --git a/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java b/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java index ec4a6a2478f0f..4b852de70b6c2 100644 --- a/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java +++ b/server/src/main/java/org/opensearch/extensions/ExtensionsOrchestrator.java @@ -15,6 +15,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -314,6 +315,8 @@ private void extensionsDiscovery() throws IOException { logger.info("Duplicate uniqueId " + extension.getUniqueId() + ". Did not load extension: " + extension); } else { try { + List dependenices = Collections.emptyList(); + dependenices.add(new ExtensionDependency(extension.getUniqueId(), extension.getVersion())); DiscoveryExtension discoveryExtension = new DiscoveryExtension( extension.getName(), extension.getUniqueId(), @@ -334,7 +337,7 @@ private void extensionsDiscovery() throws IOException { new ArrayList(), Boolean.parseBoolean(extension.hasNativeController()) ), - new ArrayList() + dependenices ); extensionIdMap.put(extension.getUniqueId(), discoveryExtension); logger.info("Loaded extension with uniqueId " + extension.getUniqueId() + ": " + extension);