Allow optional OSS to X-Pack dependencies#107432
Conversation
This is no longer necessary now that we validate OSS to X-Pack plugin dependencies in the plugins service. Since there is no way to differentiate "optional" and "required" dependencies in ESLint rules, this rule needs to be removed to allow such optional dependencies.
| const requiredPlugin = pluginEnableStatuses.get(id); | ||
| if (requiredPlugin && XPACK_PATH_REGEX.test(requiredPlugin.plugin.path)) { | ||
| throw new Error( | ||
| `X-Pack plugin or bundle with id "${id}" is required by OSS plugin "${pluginName}", which is prohibited.` |
There was a problem hiding this comment.
Should we extend the error message to suggest making it optional?
| const OSS_PATH_REGEX = /[\/|\\]src[\/|\\]plugins[\/|\\]/; // Matches src/plugins directory on POSIX and Windows | ||
| const XPACK_PATH_REGEX = /[\/|\\]x-pack[\/|\\]plugins[\/|\\]/; // Matches x-pack/plugins directory on POSIX and Windows | ||
|
|
There was a problem hiding this comment.
I was thinking it'd be nice if we added a source property to the PluginWrapper class inside src/core/server/plugins/plugin.ts and populated it in the constructor. Then we could use this information in other places as well rather than only inside the service.
I'm fairly confident that it would be a small change to this PR, WDYT?
There was a problem hiding this comment.
Just to clarify: the PluginWrapper class already has a path field.
Do you envision the source field as a string literal such as 'x-pack' | 'oss'?
Edit: done in daebba1.
* Improve error message * Add source field to PluginWrapper
joshdover
left a comment
There was a problem hiding this comment.
LGTM, thanks for making those changes
| } | ||
|
|
||
| // validate that OSS plugins do not have required dependencies on X-Pack plugins | ||
| if (plugin.source === 'oss') { |
There was a problem hiding this comment.
optional: the validation path is growing too large. @elastic/kibana-core we need to move it under a dedicated method to simplify reading.
| await expectError(); | ||
| }); | ||
|
|
||
| it('throws if an OSS plugin requires an X-Pack bundle', async () => { |
There was a problem hiding this comment.
should we add an explicit test when an external plugin depends on oss and x-pack?
There was a problem hiding this comment.
I'll merge this now, if you have any additional concerns about tests I'd be happy to address them in a follow up PR!
afharo
left a comment
There was a problem hiding this comment.
LGTM! Thanks for making those changes
💚 Build SucceededMetrics [docs]
History
To update your PR or re-run it, just comment with: |
💚 Backport successful
This backport PR will be merged automatically after passing CI. |
…-png-pdf-report-type * 'master' of github.com:elastic/kibana: (392 commits) update linting doc (elastic#105748) [APM] Various improvements from elastic#104851 (elastic#107726) Update dependency @elastic/charts to v33.2.0 (master) (elastic#107842) Fix default route link on kibana homepage (elastic#107809) [APM] Invalidate trackPageview on route change (elastic#107741) Service map backend links (elastic#107317) [index patterns] index pattern create modal (elastic#101853) [RAC] integrating rbac search strategy with alert table (elastic#107242) [Security Solution] Siem signals -> alerts as data field and index aliases (elastic#106049) [Metrics UI] Add checkbox to optionally drop partial buckets (elastic#107676) [Metrics UI] Fix metric threshold preview regression (elastic#107674) Disable Product check in @elastic/elasticsearch-js (elastic#107642) [App Search] Migrate Crawler Status Indicator, Crawler Status Banner, and Crawl Request polling (elastic#107603) [Security Solution, Lists] Replace legacy imports from 'elasticsearch' package (elastic#107226) [maps] asset tracking tutorial (elastic#104552) [scripts/build_ts_refs] when using `--clean` initialize caches (elastic#107777) Upgrade EUI to v36.1.0 (elastic#107231) [RAC] [TGrid] Implements cell actions in the TGrid (elastic#107771) Realign cypress/ccs_integration with cypress/integration (elastic#107743) Allow optional OSS to X-Pack dependencies (elastic#107432) ... # Conflicts: # x-pack/examples/reporting_example/public/application.tsx # x-pack/examples/reporting_example/public/components/app.tsx # x-pack/plugins/canvas/public/services/legacy/stubs/reporting.ts # x-pack/plugins/reporting/common/types.ts # x-pack/plugins/reporting/public/lib/reporting_api_client/context.tsx # x-pack/plugins/reporting/public/management/mount_management_section.tsx # x-pack/plugins/reporting/public/management/report_listing.test.tsx # x-pack/plugins/reporting/public/plugin.ts # x-pack/plugins/reporting/public/share_context_menu/register_pdf_png_reporting.tsx # x-pack/plugins/reporting/server/export_types/printable_pdf/execute_job/index.ts
Resolves #106485.