The original code implemented this by checking the /status API endpoint and setting some local state appropriately.
Goal
Similar to the original implementation, we want to detect when the cluster is in the middle of a rolling upgrade or has completed a rolling upgrade, block access to the standard UI, and reflect this state in the UI instead.
To do this we should:
Poll the server with the status check, using the /status endpoint
Wrap every action API endpoint in the status check, using versionCheckHandlerWrapper
Trigger the UI change if either status check indicates the cluster is in the middle of a rolling upgrade or has completed a rolling upgrade
Once this state has changed, we'll want to prevent navigation to any routes other than the interstitial. We should also end any polling requests which might result in errors, since the user won't be able to act on those errors and they'll likely be irrelevant by this point.
110851
Other considerations
Note that there's currently client-side logic for surfacing rolling upgrade state in the UI but only for the ES deprecation issues panel and ES deprecation issues table (grep for partially_upgraded_error and upgraded_error). As part of this work we can remove this logic.
As part of this work we should also either add API integration tests to verify we're getting back the ES responses we expect when the cluster is in the middle of a rolling upgrade or add steps to the README for manual testing.
Background
Per the Stack upgrade instructions, users will first upgrade ES and then Kibana, which means at some point Kibana will be on 7.16 and ES will be on 8. Originally, Upgrade Assistant handled this case by implementing interstitial states that would replace the standard UI (https://github.com/elastic/kibana/pull/31309, https://github.com/elastic/kibana/pull/34762). They looked like this:
The original code implemented this by checking the
/status
API endpoint and setting some local state appropriately.Goal
Similar to the original implementation, we want to detect when the cluster is in the middle of a rolling upgrade or has completed a rolling upgrade, block access to the standard UI, and reflect this state in the UI instead.
To do this we should:
/status
endpointversionCheckHandlerWrapper
110851
Other considerations
Note that there's currently client-side logic for surfacing rolling upgrade state in the UI but only for the ES deprecation issues panel and ES deprecation issues table (grep for
partially_upgraded_error
andupgraded_error
). As part of this work we can remove this logic.As part of this work we should also either add API integration tests to verify we're getting back the ES responses we expect when the cluster is in the middle of a rolling upgrade or add steps to the
README
for manual testing.