@microsoft/teamsfx-core 1.11.0 → 1.11.1-alpha.10d9b00a6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/common/local/index.d.ts +1 -0
- package/build/common/local/index.d.ts.map +1 -1
- package/build/common/local/index.js +1 -0
- package/build/common/local/index.js.map +1 -1
- package/build/common/local/localCertificateManager.d.ts +1 -0
- package/build/common/local/localCertificateManager.d.ts.map +1 -1
- package/build/common/local/localCertificateManager.js +2 -0
- package/build/common/local/localCertificateManager.js.map +1 -1
- package/build/common/local/localTelemetryReporter.d.ts +69 -0
- package/build/common/local/localTelemetryReporter.d.ts.map +1 -0
- package/build/common/local/localTelemetryReporter.js +118 -0
- package/build/common/local/localTelemetryReporter.js.map +1 -0
- package/build/common/local/projectSettingsHelper.d.ts.map +1 -1
- package/build/common/local/projectSettingsHelper.js +20 -4
- package/build/common/local/projectSettingsHelper.js.map +1 -1
- package/build/common/projectSettingsHelperV3.d.ts +6 -0
- package/build/common/projectSettingsHelperV3.d.ts.map +1 -1
- package/build/common/projectSettingsHelperV3.js +33 -1
- package/build/common/projectSettingsHelperV3.js.map +1 -1
- package/build/common/telemetry.d.ts +2 -1
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +1 -0
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +2 -2
- package/build/common/tools.d.ts +2 -5
- package/build/common/tools.d.ts.map +1 -1
- package/build/common/tools.js +17 -9
- package/build/common/tools.js.map +1 -1
- package/build/common/utils.d.ts +1 -0
- package/build/common/utils.d.ts.map +1 -1
- package/build/common/utils.js +11 -2
- package/build/common/utils.js.map +1 -1
- package/build/component/bicep.d.ts.map +1 -1
- package/build/component/bicep.js +0 -8
- package/build/component/bicep.js.map +1 -1
- package/build/component/code/botCode.d.ts +7 -2
- package/build/component/code/botCode.d.ts.map +1 -1
- package/build/component/code/botCode.js +94 -40
- package/build/component/code/botCode.js.map +1 -1
- package/build/component/code/tabCode.d.ts +10 -0
- package/build/component/code/tabCode.d.ts.map +1 -1
- package/build/component/code/tabCode.js +121 -0
- package/build/component/code/tabCode.js.map +1 -1
- package/build/component/connection/azureFunctionConfig.d.ts +10 -0
- package/build/component/connection/azureFunctionConfig.d.ts.map +1 -1
- package/build/component/connection/azureFunctionConfig.js +33 -0
- package/build/component/connection/azureFunctionConfig.js.map +1 -1
- package/build/component/connection/azureResourceConfig.d.ts +11 -0
- package/build/component/connection/azureResourceConfig.d.ts.map +1 -0
- package/build/component/connection/azureResourceConfig.js +77 -0
- package/build/component/connection/azureResourceConfig.js.map +1 -0
- package/build/component/connection/azureWebAppConfig.d.ts +4 -1
- package/build/component/connection/azureWebAppConfig.d.ts.map +1 -1
- package/build/component/connection/azureWebAppConfig.js +14 -63
- package/build/component/connection/azureWebAppConfig.js.map +1 -1
- package/build/component/constants.d.ts +60 -0
- package/build/component/constants.d.ts.map +1 -1
- package/build/component/constants.js +62 -2
- package/build/component/constants.js.map +1 -1
- package/build/component/core.d.ts +2 -1
- package/build/component/core.d.ts.map +1 -1
- package/build/component/core.js +68 -126
- package/build/component/core.js.map +1 -1
- package/build/component/debug.d.ts +4 -2
- package/build/component/debug.d.ts.map +1 -1
- package/build/component/debug.js +133 -16
- package/build/component/debug.js.map +1 -1
- package/build/component/envManager.d.ts +0 -2
- package/build/component/envManager.d.ts.map +1 -1
- package/build/component/envManager.js +84 -63
- package/build/component/envManager.js.map +1 -1
- package/build/component/feature/apiConnector.d.ts +17 -0
- package/build/component/feature/apiConnector.d.ts.map +1 -0
- package/build/component/feature/apiConnector.js +40 -0
- package/build/component/feature/apiConnector.js.map +1 -0
- package/build/component/feature/bot.d.ts +1 -0
- package/build/component/feature/bot.d.ts.map +1 -1
- package/build/component/feature/bot.js +29 -8
- package/build/component/feature/bot.js.map +1 -1
- package/build/component/feature/cicd.d.ts +15 -0
- package/build/component/feature/cicd.d.ts.map +1 -0
- package/build/component/feature/cicd.js +121 -0
- package/build/component/feature/cicd.js.map +1 -0
- package/build/component/feature/sql.d.ts +4 -2
- package/build/component/feature/sql.d.ts.map +1 -1
- package/build/component/feature/sql.js +25 -2
- package/build/component/feature/sql.js.map +1 -1
- package/build/component/feature/tab.d.ts.map +1 -1
- package/build/component/feature/tab.js +59 -57
- package/build/component/feature/tab.js.map +1 -1
- package/build/component/fx/preDeployAction.d.ts +7 -0
- package/build/component/fx/preDeployAction.d.ts.map +1 -0
- package/build/component/fx/preDeployAction.js +32 -0
- package/build/component/fx/preDeployAction.js.map +1 -0
- package/build/component/fx/preProvisionAction.d.ts +7 -0
- package/build/component/fx/preProvisionAction.d.ts.map +1 -0
- package/build/component/fx/preProvisionAction.js +63 -0
- package/build/component/fx/preProvisionAction.js.map +1 -0
- package/build/component/middleware/logger.d.ts +20 -0
- package/build/component/middleware/logger.d.ts.map +1 -0
- package/build/component/middleware/logger.js +50 -0
- package/build/component/middleware/logger.js.map +1 -0
- package/build/component/middleware/progressbar.d.ts +3 -0
- package/build/component/middleware/progressbar.d.ts.map +1 -0
- package/build/component/middleware/progressbar.js +22 -0
- package/build/component/middleware/progressbar.js.map +1 -0
- package/build/component/middleware/runWithCatchError.d.ts +6 -0
- package/build/component/middleware/runWithCatchError.d.ts.map +1 -0
- package/build/component/middleware/runWithCatchError.js +43 -0
- package/build/component/middleware/runWithCatchError.js.map +1 -0
- package/build/component/middleware/telemetry.d.ts +37 -0
- package/build/component/middleware/telemetry.d.ts.map +1 -0
- package/build/component/middleware/telemetry.js +70 -0
- package/build/component/middleware/telemetry.js.map +1 -0
- package/build/component/middleware/types.d.ts +25 -0
- package/build/component/middleware/types.d.ts.map +1 -0
- package/build/component/middleware/types.js +5 -0
- package/build/component/middleware/types.js.map +1 -0
- package/build/component/projectSettingsManager.d.ts +1 -1
- package/build/component/projectSettingsManager.d.ts.map +1 -1
- package/build/component/projectSettingsManager.js +7 -3
- package/build/component/projectSettingsManager.js.map +1 -1
- package/build/component/resource/appManifest/appManifest.d.ts +2 -1
- package/build/component/resource/appManifest/appManifest.d.ts.map +1 -1
- package/build/component/resource/appManifest/appManifest.js +141 -107
- package/build/component/resource/appManifest/appManifest.js.map +1 -1
- package/build/component/resource/appManifest/appStudio.d.ts +10 -3
- package/build/component/resource/appManifest/appStudio.d.ts.map +1 -1
- package/build/component/resource/appManifest/appStudio.js +136 -53
- package/build/component/resource/appManifest/appStudio.js.map +1 -1
- package/build/component/resource/appManifest/manifestProvider.d.ts +8 -0
- package/build/component/resource/appManifest/manifestProvider.d.ts.map +1 -0
- package/build/component/resource/appManifest/manifestProvider.js +27 -0
- package/build/component/resource/appManifest/manifestProvider.js.map +1 -0
- package/build/component/resource/azureFunction.d.ts +5 -3
- package/build/component/resource/azureFunction.d.ts.map +1 -1
- package/build/component/resource/azureFunction.js +55 -19
- package/build/component/resource/azureFunction.js.map +1 -1
- package/build/component/resource/azureResource.d.ts +12 -0
- package/build/component/resource/azureResource.d.ts.map +1 -0
- package/build/component/resource/azureResource.js +62 -0
- package/build/component/resource/azureResource.js.map +1 -0
- package/build/component/resource/azureSql/actions/configure.d.ts +27 -0
- package/build/component/resource/azureSql/actions/configure.d.ts.map +1 -0
- package/build/component/resource/azureSql/actions/configure.js +181 -0
- package/build/component/resource/azureSql/actions/configure.js.map +1 -0
- package/build/component/resource/azureSql/actions/generateBicep.d.ts +3 -0
- package/build/component/resource/azureSql/actions/generateBicep.d.ts.map +1 -0
- package/build/component/resource/azureSql/actions/generateBicep.js +59 -0
- package/build/component/resource/azureSql/actions/generateBicep.js.map +1 -0
- package/build/component/resource/azureSql/actions/provision.d.ts +11 -0
- package/build/component/resource/azureSql/actions/provision.d.ts.map +1 -0
- package/build/component/resource/azureSql/actions/provision.js +76 -0
- package/build/component/resource/azureSql/actions/provision.js.map +1 -0
- package/build/component/resource/{azureSql.d.ts → azureSql/azureSql.d.ts} +3 -4
- package/build/component/resource/azureSql/azureSql.d.ts.map +1 -0
- package/build/component/resource/azureSql/azureSql.js +34 -0
- package/build/component/resource/azureSql/azureSql.js.map +1 -0
- package/build/component/resource/azureSql/clients/management.d.ts +18 -0
- package/build/component/resource/azureSql/clients/management.d.ts.map +1 -0
- package/build/component/resource/azureSql/clients/management.js +111 -0
- package/build/component/resource/azureSql/clients/management.js.map +1 -0
- package/build/component/resource/azureSql/clients/sql.d.ts +13 -0
- package/build/component/resource/azureSql/clients/sql.d.ts.map +1 -0
- package/build/component/resource/azureSql/clients/sql.js +153 -0
- package/build/component/resource/azureSql/clients/sql.js.map +1 -0
- package/build/component/resource/azureSql/config.d.ts +7 -0
- package/build/component/resource/azureSql/config.d.ts.map +1 -0
- package/build/component/resource/azureSql/config.js +77 -0
- package/build/component/resource/azureSql/config.js.map +1 -0
- package/build/component/resource/azureSql/constants.d.ts +85 -0
- package/build/component/resource/azureSql/constants.d.ts.map +1 -0
- package/build/component/resource/azureSql/constants.js +95 -0
- package/build/component/resource/azureSql/constants.js.map +1 -0
- package/build/component/resource/azureSql/errors.d.ts +63 -0
- package/build/component/resource/azureSql/errors.d.ts.map +1 -0
- package/build/component/resource/azureSql/errors.js +107 -0
- package/build/component/resource/azureSql/errors.js.map +1 -0
- package/build/component/resource/azureSql/index.d.ts +2 -0
- package/build/component/resource/azureSql/index.d.ts.map +1 -0
- package/build/component/resource/azureSql/index.js +7 -0
- package/build/component/resource/azureSql/index.js.map +1 -0
- package/build/component/resource/azureSql/questions.d.ts +5 -0
- package/build/component/resource/azureSql/questions.d.ts.map +1 -0
- package/build/component/resource/azureSql/questions.js +48 -0
- package/build/component/resource/azureSql/questions.js.map +1 -0
- package/build/component/resource/azureSql/results.d.ts +10 -0
- package/build/component/resource/azureSql/results.d.ts.map +1 -0
- package/build/component/resource/azureSql/results.js +34 -0
- package/build/component/resource/azureSql/results.js.map +1 -0
- package/build/component/resource/azureSql/types.d.ts +12 -0
- package/build/component/resource/azureSql/types.d.ts.map +1 -0
- package/build/component/resource/azureSql/types.js +5 -0
- package/build/component/resource/azureSql/types.js.map +1 -0
- package/build/component/resource/azureSql/utils/checkInput.d.ts +10 -0
- package/build/component/resource/azureSql/utils/checkInput.d.ts.map +1 -0
- package/build/component/resource/azureSql/utils/checkInput.js +89 -0
- package/build/component/resource/azureSql/utils/checkInput.js.map +1 -0
- package/build/component/resource/azureSql/utils/common.d.ts +12 -0
- package/build/component/resource/azureSql/utils/common.d.ts.map +1 -0
- package/build/component/resource/azureSql/utils/common.js +51 -0
- package/build/component/resource/azureSql/utils/common.js.map +1 -0
- package/build/component/resource/azureStorage.d.ts +16 -3
- package/build/component/resource/azureStorage.d.ts.map +1 -1
- package/build/component/resource/azureStorage.js +51 -28
- package/build/component/resource/azureStorage.js.map +1 -1
- package/build/component/resource/azureWebApp.d.ts +8 -3
- package/build/component/resource/azureWebApp.d.ts.map +1 -1
- package/build/component/resource/azureWebApp.js +39 -35
- package/build/component/resource/azureWebApp.js.map +1 -1
- package/build/component/resource/botService.d.ts.map +1 -1
- package/build/component/resource/botService.js +26 -13
- package/build/component/resource/botService.js.map +1 -1
- package/build/component/resource/identity.d.ts +22 -0
- package/build/component/resource/identity.d.ts.map +1 -0
- package/build/component/resource/identity.js +24 -0
- package/build/component/resource/identity.js.map +1 -0
- package/build/component/utils.d.ts +5 -4
- package/build/component/utils.d.ts.map +1 -1
- package/build/component/utils.js +31 -15
- package/build/component/utils.js.map +1 -1
- package/build/component/workflow.d.ts.map +1 -1
- package/build/component/workflow.js +25 -15
- package/build/component/workflow.js.map +1 -1
- package/build/core/FxCore.d.ts +1 -0
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.js +67 -47
- package/build/core/FxCore.js.map +1 -1
- package/build/core/collaborator.d.ts.map +1 -1
- package/build/core/collaborator.js +14 -8
- package/build/core/collaborator.js.map +1 -1
- package/build/core/middleware/projectSettingsLoader.d.ts.map +1 -1
- package/build/core/middleware/projectSettingsLoader.js +9 -5
- package/build/core/middleware/projectSettingsLoader.js.map +1 -1
- package/build/core/middleware/questionModel.js +1 -1
- package/build/core/middleware/questionModel.js.map +1 -1
- package/build/core/middleware/questionModelV3.d.ts.map +1 -1
- package/build/core/middleware/questionModelV3.js +125 -5
- package/build/core/middleware/questionModelV3.js.map +1 -1
- package/build/core/question.d.ts +3 -2
- package/build/core/question.d.ts.map +1 -1
- package/build/core/question.js +3 -2
- package/build/core/question.js.map +1 -1
- package/build/plugins/resource/aad/aadAppClient.d.ts +3 -3
- package/build/plugins/resource/aad/aadAppClient.d.ts.map +1 -1
- package/build/plugins/resource/aad/aadAppClient.js +4 -4
- package/build/plugins/resource/aad/aadAppClient.js.map +1 -1
- package/build/plugins/resource/aad/plugin.d.ts.map +1 -1
- package/build/plugins/resource/aad/plugin.js +11 -11
- package/build/plugins/resource/aad/plugin.js.map +1 -1
- package/build/plugins/resource/aad/utils/configs.d.ts +3 -2
- package/build/plugins/resource/aad/utils/configs.d.ts.map +1 -1
- package/build/plugins/resource/aad/utils/configs.js +16 -23
- package/build/plugins/resource/aad/utils/configs.js.map +1 -1
- package/build/plugins/resource/aad/utils/tokenProvider.d.ts +2 -3
- package/build/plugins/resource/aad/utils/tokenProvider.d.ts.map +1 -1
- package/build/plugins/resource/aad/utils/tokenProvider.js +9 -4
- package/build/plugins/resource/aad/utils/tokenProvider.js.map +1 -1
- package/build/plugins/resource/aad/v3/index.d.ts.map +1 -1
- package/build/plugins/resource/aad/v3/index.js +6 -8
- package/build/plugins/resource/aad/v3/index.js.map +1 -1
- package/build/plugins/resource/apiconnector/plugin.d.ts.map +1 -1
- package/build/plugins/resource/apiconnector/plugin.js +40 -18
- package/build/plugins/resource/apiconnector/plugin.js.map +1 -1
- package/build/plugins/resource/apim/factory.d.ts +4 -4
- package/build/plugins/resource/apim/factory.d.ts.map +1 -1
- package/build/plugins/resource/apim/factory.js +10 -7
- package/build/plugins/resource/apim/factory.js.map +1 -1
- package/build/plugins/resource/apim/index.js +6 -4
- package/build/plugins/resource/apim/index.js.map +1 -1
- package/build/plugins/resource/apim/v3/index.d.ts.map +1 -1
- package/build/plugins/resource/apim/v3/index.js +5 -4
- package/build/plugins/resource/apim/v3/index.js.map +1 -1
- package/build/plugins/resource/appstudio/appStudio.d.ts +0 -4
- package/build/plugins/resource/appstudio/appStudio.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/appStudio.js +41 -64
- package/build/plugins/resource/appstudio/appStudio.js.map +1 -1
- package/build/plugins/resource/appstudio/constants.d.ts +4 -4
- package/build/plugins/resource/appstudio/constants.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/constants.js +25 -25
- package/build/plugins/resource/appstudio/constants.js.map +1 -1
- package/build/plugins/resource/appstudio/errors.d.ts +1 -1
- package/build/plugins/resource/appstudio/errors.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/errors.js +3 -1
- package/build/plugins/resource/appstudio/errors.js.map +1 -1
- package/build/plugins/resource/appstudio/index.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/index.js +16 -7
- package/build/plugins/resource/appstudio/index.js.map +1 -1
- package/build/plugins/resource/appstudio/manifestTemplate.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/manifestTemplate.js +12 -11
- package/build/plugins/resource/appstudio/manifestTemplate.js.map +1 -1
- package/build/plugins/resource/appstudio/plugin.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/plugin.js +98 -42
- package/build/plugins/resource/appstudio/plugin.js.map +1 -1
- package/build/plugins/resource/appstudio/utils/utils.d.ts +4 -0
- package/build/plugins/resource/appstudio/utils/utils.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/utils/utils.js +34 -1
- package/build/plugins/resource/appstudio/utils/utils.js.map +1 -1
- package/build/plugins/resource/appstudio/v2/index.d.ts +2 -2
- package/build/plugins/resource/appstudio/v2/index.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/v2/index.js +1 -1
- package/build/plugins/resource/appstudio/v2/index.js.map +1 -1
- package/build/plugins/resource/appstudio/v3/index.d.ts +5 -5
- package/build/plugins/resource/appstudio/v3/index.d.ts.map +1 -1
- package/build/plugins/resource/appstudio/v3/index.js +10 -6
- package/build/plugins/resource/appstudio/v3/index.js.map +1 -1
- package/build/plugins/resource/bot/appStudio/appStudio.d.ts.map +1 -1
- package/build/plugins/resource/bot/appStudio/appStudio.js +15 -2
- package/build/plugins/resource/bot/appStudio/appStudio.js.map +1 -1
- package/build/plugins/resource/bot/configs/scaffoldConfig.d.ts +2 -1
- package/build/plugins/resource/bot/configs/scaffoldConfig.d.ts.map +1 -1
- package/build/plugins/resource/bot/configs/scaffoldConfig.js +7 -7
- package/build/plugins/resource/bot/configs/scaffoldConfig.js.map +1 -1
- package/build/plugins/resource/bot/functionsHostedBot/plugin.d.ts.map +1 -1
- package/build/plugins/resource/bot/functionsHostedBot/plugin.js +2 -1
- package/build/plugins/resource/bot/functionsHostedBot/plugin.js.map +1 -1
- package/build/plugins/resource/bot/index.d.ts.map +1 -1
- package/build/plugins/resource/bot/index.js +19 -47
- package/build/plugins/resource/bot/index.js.map +1 -1
- package/build/plugins/resource/bot/languageStrategy.d.ts.map +1 -1
- package/build/plugins/resource/bot/languageStrategy.js +2 -1
- package/build/plugins/resource/bot/languageStrategy.js.map +1 -1
- package/build/plugins/resource/bot/plugin.d.ts.map +1 -1
- package/build/plugins/resource/bot/plugin.js +30 -9
- package/build/plugins/resource/bot/plugin.js.map +1 -1
- package/build/plugins/resource/bot/question.d.ts +8 -6
- package/build/plugins/resource/bot/question.d.ts.map +1 -1
- package/build/plugins/resource/bot/question.js +42 -61
- package/build/plugins/resource/bot/question.js.map +1 -1
- package/build/plugins/resource/bot/resources/strings.d.ts +0 -5
- package/build/plugins/resource/bot/resources/strings.d.ts.map +1 -1
- package/build/plugins/resource/bot/resources/strings.js +1 -5
- package/build/plugins/resource/bot/resources/strings.js.map +1 -1
- package/build/plugins/resource/bot/utils/retryHandler.d.ts +1 -1
- package/build/plugins/resource/bot/utils/retryHandler.d.ts.map +1 -1
- package/build/plugins/resource/bot/utils/retryHandler.js +1 -3
- package/build/plugins/resource/bot/utils/retryHandler.js.map +1 -1
- package/build/plugins/resource/bot/v2/common.d.ts +3 -1
- package/build/plugins/resource/bot/v2/common.d.ts.map +1 -1
- package/build/plugins/resource/bot/v2/common.js +23 -9
- package/build/plugins/resource/bot/v2/common.js.map +1 -1
- package/build/plugins/resource/bot/v2/enum.d.ts +5 -1
- package/build/plugins/resource/bot/v2/enum.d.ts.map +1 -1
- package/build/plugins/resource/bot/v2/enum.js +7 -2
- package/build/plugins/resource/bot/v2/enum.js.map +1 -1
- package/build/plugins/resource/bot/v2/mapping.d.ts +2 -0
- package/build/plugins/resource/bot/v2/mapping.d.ts.map +1 -1
- package/build/plugins/resource/bot/v2/mapping.js +27 -10
- package/build/plugins/resource/bot/v2/mapping.js.map +1 -1
- package/build/plugins/resource/bot/v2/plugin.d.ts.map +1 -1
- package/build/plugins/resource/bot/v2/plugin.js +2 -0
- package/build/plugins/resource/bot/v2/plugin.js.map +1 -1
- package/build/plugins/resource/bot/v3/index.d.ts.map +1 -1
- package/build/plugins/resource/bot/v3/index.js +16 -5
- package/build/plugins/resource/bot/v3/index.js.map +1 -1
- package/build/plugins/resource/cicd/index.d.ts.map +1 -1
- package/build/plugins/resource/cicd/index.js +9 -67
- package/build/plugins/resource/cicd/index.js.map +1 -1
- package/build/plugins/resource/cicd/plugin.d.ts +1 -2
- package/build/plugins/resource/cicd/plugin.d.ts.map +1 -1
- package/build/plugins/resource/cicd/plugin.js +3 -8
- package/build/plugins/resource/cicd/plugin.js.map +1 -1
- package/build/plugins/resource/cicd/providers/provider.d.ts +2 -2
- package/build/plugins/resource/cicd/providers/provider.d.ts.map +1 -1
- package/build/plugins/resource/cicd/providers/provider.js +28 -10
- package/build/plugins/resource/cicd/providers/provider.js.map +1 -1
- package/build/plugins/resource/frontend/dotnet/plugin.d.ts.map +1 -1
- package/build/plugins/resource/frontend/dotnet/plugin.js +6 -3
- package/build/plugins/resource/frontend/dotnet/plugin.js.map +1 -1
- package/build/plugins/resource/function/v3/index.d.ts.map +1 -1
- package/build/plugins/resource/function/v3/index.js +2 -1
- package/build/plugins/resource/function/v3/index.js.map +1 -1
- package/build/plugins/resource/simpleauth/plugin.js +1 -1
- package/build/plugins/resource/simpleauth/plugin.js.map +1 -1
- package/build/plugins/resource/spfx/depsChecker/generatorChecker.d.ts +0 -1
- package/build/plugins/resource/spfx/depsChecker/generatorChecker.d.ts.map +1 -1
- package/build/plugins/resource/spfx/depsChecker/generatorChecker.js +0 -14
- package/build/plugins/resource/spfx/depsChecker/generatorChecker.js.map +1 -1
- package/build/plugins/resource/spfx/depsChecker/yoChecker.d.ts +0 -2
- package/build/plugins/resource/spfx/depsChecker/yoChecker.d.ts.map +1 -1
- package/build/plugins/resource/spfx/depsChecker/yoChecker.js +1 -43
- package/build/plugins/resource/spfx/depsChecker/yoChecker.js.map +1 -1
- package/build/plugins/resource/spfx/error.d.ts +2 -0
- package/build/plugins/resource/spfx/error.d.ts.map +1 -1
- package/build/plugins/resource/spfx/error.js +9 -1
- package/build/plugins/resource/spfx/error.js.map +1 -1
- package/build/plugins/resource/spfx/index.d.ts.map +1 -1
- package/build/plugins/resource/spfx/index.js +4 -2
- package/build/plugins/resource/spfx/index.js.map +1 -1
- package/build/plugins/resource/spfx/plugin.d.ts.map +1 -1
- package/build/plugins/resource/spfx/plugin.js +15 -13
- package/build/plugins/resource/spfx/plugin.js.map +1 -1
- package/build/plugins/resource/spfx/utils/constants.d.ts +3 -0
- package/build/plugins/resource/spfx/utils/constants.d.ts.map +1 -1
- package/build/plugins/resource/spfx/utils/constants.js +3 -0
- package/build/plugins/resource/spfx/utils/constants.js.map +1 -1
- package/build/plugins/resource/spfx/utils/questions.d.ts +3 -1
- package/build/plugins/resource/spfx/utils/questions.d.ts.map +1 -1
- package/build/plugins/resource/spfx/utils/questions.js +28 -2
- package/build/plugins/resource/spfx/utils/questions.js.map +1 -1
- package/build/plugins/resource/spfx/utils/utils.d.ts +4 -0
- package/build/plugins/resource/spfx/utils/utils.d.ts.map +1 -1
- package/build/plugins/resource/spfx/utils/utils.js +37 -0
- package/build/plugins/resource/spfx/utils/utils.js.map +1 -1
- package/build/plugins/resource/spfx/v3/plugin.d.ts.map +1 -1
- package/build/plugins/resource/spfx/v3/plugin.js +18 -13
- package/build/plugins/resource/spfx/v3/plugin.js.map +1 -1
- package/build/plugins/resource/utils4v2.d.ts.map +1 -1
- package/build/plugins/resource/utils4v2.js +9 -19
- package/build/plugins/resource/utils4v2.js.map +1 -1
- package/build/plugins/solution/fx-solution/arm.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/arm.js +2 -5
- package/build/plugins/solution/fx-solution/arm.js.map +1 -1
- package/build/plugins/solution/fx-solution/commonQuestions.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/commonQuestions.js +5 -21
- package/build/plugins/solution/fx-solution/commonQuestions.js.map +1 -1
- package/build/plugins/solution/fx-solution/constants.d.ts +3 -1
- package/build/plugins/solution/fx-solution/constants.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/constants.js +2 -0
- package/build/plugins/solution/fx-solution/constants.js.map +1 -1
- package/build/plugins/solution/fx-solution/debug/scaffolding.d.ts +2 -0
- package/build/plugins/solution/fx-solution/debug/scaffolding.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/debug/scaffolding.js +3 -1
- package/build/plugins/solution/fx-solution/debug/scaffolding.js.map +1 -1
- package/build/plugins/solution/fx-solution/debug/util/tasks.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/debug/util/tasks.js +1 -2
- package/build/plugins/solution/fx-solution/debug/util/tasks.js.map +1 -1
- package/build/plugins/solution/fx-solution/question.d.ts +1 -0
- package/build/plugins/solution/fx-solution/question.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/question.js +4 -2
- package/build/plugins/solution/fx-solution/question.js.map +1 -1
- package/build/plugins/solution/fx-solution/solution.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/solution.js +89 -69
- package/build/plugins/solution/fx-solution/solution.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/adaptor.d.ts +2 -3
- package/build/plugins/solution/fx-solution/v2/adaptor.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/adaptor.js +3 -6
- package/build/plugins/solution/fx-solution/v2/adaptor.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/checkPermission.js +6 -6
- package/build/plugins/solution/fx-solution/v2/checkPermission.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/collaborationUtil.d.ts +3 -3
- package/build/plugins/solution/fx-solution/v2/collaborationUtil.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/collaborationUtil.js +7 -5
- package/build/plugins/solution/fx-solution/v2/collaborationUtil.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/deploy.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/deploy.js +10 -3
- package/build/plugins/solution/fx-solution/v2/deploy.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/executeUserTask.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/executeUserTask.js +7 -1
- package/build/plugins/solution/fx-solution/v2/executeUserTask.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/getQuestions.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/getQuestions.js +4 -1
- package/build/plugins/solution/fx-solution/v2/getQuestions.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/grantPermission.js +7 -7
- package/build/plugins/solution/fx-solution/v2/grantPermission.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/listCollaborator.js +6 -6
- package/build/plugins/solution/fx-solution/v2/listCollaborator.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/provision.js +7 -2
- package/build/plugins/solution/fx-solution/v2/provision.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/provisionLocal.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/provisionLocal.js +12 -3
- package/build/plugins/solution/fx-solution/v2/provisionLocal.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/publish.d.ts +2 -2
- package/build/plugins/solution/fx-solution/v2/publish.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/publish.js.map +1 -1
- package/build/plugins/solution/fx-solution/v2/solution.d.ts +2 -2
- package/build/plugins/solution/fx-solution/v2/solution.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/utils.d.ts +2 -2
- package/build/plugins/solution/fx-solution/v2/utils.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v2/utils.js +9 -3
- package/build/plugins/solution/fx-solution/v2/utils.js.map +1 -1
- package/build/plugins/solution/fx-solution/v3/addFeature.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v3/provision.d.ts +2 -2
- package/build/plugins/solution/fx-solution/v3/provision.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v3/provision.js +13 -8
- package/build/plugins/solution/fx-solution/v3/provision.js.map +1 -1
- package/build/plugins/solution/fx-solution/v3/publish.d.ts +3 -3
- package/build/plugins/solution/fx-solution/v3/publish.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v3/publish.js.map +1 -1
- package/build/plugins/solution/fx-solution/v3/solution.d.ts +2 -2
- package/build/plugins/solution/fx-solution/v3/solution.d.ts.map +1 -1
- package/build/plugins/solution/fx-solution/v3/solution.js.map +1 -1
- package/build/plugins/solution/spfx-solution/addFeature.d.ts +2 -2
- package/build/plugins/solution/spfx-solution/addFeature.d.ts.map +1 -1
- package/build/plugins/solution/spfx-solution/addFeature.js.map +1 -1
- package/package.json +4 -4
- package/resource/package.nls.cs.json +884 -641
- package/resource/package.nls.de.json +884 -641
- package/resource/package.nls.es.json +884 -641
- package/resource/package.nls.fr.json +884 -641
- package/resource/package.nls.it.json +884 -641
- package/resource/package.nls.ja.json +884 -641
- package/resource/package.nls.json +11 -2
- package/resource/package.nls.ko.json +884 -641
- package/resource/package.nls.pl.json +884 -641
- package/resource/package.nls.pt-BR.json +884 -641
- package/resource/package.nls.ru.json +884 -641
- package/resource/package.nls.tr.json +884 -641
- package/resource/package.nls.zh-Hans.json +884 -641
- package/resource/package.nls.zh-Hant.json +884 -641
- package/templates/bicep/azureFunction.config.module.bicep +62 -0
- package/templates/bicep/azureFunction.config.orchestration.bicep +12 -0
- package/templates/bicep/azureFunction.parameters.json +4 -0
- package/templates/bicep/azureFunction.provision.module.bicep +97 -0
- package/templates/bicep/azureFunction.provision.orchestration.bicep +17 -0
- package/templates/bicep/azureSql.provisionDatabase.orchestration.bicep +1 -1
- package/templates/bicep/azureStorage.provision.module.bicep +25 -0
- package/templates/bicep/azureStorage.provision.orchestration.bicep +15 -0
- package/templates/bicep/azureWebApp.provision.module.bicep +12 -5
- package/templates/bicep/identity.provision.module.bicep +15 -0
- package/templates/bicep/identity.provision.orchestration.bicep +14 -0
- package/templates/bicep/main.bicep +1 -1
- package/templates/fallback/bot.csharp.command-and-response.zip +0 -0
- package/templates/fallback/bot.csharp.default.zip +0 -0
- package/templates/fallback/bot.csharp.notification-function-base.zip +0 -0
- package/templates/fallback/bot.csharp.notification-trigger-http.zip +0 -0
- package/templates/fallback/bot.csharp.notification-trigger-timer.zip +0 -0
- package/templates/fallback/bot.csharp.notification-webapi.zip +0 -0
- package/templates/fallback/bot.js.command-and-response.zip +0 -0
- package/templates/fallback/bot.js.default.zip +0 -0
- package/templates/fallback/bot.js.m365.zip +0 -0
- package/templates/fallback/bot.js.notification-function-base.zip +0 -0
- package/templates/fallback/bot.js.notification-restify.zip +0 -0
- package/templates/fallback/bot.js.notification-trigger-http.zip +0 -0
- package/templates/fallback/bot.js.notification-trigger-timer.zip +0 -0
- package/templates/fallback/bot.ts.command-and-response.zip +0 -0
- package/templates/fallback/bot.ts.default.zip +0 -0
- package/templates/fallback/bot.ts.m365.zip +0 -0
- package/templates/fallback/bot.ts.notification-function-base.zip +0 -0
- package/templates/fallback/bot.ts.notification-restify.zip +0 -0
- package/templates/fallback/bot.ts.notification-trigger-http.zip +0 -0
- package/templates/fallback/bot.ts.notification-trigger-timer.zip +0 -0
- package/templates/fallback/function-base.js.default.zip +0 -0
- package/templates/fallback/function-base.ts.default.zip +0 -0
- package/templates/fallback/function-triggers.js.HTTPTrigger.zip +0 -0
- package/templates/fallback/function-triggers.ts.HTTPTrigger.zip +0 -0
- package/templates/fallback/tab.csharp.default.zip +0 -0
- package/templates/fallback/tab.js.default.zip +0 -0
- package/templates/fallback/tab.js.m365.zip +0 -0
- package/templates/fallback/tab.js.non-sso.zip +0 -0
- package/templates/fallback/tab.ts.default.zip +0 -0
- package/templates/fallback/tab.ts.m365.zip +0 -0
- package/templates/fallback/tab.ts.non-sso.zip +0 -0
- package/templates/plugins/resource/hosting/bicep/function/functionProvision.template.bicep +12 -6
- package/build/component/resource/azureSql.d.ts.map +0 -1
- package/build/component/resource/azureSql.js +0 -119
- package/build/component/resource/azureSql.js.map +0 -1
- package/templates/fallback/blazor-base.csharp.default.zip +0 -0
- package/templates/fallback/bot.ts.notification.zip +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ContextV3, InputsWithProjectPath, FunctionAction, ProvisionContextV3, v3, AzureAccountProvider, LogProvider, Result, FxError, Effect, QTreeNode } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { ManagementClient } from "../clients/management";
|
|
3
|
+
import { SqlClient } from "../clients/sql";
|
|
4
|
+
import { TokenInfo } from "../utils/common";
|
|
5
|
+
export declare class ConfigureActionImplement {
|
|
6
|
+
static readonly source = "SQL";
|
|
7
|
+
static readonly stage = "post-provision";
|
|
8
|
+
static readonly telemetryComponentName = "fx-resource-azure-sql";
|
|
9
|
+
static readonly progressTitle = "Configuring SQL";
|
|
10
|
+
static readonly progressMessage: {
|
|
11
|
+
addAadmin: string;
|
|
12
|
+
addUser: string;
|
|
13
|
+
};
|
|
14
|
+
static readonly loggerPrefix = "[SQL Component]";
|
|
15
|
+
static readonly logFormatter: (message: string) => string;
|
|
16
|
+
static execute(context: ContextV3, inputs: InputsWithProjectPath): Promise<Result<Effect[], FxError>>;
|
|
17
|
+
static get(): FunctionAction;
|
|
18
|
+
}
|
|
19
|
+
export declare class UtilFunctions {
|
|
20
|
+
static CheckAndSetAadAdmin(client: ManagementClient, aadAdmin: string, objectId: string, tenantId: string): Promise<boolean>;
|
|
21
|
+
static parseLoginToken(azureAccountProvider: AzureAccountProvider): Promise<TokenInfo>;
|
|
22
|
+
static getSkipAddingUser(config: v3.AzureSolutionConfig, azureAccountProvider: AzureAccountProvider): Promise<boolean>;
|
|
23
|
+
static getIdentity(ctx: ProvisionContextV3): string;
|
|
24
|
+
static addDatabaseUser(logProvider: LogProvider, sqlClient: SqlClient, managementClient: ManagementClient): Promise<void>;
|
|
25
|
+
static buildQuestionNode(): QTreeNode;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=configure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/configure.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,qBAAqB,EAErB,cAAc,EACd,kBAAkB,EAClB,EAAE,EACF,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACV,MAAM,wBAAwB,CAAC;AAahC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C,OAAO,EAAc,SAAS,EAAY,MAAM,iBAAiB,CAAC;AAClE,qBAAa,wBAAwB;IACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAS;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,oBAAoB;IACzC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,2BAA2B;IACjE,MAAM,CAAC,QAAQ,CAAC,aAAa,qBAAqB;IAClD,MAAM,CAAC,QAAQ,CAAC,eAAe;;;MAG7B;IACF,MAAM,CAAC,QAAQ,CAAC,YAAY,qBAAqB;IACjD,MAAM,CAAC,QAAQ,CAAC,YAAY,YAAa,MAAM,YACS;WAiB3C,OAAO,CAClB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAwErC,MAAM,CAAC,GAAG,IAAI,cAAc;CAU7B;AAED,qBAAa,aAAa;WACX,mBAAmB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;WAQN,eAAe,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;WAgB/E,iBAAiB,CAC5B,MAAM,EAAE,EAAE,CAAC,mBAAmB,EAC9B,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,OAAO,CAAC;IASnB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM;WAatC,eAAe,CAC1B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC;IAgChB,MAAM,CAAC,iBAAiB;CASzB"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.UtilFunctions = exports.ConfigureActionImplement = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const lib_1 = require("@feathersjs/hooks/lib");
|
|
8
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
|
+
const typedi_1 = tslib_1.__importDefault(require("typedi"));
|
|
10
|
+
const constants_1 = require("../../../constants");
|
|
11
|
+
const logger_1 = require("../../../middleware/logger");
|
|
12
|
+
const progressbar_1 = require("../../../middleware/progressbar");
|
|
13
|
+
const runWithCatchError_1 = require("../../../middleware/runWithCatchError");
|
|
14
|
+
const telemetry_1 = require("../../../middleware/telemetry");
|
|
15
|
+
const management_1 = require("../clients/management");
|
|
16
|
+
const sql_1 = require("../clients/sql");
|
|
17
|
+
const config_1 = require("../config");
|
|
18
|
+
const constants_2 = require("../constants");
|
|
19
|
+
const errors_1 = require("../errors");
|
|
20
|
+
const questions_1 = require("../questions");
|
|
21
|
+
const results_1 = require("../results");
|
|
22
|
+
const common_1 = require("../utils/common");
|
|
23
|
+
class ConfigureActionImplement {
|
|
24
|
+
static async execute(context, inputs) {
|
|
25
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
26
|
+
const ctx = context;
|
|
27
|
+
const actionContext = context;
|
|
28
|
+
const solutionConfig = ctx.envInfo.state.solution;
|
|
29
|
+
const state = ctx.envInfo.state[constants_1.ComponentNames.AzureSQL];
|
|
30
|
+
const sqlMgrConfig = config_1.LoadManagementConfig(state);
|
|
31
|
+
const sqlMgrClient = await management_1.ManagementClient.create(ctx.tokenProvider.azureAccountProvider, sqlMgrConfig);
|
|
32
|
+
(_a = actionContext.logger) === null || _a === void 0 ? void 0 : _a.info(constants_2.Message.addFirewall);
|
|
33
|
+
await sqlMgrClient.addLocalFirewallRule();
|
|
34
|
+
const adminInfo = await UtilFunctions.parseLoginToken(ctx.tokenProvider.azureAccountProvider);
|
|
35
|
+
(_b = actionContext.progressBar) === null || _b === void 0 ? void 0 : _b.next(ConfigureActionImplement.progressMessage.addAadmin);
|
|
36
|
+
const existAdmin = await UtilFunctions.CheckAndSetAadAdmin(sqlMgrClient, adminInfo.name, adminInfo.objectId, solutionConfig.tenantId);
|
|
37
|
+
if (existAdmin) {
|
|
38
|
+
(_c = actionContext.logger) === null || _c === void 0 ? void 0 : _c.info(constants_2.Message.skipAddAadAdmin);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
(_d = actionContext.logger) === null || _d === void 0 ? void 0 : _d.info(constants_2.Message.addSqlAadAdmin);
|
|
42
|
+
}
|
|
43
|
+
// update outputKeys
|
|
44
|
+
const databases = config_1.loadDatabases(state);
|
|
45
|
+
const resource = typedi_1.default.get(constants_1.ComponentNames.AzureSQL);
|
|
46
|
+
resource.finalOutputKeys.push(...Object.keys(databases));
|
|
47
|
+
const identity = UtilFunctions.getIdentity(ctx);
|
|
48
|
+
const sqlConfig = config_1.LoadSqlConfig(state, identity);
|
|
49
|
+
const skipAddingUser = await UtilFunctions.getSkipAddingUser(solutionConfig, ctx.tokenProvider.azureAccountProvider);
|
|
50
|
+
(_e = actionContext.telemetry) === null || _e === void 0 ? void 0 : _e.addProperty(constants_2.Telemetry.properties.skipAddingUser, skipAddingUser ? constants_1.TelemetryConstants.values.yes : constants_1.TelemetryConstants.values.no);
|
|
51
|
+
(_f = actionContext.telemetry) === null || _f === void 0 ? void 0 : _f.addProperty(constants_2.Telemetry.properties.dbCount, sqlConfig.databases.length.toString());
|
|
52
|
+
if (!skipAddingUser) {
|
|
53
|
+
if (adminInfo.userType === common_1.UserType.User) {
|
|
54
|
+
(_g = actionContext.progressBar) === null || _g === void 0 ? void 0 : _g.next(ConfigureActionImplement.progressMessage.addUser);
|
|
55
|
+
const sqlClient = await sql_1.SqlClient.create(ctx.tokenProvider.azureAccountProvider, sqlConfig);
|
|
56
|
+
(_h = ctx.logProvider) === null || _h === void 0 ? void 0 : _h.info(constants_2.Message.addDatabaseUser(identity));
|
|
57
|
+
await UtilFunctions.addDatabaseUser(ctx.logProvider, sqlClient, sqlMgrClient);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const message = errors_1.ErrorMessage.ServicePrincipalWarning(identity, sqlConfig.databases.join(","));
|
|
61
|
+
(_j = actionContext.logger) === null || _j === void 0 ? void 0 : _j.warning(`${message}. You can follow ${constants_2.HelpLinks.default} to add database user ${identity}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
(_k = actionContext.logger) === null || _k === void 0 ? void 0 : _k.warning(`Skip adding database user. You can follow ${constants_2.HelpLinks.default} to add database user ${identity}`);
|
|
66
|
+
}
|
|
67
|
+
await sqlMgrClient.deleteLocalFirewallRule();
|
|
68
|
+
return teamsfx_api_1.ok([{ type: "service", name: "azure", remarks: "configure azure-sql" }]);
|
|
69
|
+
}
|
|
70
|
+
static get() {
|
|
71
|
+
return {
|
|
72
|
+
name: `${constants_1.ComponentNames.AzureSQL}.${constants_1.ActionNames.configure}`,
|
|
73
|
+
type: constants_1.ActionTypeFunction,
|
|
74
|
+
plan: (context, inputs) => {
|
|
75
|
+
return teamsfx_api_1.ok([{ type: "service", name: "azure", remarks: "configure azure-sql" }]);
|
|
76
|
+
},
|
|
77
|
+
execute: ConfigureActionImplement.execute,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
ConfigureActionImplement.source = "SQL";
|
|
82
|
+
ConfigureActionImplement.stage = "post-provision";
|
|
83
|
+
ConfigureActionImplement.telemetryComponentName = "fx-resource-azure-sql";
|
|
84
|
+
ConfigureActionImplement.progressTitle = "Configuring SQL";
|
|
85
|
+
ConfigureActionImplement.progressMessage = {
|
|
86
|
+
addAadmin: "Configure aad admin for SQL",
|
|
87
|
+
addUser: "Configure database user",
|
|
88
|
+
};
|
|
89
|
+
ConfigureActionImplement.loggerPrefix = "[SQL Component]";
|
|
90
|
+
ConfigureActionImplement.logFormatter = (message) => `${ConfigureActionImplement.loggerPrefix} ${message}`;
|
|
91
|
+
tslib_1.__decorate([
|
|
92
|
+
lib_1.hooks([
|
|
93
|
+
telemetry_1.TelemetryMW(telemetry_1.ActionTelemetryImplement.bind(null, ConfigureActionImplement.stage, ConfigureActionImplement.telemetryComponentName)),
|
|
94
|
+
runWithCatchError_1.RunWithCatchErrorMW(ConfigureActionImplement.source, runWithCatchError_1.ActionErrorHandler),
|
|
95
|
+
progressbar_1.ProgressBarMW(ConfigureActionImplement.progressTitle, Object.keys(ConfigureActionImplement.progressMessage).length),
|
|
96
|
+
logger_1.LoggerMW(logger_1.ActionLogger.bind(null, ConfigureActionImplement.logFormatter)),
|
|
97
|
+
]),
|
|
98
|
+
tslib_1.__metadata("design:type", Function),
|
|
99
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
100
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
101
|
+
], ConfigureActionImplement, "execute", null);
|
|
102
|
+
exports.ConfigureActionImplement = ConfigureActionImplement;
|
|
103
|
+
class UtilFunctions {
|
|
104
|
+
static async CheckAndSetAadAdmin(client, aadAdmin, objectId, tenantId) {
|
|
105
|
+
const existAdmin = await client.existAadAdmin(aadAdmin);
|
|
106
|
+
if (!existAdmin) {
|
|
107
|
+
await client.addAADadmin(tenantId, objectId, aadAdmin);
|
|
108
|
+
}
|
|
109
|
+
return existAdmin;
|
|
110
|
+
}
|
|
111
|
+
static async parseLoginToken(azureAccountProvider) {
|
|
112
|
+
// get login user info to set aad admin in sql
|
|
113
|
+
try {
|
|
114
|
+
const credential = await azureAccountProvider.getAccountCredentialAsync();
|
|
115
|
+
const token = await credential.getToken();
|
|
116
|
+
const accessToken = token.accessToken;
|
|
117
|
+
return common_1.parseToken(accessToken);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
throw results_1.SqlResultFactory.SystemError(errors_1.ErrorMessage.SqlUserInfoError.name, errors_1.ErrorMessage.SqlUserInfoError.message(), error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
static async getSkipAddingUser(config, azureAccountProvider) {
|
|
124
|
+
const skipAddingUser = config[constants_2.Constants.skipAddingSqlUser];
|
|
125
|
+
if (skipAddingUser === undefined) {
|
|
126
|
+
return (await (azureAccountProvider === null || azureAccountProvider === void 0 ? void 0 : azureAccountProvider.getIdentityCredentialAsync())) ? false : true;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return skipAddingUser;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
static getIdentity(ctx) {
|
|
133
|
+
const config = ctx.envInfo.state[constants_1.ComponentNames.Identity];
|
|
134
|
+
const identity = config[constants_2.Constants.identityName];
|
|
135
|
+
if (!identity) {
|
|
136
|
+
const error = results_1.SqlResultFactory.SystemError(errors_1.ErrorMessage.SqlGetConfigError.name, errors_1.ErrorMessage.SqlGetConfigError.message(constants_2.Constants.identityPlugin, constants_2.Constants.identityName));
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
return identity;
|
|
140
|
+
}
|
|
141
|
+
static async addDatabaseUser(logProvider, sqlClient, managementClient) {
|
|
142
|
+
let retryCount = 0;
|
|
143
|
+
const databaseWithUser = {};
|
|
144
|
+
sqlClient.config.databases.forEach((element) => {
|
|
145
|
+
databaseWithUser[element] = false;
|
|
146
|
+
});
|
|
147
|
+
while (true) {
|
|
148
|
+
try {
|
|
149
|
+
for (const database in databaseWithUser) {
|
|
150
|
+
if (!databaseWithUser[database]) {
|
|
151
|
+
await sqlClient.addDatabaseUser(database);
|
|
152
|
+
databaseWithUser[database] = true;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (!sql_1.SqlClient.isFireWallError(error === null || error === void 0 ? void 0 : error.innerError) ||
|
|
159
|
+
retryCount >= constants_2.Constants.maxRetryTimes) {
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
retryCount++;
|
|
164
|
+
logProvider.warning(`[${constants_2.Constants.pluginName}] Retry adding new firewall rule to access azure sql, because the local IP address has changed after added firewall rule for it. [Retry time: ${retryCount}]`);
|
|
165
|
+
await managementClient.addLocalFirewallRule();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
static buildQuestionNode() {
|
|
171
|
+
const sqlNode = new teamsfx_api_1.QTreeNode({
|
|
172
|
+
type: "group",
|
|
173
|
+
});
|
|
174
|
+
sqlNode.addChild(new teamsfx_api_1.QTreeNode(questions_1.adminNameQuestion));
|
|
175
|
+
sqlNode.addChild(new teamsfx_api_1.QTreeNode(questions_1.adminPasswordQuestion));
|
|
176
|
+
sqlNode.addChild(new teamsfx_api_1.QTreeNode(questions_1.confirmPasswordQuestion));
|
|
177
|
+
return sqlNode;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.UtilFunctions = UtilFunctions;
|
|
181
|
+
//# sourceMappingURL=configure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/configure.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,+CAA8C;AAC9C,wDAagC;AAChC,4DAA+B;AAC/B,kDAK4B;AAC5B,uDAAoE;AACpE,iEAAgE;AAChE,6EAAgG;AAChG,6DAAsF;AAEtF,sDAAyD;AACzD,wCAA2C;AAC3C,sCAA+E;AAC/E,4CAAwE;AACxE,sCAAyC;AACzC,4CAAiG;AACjG,wCAA8C;AAC9C,4CAAkE;AAClE,MAAa,wBAAwB;IA4BnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,OAAkB,EAClB,MAA6B;;QAE7B,MAAM,GAAG,GAAG,OAA6B,CAAC;QAC1C,MAAM,aAAa,GAAG,OAAwB,CAAC;QAC/C,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAkC,CAAC;QAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,0BAAc,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,6BAAoB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,6BAAgB,CAAC,MAAM,CAChD,GAAG,CAAC,aAAa,CAAC,oBAAoB,EACtC,YAAY,CACb,CAAC;QAEF,MAAA,aAAa,CAAC,MAAM,0CAAE,IAAI,CAAC,mBAAO,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;QAE1C,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC9F,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,mBAAmB,CACxD,YAAY,EACZ,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,QAAQ,EAClB,cAAc,CAAC,QAAQ,CACxB,CAAC;QACF,IAAI,UAAU,EAAE;YACd,MAAA,aAAa,CAAC,MAAM,0CAAE,IAAI,CAAC,mBAAO,CAAC,eAAe,CAAC,CAAC;SACrD;aAAM;YACL,MAAA,aAAa,CAAC,MAAM,0CAAE,IAAI,CAAC,mBAAO,CAAC,cAAc,CAAC,CAAC;SACpD;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,sBAAa,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,gBAAS,CAAC,GAAG,CAAC,0BAAc,CAAC,QAAQ,CAAQ,CAAC;QAC/D,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,sBAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAC1D,cAAc,EACd,GAAG,CAAC,aAAa,CAAC,oBAAoB,CACvC,CAAC;QACF,MAAA,aAAa,CAAC,SAAS,0CAAE,WAAW,CAClC,qBAAS,CAAC,UAAU,CAAC,cAAc,EACnC,cAAc,CAAC,CAAC,CAAC,8BAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,8BAAkB,CAAC,MAAM,CAAC,EAAE,CAC9E,CAAC;QACF,MAAA,aAAa,CAAC,SAAS,0CAAE,WAAW,CAClC,qBAAS,CAAC,UAAU,CAAC,OAAO,EAC5B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CACtC,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,SAAS,CAAC,QAAQ,KAAK,iBAAQ,CAAC,IAAI,EAAE;gBACxC,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAClF,MAAM,SAAS,GAAG,MAAM,eAAS,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;gBAC5F,MAAA,GAAG,CAAC,WAAW,0CAAE,IAAI,CAAC,mBAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACzD,MAAM,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;aAC/E;iBAAM;gBACL,MAAM,OAAO,GAAG,qBAAY,CAAC,uBAAuB,CAClD,QAAQ,EACR,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9B,CAAC;gBACF,MAAA,aAAa,CAAC,MAAM,0CAAE,OAAO,CAC3B,GAAG,OAAO,oBAAoB,qBAAS,CAAC,OAAO,yBAAyB,QAAQ,EAAE,CACnF,CAAC;aACH;SACF;aAAM;YACL,MAAA,aAAa,CAAC,MAAM,0CAAE,OAAO,CAC3B,6CAA6C,qBAAS,CAAC,OAAO,yBAAyB,QAAQ,EAAE,CAClG,CAAC;SACH;QACD,MAAM,YAAY,CAAC,uBAAuB,EAAE,CAAC;QAC7C,OAAO,gBAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO;YACL,IAAI,EAAE,GAAG,0BAAc,CAAC,QAAQ,IAAI,uBAAW,CAAC,SAAS,EAAE;YAC3D,IAAI,EAAE,8BAAkB;YACxB,IAAI,EAAE,CAAC,OAAkB,EAAE,MAA6B,EAAE,EAAE;gBAC1D,OAAO,gBAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,EAAE,wBAAwB,CAAC,OAAO;SAC1C,CAAC;IACJ,CAAC;;AA/Ge,+BAAM,GAAG,KAAK,CAAC;AACf,8BAAK,GAAG,gBAAgB,CAAC;AACzB,+CAAsB,GAAG,uBAAuB,CAAC;AACjD,sCAAa,GAAG,iBAAiB,CAAC;AAClC,wCAAe,GAAG;IAChC,SAAS,EAAE,6BAA6B;IACxC,OAAO,EAAE,yBAAyB;CACnC,CAAC;AACc,qCAAY,GAAG,iBAAiB,CAAC;AACjC,qCAAY,GAAG,CAAC,OAAe,EAAE,EAAE,CACjD,GAAG,wBAAwB,CAAC,YAAY,IAAI,OAAO,EAAE,CAAC;AAiBxD;IAfC,WAAK,CAAC;QACL,uBAAW,CACT,oCAAwB,CAAC,IAAI,CAC3B,IAAI,EACJ,wBAAwB,CAAC,KAAK,EAC9B,wBAAwB,CAAC,sBAAsB,CAChD,CACF;QACD,uCAAmB,CAAC,wBAAwB,CAAC,MAAM,EAAE,sCAAkB,CAAC;QACxE,2BAAa,CACX,wBAAwB,CAAC,aAAa,EACtC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,MAAM,CAC7D;QACD,iBAAQ,CAAC,qBAAY,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,YAAY,CAAC,CAAC;KACzE,CAAC;;;;6CA0ED;AArGH,4DAiHC;AAED,MAAa,aAAa;IACxB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,MAAwB,EACxB,QAAgB,EAChB,QAAgB,EAChB,QAAgB;QAEhB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACxD;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,oBAA0C;QACrE,8CAA8C;QAC9C,IAAI;YACF,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,yBAAyB,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,MAAM,UAAW,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YACtC,OAAO,mBAAU,CAAC,WAAW,CAAC,CAAC;SAChC;QAAC,OAAO,KAAU,EAAE;YACnB,MAAM,0BAAgB,CAAC,WAAW,CAChC,qBAAY,CAAC,gBAAgB,CAAC,IAAI,EAClC,qBAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,EACvC,KAAK,CACN,CAAC;SACH;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAC5B,MAA8B,EAC9B,oBAA0C;QAE1C,MAAM,cAAc,GAAG,MAAM,CAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,OAAO,CAAC,MAAM,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,0BAA0B,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;SAClF;aAAM;YACL,OAAO,cAAyB,CAAC;SAClC;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAuB;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,0BAAc,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAS,CAAC,YAAY,CAAW,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,KAAK,GAAG,0BAAgB,CAAC,WAAW,CACxC,qBAAY,CAAC,iBAAiB,CAAC,IAAI,EACnC,qBAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAS,CAAC,cAAc,EAAE,qBAAS,CAAC,YAAY,CAAC,CACzF,CAAC;YACF,MAAM,KAAK,CAAC;SACb;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAC1B,WAAwB,EACxB,SAAoB,EACpB,gBAAkC;QAElC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,gBAAgB,GAA+B,EAAE,CAAC;QACxD,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7C,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;oBACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;wBAC/B,MAAM,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAC1C,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;qBACnC;iBACF;gBACD,OAAO;aACR;YAAC,OAAO,KAAK,EAAE;gBACd,IACE,CAAC,eAAS,CAAC,eAAe,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC;oBAC7C,UAAU,IAAI,qBAAS,CAAC,aAAa,EACrC;oBACA,MAAM,KAAK,CAAC;iBACb;qBAAM;oBACL,UAAU,EAAE,CAAC;oBACb,WAAW,CAAC,OAAO,CACjB,IAAI,qBAAS,CAAC,UAAU,iJAAiJ,UAAU,GAAG,CACvL,CAAC;oBACF,MAAM,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;iBAC/C;aACF;SACF;IACH,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,MAAM,OAAO,GAAG,IAAI,uBAAS,CAAC;YAC5B,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,CAAC,IAAI,uBAAS,CAAC,6BAAiB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,uBAAS,CAAC,iCAAqB,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,uBAAS,CAAC,mCAAuB,CAAC,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AApGD,sCAoGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateBicep.d.ts","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/generateBicep.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,cAAc,EACf,MAAM,wBAAwB,CAAC;AAYhC,wBAAgB,sBAAsB,IAAI,cAAc,CA+CvD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.GetActionGenerateBicep = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
8
|
+
const path = tslib_1.__importStar(require("path"));
|
|
9
|
+
const common_1 = require("../../../../common");
|
|
10
|
+
const folder_1 = require("../../../../folder");
|
|
11
|
+
const constants_1 = require("../../../constants");
|
|
12
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
13
|
+
function GetActionGenerateBicep() {
|
|
14
|
+
return {
|
|
15
|
+
name: `${constants_1.ComponentNames.AzureSQL}.${constants_1.ActionNames.generateBicep}`,
|
|
16
|
+
type: constants_1.ActionTypeFunction,
|
|
17
|
+
plan: async (context, inputs) => {
|
|
18
|
+
const bicep = {
|
|
19
|
+
type: "bicep",
|
|
20
|
+
Provision: {
|
|
21
|
+
Modules: { azureSql: constants_1.BicepConstants.writeFile },
|
|
22
|
+
Orchestration: constants_1.BicepConstants.writeFile,
|
|
23
|
+
},
|
|
24
|
+
Parameters: {},
|
|
25
|
+
};
|
|
26
|
+
return teamsfx_api_1.ok([bicep]);
|
|
27
|
+
},
|
|
28
|
+
execute: async (context, inputs) => {
|
|
29
|
+
const prefix = inputs.provisionType === "database"
|
|
30
|
+
? "azureSql.provisionDatabase"
|
|
31
|
+
: "azureSql.provisionServer";
|
|
32
|
+
const mPath = path.join(folder_1.getTemplatesFolder(), "bicep", `${prefix}.module.bicep`);
|
|
33
|
+
const oPath = path.join(folder_1.getTemplatesFolder(), "bicep", `${prefix}.orchestration.bicep`);
|
|
34
|
+
let module = await fs_extra_1.default.readFile(mPath, "utf-8");
|
|
35
|
+
let orch = await fs_extra_1.default.readFile(oPath, "utf-8");
|
|
36
|
+
const suffix = common_1.getUuid().substring(0, 6);
|
|
37
|
+
const compileCtx = {
|
|
38
|
+
suffix: suffix,
|
|
39
|
+
};
|
|
40
|
+
if (inputs.provisionType === "database") {
|
|
41
|
+
module = await common_1.generateBicepFromFile(mPath, compileCtx);
|
|
42
|
+
orch = await common_1.generateBicepFromFile(oPath, compileCtx);
|
|
43
|
+
}
|
|
44
|
+
const bicep = {
|
|
45
|
+
type: "bicep",
|
|
46
|
+
Provision: {
|
|
47
|
+
Modules: { azureSql: module },
|
|
48
|
+
Orchestration: orch,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
if (inputs.provisionType === "server") {
|
|
52
|
+
bicep.Parameters = await fs_extra_1.default.readJson(path.join(folder_1.getTemplatesFolder(), "bicep", "azureSql.parameters.json"));
|
|
53
|
+
}
|
|
54
|
+
return teamsfx_api_1.ok([bicep]);
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
exports.GetActionGenerateBicep = GetActionGenerateBicep;
|
|
59
|
+
//# sourceMappingURL=generateBicep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateBicep.js","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/generateBicep.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,wDAMgC;AAChC,mDAA6B;AAC7B,+CAAoE;AACpE,+CAAwD;AACxD,kDAK4B;AAC5B,gEAA0B;AAE1B,SAAgB,sBAAsB;IACpC,OAAO;QACL,IAAI,EAAE,GAAG,0BAAc,CAAC,QAAQ,IAAI,uBAAW,CAAC,aAAa,EAAE;QAC/D,IAAI,EAAE,8BAAkB;QACxB,IAAI,EAAE,KAAK,EAAE,OAAkB,EAAE,MAA6B,EAAE,EAAE;YAChE,MAAM,KAAK,GAAU;gBACnB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE;oBACT,OAAO,EAAE,EAAE,QAAQ,EAAE,0BAAc,CAAC,SAAS,EAAE;oBAC/C,aAAa,EAAE,0BAAc,CAAC,SAAS;iBACxC;gBACD,UAAU,EAAE,EAAE;aACf,CAAC;YACF,OAAO,gBAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAkB,EAAE,MAA6B,EAAE,EAAE;YACnE,MAAM,MAAM,GACV,MAAM,CAAC,aAAa,KAAK,UAAU;gBACjC,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,0BAA0B,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,2BAAkB,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,2BAAkB,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CAAC,CAAC;YACxF,IAAI,MAAM,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,gBAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG;gBACjB,MAAM,EAAE,MAAM;aACf,CAAC;YACF,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE;gBACvC,MAAM,GAAG,MAAM,8BAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACxD,IAAI,GAAG,MAAM,8BAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACvD;YACD,MAAM,KAAK,GAAU;gBACnB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE;oBACT,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;oBAC7B,aAAa,EAAE,IAAI;iBACpB;aACF,CAAC;YACF,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE;gBACrC,KAAK,CAAC,UAAU,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAClC,IAAI,CAAC,IAAI,CAAC,2BAAkB,EAAE,EAAE,OAAO,EAAE,0BAA0B,CAAC,CACrE,CAAC;aACH;YACD,OAAO,gBAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AA/CD,wDA+CC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ContextV3, InputsWithProjectPath, FunctionAction, Effect, FxError, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
export declare class ProvisionActionImplement {
|
|
3
|
+
static readonly source = "SQL";
|
|
4
|
+
static readonly stage = "pre-provision";
|
|
5
|
+
static readonly telemetryComponentName = "fx-resource-azure-sql";
|
|
6
|
+
static readonly loggerPrefix = "[SQL Component]";
|
|
7
|
+
static readonly logFormatter: (message: string) => string;
|
|
8
|
+
static execute(context: ContextV3, inputs: InputsWithProjectPath): Promise<Result<Effect[], FxError>>;
|
|
9
|
+
static get(): FunctionAction;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=provision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/provision.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,qBAAqB,EAErB,cAAc,EAEd,MAAM,EACN,OAAO,EACP,MAAM,EAEP,MAAM,wBAAwB,CAAC;AAYhC,qBAAa,wBAAwB;IACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAS;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,mBAAmB;IACxC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,2BAA2B;IACjE,MAAM,CAAC,QAAQ,CAAC,YAAY,qBAAqB;IACjD,MAAM,CAAC,QAAQ,CAAC,YAAY,YAAa,MAAM,YACS;WAa3C,OAAO,CAClB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAgCrC,MAAM,CAAC,GAAG,IAAI,cAAc;CAa7B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.ProvisionActionImplement = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const lib_1 = require("@feathersjs/hooks/lib");
|
|
8
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
|
+
const constants_1 = require("../../../constants");
|
|
10
|
+
const logger_1 = require("../../../middleware/logger");
|
|
11
|
+
const runWithCatchError_1 = require("../../../middleware/runWithCatchError");
|
|
12
|
+
const telemetry_1 = require("../../../middleware/telemetry");
|
|
13
|
+
const management_1 = require("../clients/management");
|
|
14
|
+
const config_1 = require("../config");
|
|
15
|
+
const constants_2 = require("../constants");
|
|
16
|
+
const errors_1 = require("../errors");
|
|
17
|
+
const results_1 = require("../results");
|
|
18
|
+
const configure_1 = require("./configure");
|
|
19
|
+
class ProvisionActionImplement {
|
|
20
|
+
static async execute(context, inputs) {
|
|
21
|
+
var _a;
|
|
22
|
+
var _b, _c;
|
|
23
|
+
const ctx = context;
|
|
24
|
+
const state = ((_a = (_b = ctx.envInfo.state)[_c = constants_1.ComponentNames.AzureSQL]) !== null && _a !== void 0 ? _a : (_b[_c] = {}));
|
|
25
|
+
config_1.removeDatabases(state);
|
|
26
|
+
let shouldAsk;
|
|
27
|
+
if (state.sqlResourceId) {
|
|
28
|
+
const sqlMgrConfig = config_1.LoadManagementConfig(state);
|
|
29
|
+
const sqlMgrClient = await management_1.ManagementClient.create(ctx.tokenProvider.azureAccountProvider, sqlMgrConfig);
|
|
30
|
+
shouldAsk = !(await sqlMgrClient.existAzureSQL());
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
shouldAsk = true;
|
|
34
|
+
}
|
|
35
|
+
if (shouldAsk) {
|
|
36
|
+
const node = configure_1.UtilFunctions.buildQuestionNode();
|
|
37
|
+
const res = await teamsfx_api_1.traverse(node, inputs, ctx.userInteraction);
|
|
38
|
+
if (res.isErr()) {
|
|
39
|
+
throw results_1.SqlResultFactory.UserError(errors_1.ErrorMessage.SqlAskInputError.name, errors_1.ErrorMessage.SqlAskInputError.message(), res.error);
|
|
40
|
+
}
|
|
41
|
+
state.admin = inputs[constants_2.Constants.questionKey.adminName];
|
|
42
|
+
state.adminPassword = inputs[constants_2.Constants.questionKey.adminPassword];
|
|
43
|
+
}
|
|
44
|
+
return teamsfx_api_1.ok([{ type: "service", name: "azure", remarks: "configure azure-sql" }]);
|
|
45
|
+
}
|
|
46
|
+
static get() {
|
|
47
|
+
return {
|
|
48
|
+
name: `${constants_1.ComponentNames.AzureSQL}.${constants_1.ActionNames.provision}`,
|
|
49
|
+
type: constants_1.ActionTypeFunction,
|
|
50
|
+
question: (context, inputs) => {
|
|
51
|
+
return teamsfx_api_1.ok(undefined);
|
|
52
|
+
},
|
|
53
|
+
plan: (context, inputs) => {
|
|
54
|
+
return teamsfx_api_1.ok(["collect user inputs for sql account"]);
|
|
55
|
+
},
|
|
56
|
+
execute: ProvisionActionImplement.execute,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
ProvisionActionImplement.source = "SQL";
|
|
61
|
+
ProvisionActionImplement.stage = "pre-provision";
|
|
62
|
+
ProvisionActionImplement.telemetryComponentName = "fx-resource-azure-sql";
|
|
63
|
+
ProvisionActionImplement.loggerPrefix = "[SQL Component]";
|
|
64
|
+
ProvisionActionImplement.logFormatter = (message) => `${ProvisionActionImplement.loggerPrefix} ${message}`;
|
|
65
|
+
tslib_1.__decorate([
|
|
66
|
+
lib_1.hooks([
|
|
67
|
+
telemetry_1.TelemetryMW(telemetry_1.ActionTelemetryImplement.bind(null, ProvisionActionImplement.stage, ProvisionActionImplement.telemetryComponentName)),
|
|
68
|
+
runWithCatchError_1.RunWithCatchErrorMW(ProvisionActionImplement.source, runWithCatchError_1.ActionErrorHandler),
|
|
69
|
+
logger_1.LoggerMW(logger_1.ActionLogger.bind(null, ProvisionActionImplement.logFormatter)),
|
|
70
|
+
]),
|
|
71
|
+
tslib_1.__metadata("design:type", Function),
|
|
72
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
73
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
74
|
+
], ProvisionActionImplement, "execute", null);
|
|
75
|
+
exports.ProvisionActionImplement = ProvisionActionImplement;
|
|
76
|
+
//# sourceMappingURL=provision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/actions/provision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { FxError, Result, Action, CloudResource, ContextV3, MaybePromise, InputsWithProjectPath } from "@microsoft/teamsfx-api";
|
|
2
2
|
import "reflect-metadata";
|
|
3
3
|
export declare class AzureSqlResource implements CloudResource {
|
|
4
|
-
readonly
|
|
5
|
-
readonly
|
|
6
|
-
outputs: {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly outputs: {
|
|
7
6
|
sqlResourceId: {
|
|
8
7
|
key: string;
|
|
9
8
|
bicepVariable: string;
|
|
@@ -17,7 +16,7 @@ export declare class AzureSqlResource implements CloudResource {
|
|
|
17
16
|
bicepVariable: string;
|
|
18
17
|
};
|
|
19
18
|
};
|
|
20
|
-
finalOutputKeys: string[];
|
|
19
|
+
readonly finalOutputKeys: string[];
|
|
21
20
|
generateBicep(context: ContextV3, inputs: InputsWithProjectPath): MaybePromise<Result<Action | undefined, FxError>>;
|
|
22
21
|
provision(context: ContextV3, inputs: InputsWithProjectPath): MaybePromise<Result<Action | undefined, FxError>>;
|
|
23
22
|
configure(context: ContextV3, inputs: InputsWithProjectPath): MaybePromise<Result<Action | undefined, FxError>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureSql.d.ts","sourceRoot":"","sources":["../../../../src/component/resource/azureSql/azureSql.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EAEP,MAAM,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,YAAY,EACZ,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC;AAM1B,qBACa,gBAAiB,YAAW,aAAa;IACpD,QAAQ,CAAC,IAAI,SAA2B;IACxC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;MAAmB;IACnC,QAAQ,CAAC,eAAe,WAAiD;IACzE,aAAa,CACX,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,qBAAqB,GAC5B,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;IAGpD,SAAS,CACP,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,qBAAqB,GAC5B,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;IAGpD,SAAS,CACP,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,qBAAqB,GAC5B,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;CAGrD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.AzureSqlResource = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
8
|
+
require("reflect-metadata");
|
|
9
|
+
const typedi_1 = require("typedi");
|
|
10
|
+
const constants_1 = require("../../constants");
|
|
11
|
+
const configure_1 = require("./actions/configure");
|
|
12
|
+
const generateBicep_1 = require("./actions/generateBicep");
|
|
13
|
+
const provision_1 = require("./actions/provision");
|
|
14
|
+
let AzureSqlResource = class AzureSqlResource {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.name = constants_1.ComponentNames.AzureSQL;
|
|
17
|
+
this.outputs = constants_1.AzureSqlOutputs;
|
|
18
|
+
this.finalOutputKeys = ["sqlResourceId", "endpoint", "databaseName"];
|
|
19
|
+
}
|
|
20
|
+
generateBicep(context, inputs) {
|
|
21
|
+
return teamsfx_api_1.ok(generateBicep_1.GetActionGenerateBicep());
|
|
22
|
+
}
|
|
23
|
+
provision(context, inputs) {
|
|
24
|
+
return teamsfx_api_1.ok(provision_1.ProvisionActionImplement.get());
|
|
25
|
+
}
|
|
26
|
+
configure(context, inputs) {
|
|
27
|
+
return teamsfx_api_1.ok(configure_1.ConfigureActionImplement.get());
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
AzureSqlResource = tslib_1.__decorate([
|
|
31
|
+
typedi_1.Service("azure-sql")
|
|
32
|
+
], AzureSqlResource);
|
|
33
|
+
exports.AzureSqlResource = AzureSqlResource;
|
|
34
|
+
//# sourceMappingURL=azureSql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureSql.js","sourceRoot":"","sources":["../../../../src/component/resource/azureSql/azureSql.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,wDASgC;AAChC,4BAA0B;AAC1B,mCAAiC;AACjC,+CAAkE;AAClE,mDAA+D;AAC/D,2DAAiE;AACjE,mDAA+D;AAE/D,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAA7B;QACW,SAAI,GAAG,0BAAc,CAAC,QAAQ,CAAC;QAC/B,YAAO,GAAG,2BAAe,CAAC;QAC1B,oBAAe,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAmB3E,CAAC;IAlBC,aAAa,CACX,OAAkB,EAClB,MAA6B;QAE7B,OAAO,gBAAE,CAAC,sCAAsB,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,SAAS,CACP,OAAkB,EAClB,MAA6B;QAE7B,OAAO,gBAAE,CAAC,oCAAwB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,SAAS,CACP,OAAkB,EAClB,MAA6B;QAE7B,OAAO,gBAAE,CAAC,oCAAwB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AAtBY,gBAAgB;IAD5B,gBAAO,CAAC,WAAW,CAAC;GACR,gBAAgB,CAsB5B;AAtBY,4CAAgB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SqlManagementClient } from "@azure/arm-sql";
|
|
2
|
+
import { AzureAccountProvider } from "@microsoft/teamsfx-api";
|
|
3
|
+
import { ManagementConfig } from "../types";
|
|
4
|
+
export declare class ManagementClient {
|
|
5
|
+
manager: SqlManagementClient;
|
|
6
|
+
config: ManagementConfig;
|
|
7
|
+
totalFirewallRuleCount: number;
|
|
8
|
+
private constructor();
|
|
9
|
+
static create(azureAccountProvider: AzureAccountProvider, config: ManagementConfig): Promise<ManagementClient>;
|
|
10
|
+
existAzureSQL(): Promise<boolean>;
|
|
11
|
+
existAadAdmin(aadAdmin: string): Promise<boolean>;
|
|
12
|
+
addAADadmin(tenantId: string, aadAdminObjectId: string, aadAdmin: string): Promise<void>;
|
|
13
|
+
addLocalFirewallRule(): Promise<void>;
|
|
14
|
+
deleteLocalFirewallRule(): Promise<void>;
|
|
15
|
+
getRuleName(suffix: number): string;
|
|
16
|
+
delay(s: number): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/clients/management.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,gBAAgB,CAAC;AAK1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,qBAAa,gBAAgB;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,sBAAsB,SAAK;IAE3B,OAAO;WAKa,MAAM,CACxB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAMtB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBjC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBjD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCrC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB9C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7B,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.ManagementClient = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const arm_sql_1 = require("@azure/arm-sql");
|
|
8
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
9
|
+
const errors_1 = require("../errors");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
const results_1 = require("../results");
|
|
12
|
+
class ManagementClient {
|
|
13
|
+
constructor(manager, config) {
|
|
14
|
+
this.totalFirewallRuleCount = 0;
|
|
15
|
+
this.manager = manager;
|
|
16
|
+
this.config = config;
|
|
17
|
+
}
|
|
18
|
+
static async create(azureAccountProvider, config) {
|
|
19
|
+
const credential = await azureAccountProvider.getAccountCredentialAsync();
|
|
20
|
+
const manager = new arm_sql_1.SqlManagementClient(credential, config.azureSubscriptionId);
|
|
21
|
+
return new ManagementClient(manager, config);
|
|
22
|
+
}
|
|
23
|
+
async existAzureSQL() {
|
|
24
|
+
try {
|
|
25
|
+
const result = await this.manager.servers.checkNameAvailability({
|
|
26
|
+
name: this.config.sqlServer,
|
|
27
|
+
});
|
|
28
|
+
if (result.available) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw results_1.SqlResultFactory.SystemError(errors_1.ErrorMessage.SqlCheckError.name, errors_1.ErrorMessage.SqlCheckError.message(this.config.sqlEndpoint, error.message), error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async existAadAdmin(aadAdmin) {
|
|
40
|
+
try {
|
|
41
|
+
const result = await this.manager.serverAzureADAdministrators.listByServer(this.config.resourceGroup, this.config.sqlServer);
|
|
42
|
+
if (result.find((item) => item.login === aadAdmin)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw results_1.SqlResultFactory.UserError(errors_1.ErrorMessage.SqlCheckAdminError.name, errors_1.ErrorMessage.SqlCheckAdminError.message(this.config.sqlServer, error.message), error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async addAADadmin(tenantId, aadAdminObjectId, aadAdmin) {
|
|
54
|
+
let model = {
|
|
55
|
+
tenantId: tenantId,
|
|
56
|
+
sid: aadAdminObjectId,
|
|
57
|
+
login: aadAdmin,
|
|
58
|
+
};
|
|
59
|
+
const tmp = model;
|
|
60
|
+
tmp.administratorType = constants_1.Constants.sqlAdministratorType;
|
|
61
|
+
model = tmp;
|
|
62
|
+
try {
|
|
63
|
+
await this.manager.serverAzureADAdministrators.createOrUpdate(this.config.resourceGroup, this.config.sqlServer, model);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
throw results_1.SqlResultFactory.UserError(errors_1.ErrorMessage.SqlAddAdminError.name, errors_1.ErrorMessage.SqlAddAdminError.message(aadAdmin, error.message), error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async addLocalFirewallRule() {
|
|
70
|
+
try {
|
|
71
|
+
const response = await axios_1.default.get(constants_1.Constants.echoIpAddress);
|
|
72
|
+
const localIp = response.data;
|
|
73
|
+
const partials = localIp.split(".");
|
|
74
|
+
partials[2] = constants_1.Constants.ipBeginToken;
|
|
75
|
+
partials[3] = constants_1.Constants.ipBeginToken;
|
|
76
|
+
const startIp = partials.join(".");
|
|
77
|
+
partials[2] = constants_1.Constants.ipEndToken;
|
|
78
|
+
partials[3] = constants_1.Constants.ipEndToken;
|
|
79
|
+
const endIp = partials.join(".");
|
|
80
|
+
const model = {
|
|
81
|
+
startIpAddress: startIp,
|
|
82
|
+
endIpAddress: endIp,
|
|
83
|
+
};
|
|
84
|
+
const ruleName = this.getRuleName(this.totalFirewallRuleCount);
|
|
85
|
+
await this.manager.firewallRules.createOrUpdate(this.config.resourceGroup, this.config.sqlServer, ruleName, model);
|
|
86
|
+
this.totalFirewallRuleCount++;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw results_1.SqlResultFactory.UserError(errors_1.ErrorMessage.SqlLocalFirwallError.name, errors_1.ErrorMessage.SqlLocalFirwallError.message(this.config.sqlEndpoint, error.message), error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async deleteLocalFirewallRule() {
|
|
93
|
+
try {
|
|
94
|
+
await Promise.all(Array.from(Array(this.totalFirewallRuleCount).keys()).map(async (i) => {
|
|
95
|
+
const ruleName = this.getRuleName(i);
|
|
96
|
+
await this.manager.firewallRules.deleteMethod(this.config.resourceGroup, this.config.sqlServer, ruleName);
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw results_1.SqlResultFactory.UserError(errors_1.ErrorMessage.SqlDeleteLocalFirwallError.name, errors_1.ErrorMessage.SqlDeleteLocalFirwallError.message(this.config.sqlEndpoint, error.message), error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
getRuleName(suffix) {
|
|
104
|
+
return constants_1.Constants.firewall.localRule + suffix;
|
|
105
|
+
}
|
|
106
|
+
async delay(s) {
|
|
107
|
+
return new Promise((resolve) => setTimeout(resolve, s * 1000));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.ManagementClient = ManagementClient;
|
|
111
|
+
//# sourceMappingURL=management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/clients/management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AzureAccountProvider } from "@microsoft/teamsfx-api";
|
|
2
|
+
import { SqlConfig } from "../types";
|
|
3
|
+
export declare class SqlClient {
|
|
4
|
+
config: SqlConfig;
|
|
5
|
+
token: string;
|
|
6
|
+
private constructor();
|
|
7
|
+
static create(azureAccountProvider: AzureAccountProvider, config: SqlConfig): Promise<SqlClient>;
|
|
8
|
+
addDatabaseUser(database: string): Promise<void>;
|
|
9
|
+
static initToken(azureAccountProvider: AzureAccountProvider, config: SqlConfig): Promise<string>;
|
|
10
|
+
doQuery(cmd: string, database: string): Promise<any[]>;
|
|
11
|
+
static isFireWallError(error: any): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../../../src/component/resource/azureSql/clients/sql.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,qBAAa,SAAS;IACpB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO;WAKM,MAAM,CACjB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,SAAS,CAAC;IAKf,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WA8CzC,SAAS,CACpB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,MAAM,CAAC;IAyDZ,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;WA2D9C,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;CAMnD"}
|