Skip to content
This repository has been archived by the owner on Dec 9, 2024. It is now read-only.

fix: Sort deployments in descending order and fix APIM arm template #354

Merged
merged 1 commit into from
Oct 3, 2019

Conversation

tbarlow12
Copy link
Contributor

What did you implement:

  • Updated parameter name in APIM arm template
  • Fixed bug of sorting deployments in ascending order, when it should have been descending. This would have pretty serious consequences, because it means that the comparison of ARM templates would always be targeting the first ever deployment, not the most recent.
  • Because the sort() function sorts the array in place, this bug was not being detected by the tests. Updated resourceService tests to create copies of the array rather than using the original reference when testing the validity of the result.

How did you implement it:

  • Flipped the timestamp comparison operator
  • Updated the string in apim.ts

How can we verify it:

  • Deploy a service
  • Make changes to an environment variable
  • Deploy it again (should deploy ARM template)
  • Change back to the original configuration
  • Deploy it again (should deploy ARM template)

Without this fix, the last step would not have deployed the ARM template since it would be identical to the first deployment ever.

Todos:

Note: Run npm run test:ci to run all validation checks on proposed changes

  • Write tests and confirm existing functionality is not broken.
    Validate via npm test
  • Write documentation
  • Ensure there are no lint errors.
    Validate via npm run lint
    Note: Some reported issues can be automatically fixed by running npm run lint:fix
  • Make sure code coverage hasn't dropped
  • Provide verification config / commands / resources
  • Enable "Allow edits from maintainers" for this PR
  • Update the messages below

Is this ready for review?: YES
Is it a breaking change?: NO

@tbarlow12 tbarlow12 closed this Sep 30, 2019
@tbarlow12 tbarlow12 reopened this Sep 30, 2019
@tbarlow12 tbarlow12 closed this Oct 1, 2019
@tbarlow12 tbarlow12 reopened this Oct 1, 2019
@tbarlow12 tbarlow12 closed this Oct 1, 2019
@tbarlow12 tbarlow12 reopened this Oct 1, 2019
Copy link
Contributor

@mydiemho mydiemho left a comment

Choose a reason for hiding this comment

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

looks good, I have a few questions though

src/services/resourceService.test.ts Show resolved Hide resolved
src/services/resourceService.test.ts Show resolved Hide resolved
Copy link
Contributor

@wbreza wbreza left a comment

Choose a reason for hiding this comment

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

Added a few minor comments - otherwise looks good 🚢

@@ -61,7 +61,7 @@ export class ApimResource implements ArmResourceTemplateGenerator {
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('apimSkuName')]",
"capacity": "[parameters('apimCapacity')]"
"capacity": "[parameters('apimSkuCapacity')]"
Copy link
Contributor

Choose a reason for hiding this comment

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

Nice catch!

src/services/resourceService.test.ts Show resolved Hide resolved
@@ -102,10 +105,10 @@ describe("Resource Service", () => {
const service = new ResourceService(sls, options);
const deploymentString = await service.listDeployments();
let expectedDeploymentString = "\n\nDeployments";
const originalTimestamp = +MockFactory.createTestTimestamp();
const originalTimestamp = +MockFactory.createTestTimestamp() + 4;
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Missing semicolon at end of line.

for (const dep of deployments) {
const timestamp = originalTimestamp + i
for (const dep of [...deployments].reverse()) {
const timestamp = originalTimestamp - i
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Missing semicolon at end of line.

@tbarlow12 tbarlow12 force-pushed the tabarlow/fix-apim-template branch from 00f495e to b1779a7 Compare October 3, 2019 17:32
@tbarlow12 tbarlow12 merged commit 865cfd0 into dev Oct 3, 2019
@tbarlow12 tbarlow12 deleted the tabarlow/fix-apim-template branch October 3, 2019 17:53
wbreza pushed a commit that referenced this pull request Oct 6, 2019
…354)

- Updated parameter name in APIM arm template
- Fixed bug of sorting deployments in ascending order, when it should have been descending. This would have pretty serious consequences, because it means that the comparison of ARM templates would always be targeting the first ever deployment, not the most recent.
- Because the `sort()` function sorts the array in place, this bug was not being detected by the tests. Updated `resourceService` tests to create copies of the array rather than using the original reference when testing the validity of the result.
tbarlow12 added a commit that referenced this pull request May 7, 2020
* feat: ConfigService for centralizing configuration and simplifying BaseService (#338)

`ConfigService` and its usage. This removes the configuration logic from `BaseService` and keeps it all in one place. Also adds some constants for default configuration.

* release: Update prerelease version to 1.0.2-0 ***NO_CI***

* fix: Sync triggers on external package deployment (#339)

Fix updating of function app settings (SDK call wasn't working) and syncing triggers for function apps running from external package.

* release: Update prerelease version to 1.0.2-1 ***NO_CI***

* ci: fix failing Node 8 builds on windows agent (#345)

Hosted agent roll out a fix that broke our builds:

1. Previously, npm wasn’t getting packaged with the version of node in the tool cache,
ie. npm 5.6.0 should be used alongside Node 8.10.0.

1. The fix is to pin to a later version of Node 8 (e.g. 8.16.1) which comes with npm 6+
- https://nodejs.org/en/download/releases/.
  * This will probably slow the build down a little bit since the agent will have to download
  the version (instead of it being pre-installed), but we'll get the right version of npm for free.

* fix job name

* fix job name restrictiosn

* still trying to get the right job name format

* clean up job name

* release: Update prerelease version to 1.0.2-2 ***NO_CI***

* release: Update prerelease version to 1.0.2-3 ***NO_CI***

* fix: Fix typing errors in ARM params and add interfaces (#347)

* release: Update prerelease version to 1.0.2-4 ***NO_CI***

* fix: Update to support CosmosDB bindings (#350)

Updatings the binding schema that is generated to support the changes made to Cosmos DB

* release: Update prerelease version to 1.0.2-5 ***NO_CI***

* feat: Refactor runtime configuration to allow for non-node runtimes (#348)

- Added `FunctionRuntime` configuration to provider
- Extracting `FunctionRuntime` from `runtime` property of configuration within `ConfigService`
- Refactored node-specific code in ARM template generation

* release: Update prerelease version to 1.0.2-6 ***NO_CI***

* fix: Update GitHub Issue and PR templates (#353)

* release: Update prerelease version to 1.0.2-7 ***NO_CI***

* fix: Sort deployments in descending order and fix APIM arm template (#354)

- Updated parameter name in APIM arm template
- Fixed bug of sorting deployments in ascending order, when it should have been descending. This would have pretty serious consequences, because it means that the comparison of ARM templates would always be targeting the first ever deployment, not the most recent.
- Because the `sort()` function sorts the array in place, this bug was not being detected by the tests. Updated `resourceService` tests to create copies of the array rather than using the original reference when testing the validity of the result.

* release: Update prerelease version to 1.0.2-8 ***NO_CI***

* release: Update patch version to 1.0.2 ***NO_CI***

* ci: Add GitHub workflow to move new issues to "To triage" column (#381)

* build(deps): bump handlebars from 4.1.2 to 4.5.3 (#400)

Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.1.2...v4.5.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Fix displayName for cosmosDBTrigger (#399)

* Update bindings.json

Co-authored-by: [email protected] <Serverless Azure Functions>
Co-authored-by: My <[email protected]>
Co-authored-by: Wallace Breza <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ofek Bashan <[email protected]>
tbarlow12 added a commit that referenced this pull request May 12, 2020
* feat: ConfigService for centralizing configuration and simplifying BaseService (#338)

`ConfigService` and its usage. This removes the configuration logic from `BaseService` and keeps it all in one place. Also adds some constants for default configuration.

* release: Update prerelease version to 1.0.2-0 ***NO_CI***

* fix: Sync triggers on external package deployment (#339)

Fix updating of function app settings (SDK call wasn't working) and syncing triggers for function apps running from external package.

* release: Update prerelease version to 1.0.2-1 ***NO_CI***

* ci: fix failing Node 8 builds on windows agent (#345)

Hosted agent roll out a fix that broke our builds:

1. Previously, npm wasn’t getting packaged with the version of node in the tool cache,
ie. npm 5.6.0 should be used alongside Node 8.10.0.

1. The fix is to pin to a later version of Node 8 (e.g. 8.16.1) which comes with npm 6+
- https://nodejs.org/en/download/releases/.
  * This will probably slow the build down a little bit since the agent will have to download
  the version (instead of it being pre-installed), but we'll get the right version of npm for free.

* fix job name

* fix job name restrictiosn

* still trying to get the right job name format

* clean up job name

* release: Update prerelease version to 1.0.2-2 ***NO_CI***

* release: Update prerelease version to 1.0.2-3 ***NO_CI***

* fix: Fix typing errors in ARM params and add interfaces (#347)

* release: Update prerelease version to 1.0.2-4 ***NO_CI***

* fix: Update to support CosmosDB bindings (#350)

Updatings the binding schema that is generated to support the changes made to Cosmos DB

* release: Update prerelease version to 1.0.2-5 ***NO_CI***

* feat: Refactor runtime configuration to allow for non-node runtimes (#348)

- Added `FunctionRuntime` configuration to provider
- Extracting `FunctionRuntime` from `runtime` property of configuration within `ConfigService`
- Refactored node-specific code in ARM template generation

* release: Update prerelease version to 1.0.2-6 ***NO_CI***

* fix: Update GitHub Issue and PR templates (#353)

* release: Update prerelease version to 1.0.2-7 ***NO_CI***

* fix: Sort deployments in descending order and fix APIM arm template (#354)

- Updated parameter name in APIM arm template
- Fixed bug of sorting deployments in ascending order, when it should have been descending. This would have pretty serious consequences, because it means that the comparison of ARM templates would always be targeting the first ever deployment, not the most recent.
- Because the `sort()` function sorts the array in place, this bug was not being detected by the tests. Updated `resourceService` tests to create copies of the array rather than using the original reference when testing the validity of the result.

* release: Update prerelease version to 1.0.2-8 ***NO_CI***

* release: Update patch version to 1.0.2 ***NO_CI***

* ci: Add GitHub workflow to move new issues to "To triage" column (#381)

* build(deps): bump handlebars from 4.1.2 to 4.5.3 (#400)

Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.2 to 4.5.3.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.1.2...v4.5.3)

Signed-off-by: dependabot[bot] <[email protected]>

* Fix displayName for cosmosDBTrigger (#399)

* Update bindings.json

Co-authored-by: [email protected] <Serverless Azure Functions>
Co-authored-by: My <[email protected]>
Co-authored-by: Wallace Breza <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ofek Bashan <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants