You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In #100067, we need to ensure that all rule and connector saved objects are shareable. Part of this effort involves needing to regenerate saved object IDs to guarantee uniqueness across all spaces (which is currently not guaranteed). This affects existing saved objects, as every saved object will receive a new ID as part of this effort and the new .resolve() saved objects API is designed to give insight into that process for a specific saved object.
This new API not only returns the saved object (it will attempt to find the actual saved object even if the consumer provides the outdated ID) but also information on the new and old saved object IDs and based on the response, plugin owners are expected to provide a quality UX and let the user know of any actions they need to take (such as updating bookmarks, etc). (#95958 is a good reference PR for the expected type of change)
As a result of the above, various plugin's server code needs to convert to using this new saved object .resolve API. We also need to ensure the UI handles showing the user an appropriate message regarding this situation. Luckily, the core/security team built out shareable React components to do that and a good example of how is here
For the sake of consistency, I recommend all.get() calls change to .resolve() (instead of attempting to only find the places where we need to change to .resolve()). It's unclear when/if the .resolve() API deprecates, but if/when that happens, we can change all .resolve() back to .get() in one move.
List of affected areas of code
As a result of the above, the cases plugin's server code needs to convert to using this new saved object .resolve API. Our PoC PR revealed a few places where we need to do this:
There may be more places, and changes to the above listed files might mean additional changes to callers of the above code paths.
When and backporting
This work needs to be done before 8.0. Most of the work can be backported as well, except the changes to the namespaceType
Testing
We should be able to add functional and unit tests for the above changes. For functional tests, we will need to use the es archiver tool to create saved objects from a different environment (without the changes to make our saved objects shareable, I'd recommend just going with the current minor) and use those for the tests. Here is an example
The text was updated successfully, but these errors were encountered:
I'm going to close this out, as the original research is invalid and need to be reworked. If this item is still applicable, we still reopen this ticket.
Summary
In #100067, we need to ensure that all rule and connector saved objects are shareable. Part of this effort involves needing to regenerate saved object IDs to guarantee uniqueness across all spaces (which is currently not guaranteed). This affects existing saved objects, as every saved object will receive a new ID as part of this effort and the new
.resolve()
saved objects API is designed to give insight into that process for a specific saved object.This new API not only returns the saved object (it will attempt to find the actual saved object even if the consumer provides the outdated ID) but also information on the new and old saved object IDs and based on the response, plugin owners are expected to provide a quality UX and let the user know of any actions they need to take (such as updating bookmarks, etc). (#95958 is a good reference PR for the expected type of change)
As a result of the above, various plugin's server code needs to convert to using this new saved object
.resolve
API. We also need to ensure the UI handles showing the user an appropriate message regarding this situation. Luckily, the core/security team built out shareable React components to do that and a good example of how is hereFor the sake of consistency, I recommend all
.get()
calls change to.resolve()
(instead of attempting to only find the places where we need to change to.resolve()
). It's unclear when/if the.resolve()
API deprecates, but if/when that happens, we can change all.resolve()
back to.get()
in one move.List of affected areas of code
As a result of the above, the cases plugin's server code needs to convert to using this new saved object
.resolve
API. Our PoC PR revealed a few places where we need to do this:There may be more places, and changes to the above listed files might mean additional changes to callers of the above code paths.
When and backporting
This work needs to be done before 8.0. Most of the work can be backported as well, except the changes to the
namespaceType
Testing
We should be able to add functional and unit tests for the above changes. For functional tests, we will need to use the es archiver tool to create saved objects from a different environment (without the changes to make our saved objects shareable, I'd recommend just going with the current minor) and use those for the tests. Here is an example
The text was updated successfully, but these errors were encountered: