documentation-website icon indicating copy to clipboard operation
documentation-website copied to clipboard

[DOC] Add more information about extended plugins on the plugin installation page

Open cwperks opened this issue 1 year ago • 1 comments

What do you want to do?

In OpenSearch, its possible that some plugins can extend functionality of other plugins. When a plugin has a required dependency on another plugin, the dependency needs to be installed first before the extending plugin can be installed. Currently, the documentation on installing plugins has no mention of extended plugins.

For instance, when I try to install opensearch-index-management on a node where opensearch-job-scheduler is not present, the opensearch-plugin script exits with an error.

% ./bin/opensearch-plugin install file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip

-> Installing file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip
-> Downloading file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip
[=================================================] 100%
-> Failed installing file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip
-> Rolling back file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip
-> Rolled back file:/path/to/opensearch-index-management-3.0.0.0-SNAPSHOT.zip
Exception in thread "main" java.lang.IllegalArgumentException: Missing plugin [opensearch-job-scheduler], dependency of [opensearch-index-management]
at org.opensearch.plugins.PluginsService.addSortedBundle(PluginsService.java:532)
	at org.opensearch.plugins.PluginsService.sortBundles(PluginsService.java:495)
	at org.opensearch.plugins.InstallPluginCommand.jarHellCheck(InstallPluginCommand.java:833)
	at org.opensearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:807)
	at org.opensearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:852)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:274)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:248)
	at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.MultiCommand.execute(MultiCommand.java:104)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.Command.main(Command.java:101)
	at org.opensearch.plugins.PluginCli.main(PluginCli.java:66)

The documentation on installing plugins should include information about plugin dependencies.

  • [X] Request a change to existing documentation
  • [ ] Add new documentation
  • [ ] Report a technical problem with the documentation
  • [ ] Other

Version: List the OpenSearch version to which this issue applies, e.g. 2.14, 2.12--2.14, or all.

All

What other resources are available? Provide links to related issues, POCs, steps for testing, etc.

Came up for discussion on https://github.com/opensearch-project/OpenSearch/pull/16909

cwperks avatar Jan 03 '25 21:01 cwperks

Catch All Triage - 1, 2, 3

krisfreedain avatar Jan 27 '25 17:01 krisfreedain

@cwperks Does this still require attention?

natebower avatar Jul 14 '25 19:07 natebower

yes, this would still be nice to have. The current page on the docs website does not mention anything about dependencies between plugins.

cwperks avatar Jul 15 '25 15:07 cwperks

@cwperks Could you list all the plugins and their dependencies so I can add that info to the docs? Or, if it's easier, put up a PR? 😄

kolchfa-aws avatar Jul 24 '25 13:07 kolchfa-aws

Hi @kolchfa-aws you can use these as references: https://github.com/opensearch-project/opensearch-build/blob/main/manifests/3.1.0/opensearch-3.1.0.yml https://github.com/opensearch-project/opensearch-build/blob/main/manifests/3.1.0/opensearch-dashboards-3.1.0.yml

The build repo use two ways to define the building order (which was sorted out based on dependency tree):

  1. In above input manifest, the order of component being listed.
  2. Based on above order, if a component has depends_on: key, then it must be compiled/installed after the listed dependencies

With above in mind the final order of the compilation you can find in build manifest: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/3.1.0/11187/linux/x64/tar/builds/opensearch/manifest.yml https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/3.1.0/8487/linux/x64/tar/builds/opensearch-dashboards/manifest.yml

Thanks.

peterzhuamazon avatar Jul 30 '25 19:07 peterzhuamazon