-
Notifications
You must be signed in to change notification settings - Fork 161
feat: ConfigService for centralizing configuration and simplifying BaseService #338
Conversation
Codecov Report
@@ Coverage Diff @@
## dev #338 +/- ##
==========================================
+ Coverage 94.67% 94.73% +0.06%
==========================================
Files 47 48 +1
Lines 1727 1747 +20
Branches 242 248 +6
==========================================
+ Hits 1635 1655 +20
Misses 92 92
Continue to review full report at Codecov.
|
56d00e9
to
9e860be
Compare
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.
Looks great! - Thanks for doing this.
src/services/configService.test.ts
Outdated
}); | ||
|
||
describe("Service Principal Configuration", () => { | ||
|
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.
Nit: empty line
src/services/configService.test.ts
Outdated
}); | ||
|
||
describe("Configurable Variables", () => { | ||
|
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.
nit: Empty line
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.
have a few questions
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.
Looks good!
5ba7f05
to
8deee9f
Compare
…seService (#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.
…seService (#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.
* 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] <support@github.com> * Fix displayName for cosmosDBTrigger (#399) * Update bindings.json Co-authored-by: sls-az@microsoft.com <Serverless Azure Functions> Co-authored-by: My <mydiemho@users.noreply.github.com> Co-authored-by: Wallace Breza <wallace@breza.me> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ofek Bashan <ofekray@gmail.com>
* 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] <support@github.com> * Fix displayName for cosmosDBTrigger (#399) * Update bindings.json Co-authored-by: sls-az@microsoft.com <Serverless Azure Functions> Co-authored-by: My <mydiemho@users.noreply.github.com> Co-authored-by: Wallace Breza <wallace@breza.me> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ofek Bashan <ofekray@gmail.com>
What did you implement:
ConfigService
and its usage. This removes the configuration logic fromBaseService
and keeps it all in one place. Also adds some constants for default configuration.In a future PR, the
ConfigService
will cache its configuration so that the service is only configured one time in the initialization of the firstBaseService
subclass. It will store the data in theserverless.variables
object and checks to see if that value is populated on future runs.Also added some constants for default configuration values.
How did you implement it:
Removed the configuration logic from the
BaseService
and placed inside theConfigService
, which is initialized in the constructor of theBaseService
How can we verify it:
Todos:
Note: Run
npm run test:ci
to run all validation checks on proposed changesValidate via
npm test
Validate via
npm run lint
Note: Some reported issues can be automatically fixed by running
npm run lint:fix
Is this ready for review?: YES
Is it a breaking change?: NO