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

refactor(core): use "string" for physical name props #3011

Merged
merged 9 commits into from
Jun 23, 2019

Conversation

eladb
Copy link
Contributor

@eladb eladb commented Jun 23, 2019

We realized there is no need to use a strong type (PhysicalName) for resource physical names. Eventually users want to be able to either use the default, pass an explicit string for the name or request that the framework generate a name for them, conditionally (or, in the future, unconditionally) to whether the resource is being referenced across environments.

To that end, all physical name props have been converted back to string and a special token marker PhysicalName.GENERATE_IF_NEEDED was introduced which can be used to indicate that physical name will be generated if needed for cross environment references.

This change also modifies the protected API provided the Resource class:

  • physicalName returns the value that should be passed to the CFN resource
  • getResourceNameAttribute(nameAttr) returns a token that should be exposed as the resource name (e.g. bucketName).
  • getResourceArnAttribute(arnAttr, components) returns a token that should bexposed as the resource's ARN (e.g. bucketArn).

All of these are "environment-sensitive" and will return "the right" value, depending on the resource's poster and configuration.


Please read the contribution guidelines and follow the pull-request checklist.

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


Instead of a `PhysicalName` type, use `string` to represent
physical names in resource props, and offer a marker `PhysicalName.GENERATE_IF_NEEDED`
to let users indicate that they allow cross-environment usage.
@eladb eladb merged commit a942e4c into master Jun 23, 2019
@eladb eladb deleted the benisrae/physical-names-as-strings branch June 23, 2019 20:31
@NGL321 NGL321 added the contribution/core This is a PR that came from AWS. label Sep 23, 2019
@mergify
Copy link
Contributor

mergify bot commented Sep 23, 2019

Thanks so much for taking the time to contribute to the AWS CDK ❤️

We will shortly assign someone to review this pull request and help get it
merged. In the meantime, please take a minute to make sure you follow this
checklist
:

  • PR title type(scope): text
    • type: fix, feat, refactor go into CHANGELOG, chore is hidden
    • scope: name of module without aws- or cdk- prefix or postfix (e.g. s3 instead of aws-s3-deployment)
    • text: use all lower-case, do not end with a period, do not include issue refs
  • PR Description
    • Rationale: describe rationale of change and approach taken
    • Issues: indicate issues fixed via: fixes #xxx or closes #xxx
    • Breaking?: last paragraph: BREAKING CHANGE: <describe what changed + link for details>
  • Testing
    • Unit test added. Prefer to add a new test rather than modify existing tests
    • CLI or init templates change? Re-run/add CLI integration tests
  • Documentation
    • README: update module README to describe new features
    • API docs: public APIs must be documented. Copy from official AWS docs when possible
    • Design: for significant features, follow design process

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution/core This is a PR that came from AWS.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants