diff --git a/server/src/main/java/org/opensearch/extensions/ExtensionsManager.java b/server/src/main/java/org/opensearch/extensions/ExtensionsManager.java index 500d06b3ccc3d..8118760cd1bb2 100644 --- a/server/src/main/java/org/opensearch/extensions/ExtensionsManager.java +++ b/server/src/main/java/org/opensearch/extensions/ExtensionsManager.java @@ -565,6 +565,22 @@ private ExtensionsSettings readFromExtensionsYml(Path filePath) throws IOExcepti List> unreadExtensions = new ArrayList<>((Collection>) obj.get("extensions")); List readExtensions = new ArrayList(); for (HashMap extensionMap : unreadExtensions) { + // Parse extension dependencies + List extensionDependencyList = new ArrayList(); + if (extensionMap.get("dependencies") != null) { + List> extensionDependencies = new ArrayList<>( + (Collection>) extensionMap.get("dependencies") + ); + for (HashMap dependency : extensionDependencies) { + extensionDependencyList.add( + new ExtensionDependency( + dependency.get("uniqueId").toString(), + Version.fromString(dependency.get("version").toString()) + ) + ); + } + } + // Create extension read from yml config readExtensions.add( new Extension( extensionMap.get("name").toString(), @@ -573,7 +589,8 @@ private ExtensionsSettings readFromExtensionsYml(Path filePath) throws IOExcepti extensionMap.get("port").toString(), extensionMap.get("version").toString(), extensionMap.get("opensearchVersion").toString(), - extensionMap.get("minimumCompatibleVersion").toString() + extensionMap.get("minimumCompatibleVersion").toString(), + extensionDependencyList ) ); } diff --git a/server/src/main/java/org/opensearch/extensions/ExtensionsSettings.java b/server/src/main/java/org/opensearch/extensions/ExtensionsSettings.java index 51815a002d1df..fd11aec973d42 100644 --- a/server/src/main/java/org/opensearch/extensions/ExtensionsSettings.java +++ b/server/src/main/java/org/opensearch/extensions/ExtensionsSettings.java @@ -52,7 +52,8 @@ public Extension( String port, String version, String opensearchVersion, - String minimumCompatibleVersion + String minimumCompatibleVersion, + List dependencies ) { this.name = name; this.uniqueId = uniqueId; @@ -61,6 +62,7 @@ public Extension( this.version = version; this.opensearchVersion = opensearchVersion; this.minimumCompatibleVersion = minimumCompatibleVersion; + this.dependencies = dependencies; } public Extension() { diff --git a/server/src/test/java/org/opensearch/extensions/ExtensionsManagerTests.java b/server/src/test/java/org/opensearch/extensions/ExtensionsManagerTests.java index 44ca2175621e7..05ff119cbe082 100644 --- a/server/src/test/java/org/opensearch/extensions/ExtensionsManagerTests.java +++ b/server/src/test/java/org/opensearch/extensions/ExtensionsManagerTests.java @@ -124,7 +124,7 @@ public class ExtensionsManagerTests extends OpenSearchTestCase { " minimumCompatibleVersion: '2.0.0'", " dependencies:", " - uniqueId: 'uniqueid0'", - " - version: '2.0.0'" + " version: '2.0.0'" ); private DiscoveryExtensionNode extensionNode; @@ -236,8 +236,7 @@ public void testDiscover() throws Exception { assertEquals(extension.getAttributes(), initializedExtension.getAttributes()); assertEquals(extension.getVersion(), initializedExtension.getVersion()); assertEquals(extension.getMinimumCompatibleVersion(), initializedExtension.getMinimumCompatibleVersion()); - // TODO: Will fail due to bug : https://github.com/opensearch-project/OpenSearch/issues/6115 - // assertEquals(extension.getDependencies(), initializedExtension.getDependencies()); + assertEquals(extension.getDependencies(), initializedExtension.getDependencies()); } } @@ -272,10 +271,10 @@ public void testNonUniqueExtensionsDiscovery() throws Exception { assertEquals(extension.getAttributes(), initializedExtension.getAttributes()); assertEquals(extension.getVersion(), initializedExtension.getVersion()); assertEquals(extension.getMinimumCompatibleVersion(), initializedExtension.getMinimumCompatibleVersion()); + assertEquals(extension.getDependencies(), initializedExtension.getDependencies()); } assertTrue(expectedExtensions.containsAll(emptyList())); - // TODO: Will fail due to bug : https://github.com/opensearch-project/OpenSearch/issues/6115 - // assertEquals(extension.getDependencies(), initializedExtension.getDependencies()); + assertTrue(expectedExtensions.containsAll(emptyList())); } public void testDiscoveryExtension() throws Exception {