Skip to content
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

feat(cli): support --import-existing-resources flag in cdk diff #32831

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

tmokmss
Copy link
Contributor

@tmokmss tmokmss commented Jan 10, 2025

Issue # (if applicable)

Closes #32790.

Reason for this change

I want to know which resources are imported before deployment by just executing cdk diff.

Description of changes

This PR adds a new CLI option --import-existing-resources to cdk diff command. The value is passed when cdk diff creates a change set.

Describe any new or updated permissions being added

None.

Description of how you validated changes

I added a unit test and cli-integ test. Also I did E2E testing in my local environment.

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@tmokmss tmokmss requested a review from a team as a code owner January 10, 2025 07:01
@github-actions github-actions bot added effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 labels Jan 10, 2025
@aws-cdk-automation aws-cdk-automation requested a review from a team January 10, 2025 07:01
@github-actions github-actions bot added the star-contributor [Pilot] contributed between 25-49 PRs to the CDK label Jan 10, 2025
stream,
});
} else {
if (options.importExistingResources) {
throw new ToolkitError(`--import-existing-resources diff cannot be enabled for a stack that does not exist yet. StackName: ${stack.stackName}`);
}
Copy link
Contributor Author

@tmokmss tmokmss Jan 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to #29492, cdk diff will not create changeset when the target stack does not exist. Without changeset, CDK cannot know which resource will be imported, so I just throw an error instead.

Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pull request linter fails with the following errors:

❌ Features must contain a change to an integration test file and the resulting snapshot.
❌ CLI code has changed. A maintainer must run the code through the testing pipeline (git fetch origin pull/32831/head && git push -f origin FETCH_HEAD:test-main-pipeline), then add the 'pr-linter/cli-integ-tested' label when the pipeline succeeds.
❌ CodeCov is indicating a drop in code coverage

If you believe this pull request should receive an exemption, please comment and provide a justification. A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed, add Clarification Request to a comment.

✅ A exemption request has been requested. Please wait for a maintainer's review.

@aws-cdk-automation aws-cdk-automation added the pr/needs-cli-test-run This PR needs CLI tests run against it. label Jan 10, 2025
Copy link

codecov bot commented Jan 10, 2025

Codecov Report

Attention: Patch coverage is 50.00000% with 2 lines in your changes missing coverage. Please review.

Project coverage is 80.77%. Comparing base (8c13cf2) to head (8087d3e).

❌ Your patch check has failed because the patch coverage (50.00%) is below the target coverage (95.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #32831      +/-   ##
==========================================
- Coverage   80.78%   80.77%   -0.01%     
==========================================
  Files         232      232              
  Lines       14111    14115       +4     
  Branches     2453     2455       +2     
==========================================
+ Hits        11400    11402       +2     
- Misses       2431     2432       +1     
- Partials      280      281       +1     
Flag Coverage Δ
suite.unit 80.77% <50.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
packages/aws-cdk 79.50% <50.00%> (-0.02%) ⬇️
packages/aws-cdk-lib/core 82.17% <ø> (ø)


try {
await fixture.cdkDeploy('simplified-import', {
});
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The integ-test steps:

  1. Create an AWS resource (e.g. ECR repository) to be imported
  2. Deploy a stack without importing resource (because cdk diff only works for an existing stack)
  3. Run cdk diff with the stack template that contains the resource to be imported
  4. assert cdk diff output
  5. destroy stack
  6. delete the AWS resource created at step 1

@tmokmss
Copy link
Contributor Author

tmokmss commented Jan 10, 2025

Exemption Request: this PR is for cli and will not need to update aws-cdk-lib integ tests. I added cli-integ test instead.

@aws-cdk-automation aws-cdk-automation added pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. labels Jan 10, 2025
@GavinZZ GavinZZ added the @aws-cdk/core Related to core CDK functionality label Jan 22, 2025
@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: 8087d3e
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@aws-cdk/core Related to core CDK functionality effort/small Small work item – less than a day of effort feature-request A feature should be added or improved. p2 pr/needs-cli-test-run This PR needs CLI tests run against it. pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. star-contributor [Pilot] contributed between 25-49 PRs to the CDK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

cli: support --import-existing-resources flag in cdk diff
3 participants