This PR changes both the shape of the classes that model the Octopus incoming data and the we way that we validate it.
Having observed data arriving in production, the 'bundlecache' object (which contains a daily snapshot of Octopus data) did not match the structure that we were expecting. This meant that the lambda was unable to validate and parse the Octopus JSON and instead sent it to the dead letter queue.
At the top level, the single bundle payload JSON that arrives is structured as:
Previously, we had a single model for the payload. Now, there is a model for the cache payload and the single bundle payload.
How can we measure success?
Single story bundles should continue to be handled as normal. Observing the Octopus dashboard tomorrow at approx 4:30am, we should not see dead letters as a result of failures to validate the shape of the daily snapshot payload.
What does this change?
This PR changes both the shape of the classes that model the Octopus incoming data and the we way that we validate it.
Having observed data arriving in production, the 'bundlecache' object (which contains a daily snapshot of Octopus data) did not match the structure that we were expecting. This meant that the lambda was unable to validate and parse the Octopus JSON and instead sent it to the dead letter queue.
At the top level, the single bundle payload JSON that arrives is structured as:
The bundle cache payload JSON is structured as:
Previously, we had a single model for the payload. Now, there is a model for the cache payload and the single bundle payload.
How can we measure success?
Single story bundles should continue to be handled as normal. Observing the Octopus dashboard tomorrow at approx 4:30am, we should not see dead letters as a result of failures to validate the shape of the daily snapshot payload.