-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Cloud Formation: [POC] Scoping Mechanism, Base Support for Parameters, Dynamic Parameters, Conditions, Intrinsic Functions, and Type Divergence #12405
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
LocalStack Community integration with Pro 2 files ± 0 2 suites ±0 20m 2s ⏱️ - 1h 32m 16s Results for commit 792c750. ± Comparison against base commit 64fbda1. This pull request removes 3883 tests.
♻️ This comment has been updated with latest results. |
…ns, Intrinsic Functions, and Type Divergences (#12421)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for implementing this, I'm excited to get these changes working!
Motivation
Currently, the POC Update Graph approach to modeling CloudFormation templates does not support CloudFormation Parameters or the Ref intrinsic function. Additionally, due to the lack of built-in positional identifiers, the ChangeSetEntity abstraction does not support workflows that need to track the asynchronous computation of template entities, nor does it enable memoization strategies.
These changes introduce a scoping mechanism that assigns each ChangeSetEntity a unique identifier representing its logical position (or scope) within the template. They also add support for modeling changes in Parameters, Dynamic Parameters, and Ref operations within change sets. Furthermore, unit tests have been added to cover basic scenarios in this context.
The POC Update Graph approach to modeling CloudFormation templates does not support CloudFormation Conditions. This gap prevents condition-driven workflows from being accurately tracked or updated within the existing logic. In addition, there is no support for certain intrinsic functions (such as Fn::If, Fn::Not, and Fn::Equals). Furthermore, the modeling layer does not currently handle scenarios where changes in a template result in a new subtype or intrinsic function (for example, switching from one intrinsic function to a different one). This limitation meant that strict type changes to certain template bindings was not supported. Finally, caching mechanisms within the describer visitor are needed. A number of minor issues with this pipeline were also addressed. Unit tests have been added to validate these scenarios.
Changes