Fix issues related to credo gbsyncd warm-reboot #3465
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What I did
Notify apply_view to all contexts for credo gbsyncd warm-reboot, which was only applied to the switch chip context by setting the target switch id to SAI_NULL_OBJECT_ID
In the init view mode in warm-reboot, port creation is not allowed because of https://github.com/sonic-net/sonic-sairedis/blob/master/syncd/Syncd.cpp#L2313. In warm-reboot, the ports for gearbox are firstly recovered on the driver layer
when create_switch happens based on the dump file of the driver layer. So for orchagent instead of re-creating the ports, querying SAI_SWITCH_ATTR_PORT_LIST on the switch object would obtain the list of ports available in the driver layer, and orchagent only needs to populate its data structures for ports based on the return and set certain attributes to the ports.
Why I did it
This is to fix issues in sonic-swss that block the warm-reboot support of credo gbsyncd.
How I verified it
We tested warm-reboot on x86_64-arista_7060dx5_64s which needs the credo gbsyncd.
Details if related