feat: expose JSON representation of a container with Inspect #2534
+245
−97
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 does this PR do?
It exposes the existing inspect method to the Container interface. That will allow consumers to get the JSON representation of the container.
This new method will cache the raw JSON, which will be cleaned after stopping/terminating a container. Remember that when a container is stopped, the JSON representation could change.
At the same time, given the Inspect method retrives all the container info, we are deprecating two container methods: Name and Ports, as they are just passing-through ones. Consumers will just call inspect and from there get the container name and the ports. The deprecation paths have been properly set in the method comments, so the IDEs and the linters will complain/warn about them.
Deprecation Path
c.Inspect(ctx).Name
insteadc.Inspect(ctx).NetworkSettings.Ports
insteadAs
Inspect
returns an error, you must handle it before reading Name or the Ports.Why is it important?
It will allow consumers to get the JSON representation of the container.
Related issues