Azure / Azure/bicep

We get "Internal error" and an error callback deploying with an invalid storage account name

Open
#7,006 0 comments 0 reactions 0 assignees View on GitHub
devdiv provider bug
Dominant language
Bicep
Stars
3.6k
Forks
830
Avg merge
1d 21m
Merged PRs (30d)
79

Description

```bicep
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'BAADF00D'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
```
Try deploying and you get this in the output:
```shell
3:43:14 PM: Deployment failed for /Users/stephenweatherford/repos/abc/main.bicep. Internal Error - Azure.RequestFailedException: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.
Status: 200 (OK)
ErrorCode: DeploymentFailed

Content:
{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{\r\n \"error\": {\r\n \"code\": \"AccountNameInvalid\",\r\n \"message\": \"BAADF00D is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.\"\r\n }\r\n}"}]}}

Headers:
Cache-Control: no-cache
Pragma: no-cache
x-ms-ratelimit-remaining-subscription-reads: REDACTED
x-ms-request-id: 94d770d9-af6c-408a-b5f1-9bec6151c46f
x-ms-correlation-request-id: REDACTED
x-ms-routing-request-id: REDACTED
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
Date: Tue, 31 May 2022 22:43:13 GMT
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 528

at Azure.Core.OperationInternalBase.ApplyStateAsync(Boolean async, Response response, Boolean hasCompleted, Boolean hasSucceeded, RequestFailedException requestFailedException, Boolean throwIfFailed)
at Azure.Core.OperationInternal`1.UpdateStateAsync(Boolean async, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.UpdateStatusAsync(Boolean async, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.UpdateStatusAsync(CancellationToken cancellationToken)
at Azure.Core.OperationPoller.WaitForCompletionResponseAsync(UpdateStatusAsync updateStatusAsync, HasCompleted hasCompleted, GetRawResponse getRawResponse, Nullable`1 suggestedInterval, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.WaitForCompletionResponseAsync(CancellationToken cancellationToken)
at Azure.Core.OperationInternal`1.WaitForCompletionAsync(CancellationToken cancellationToken)
at Azure.Core.OperationOrResponseInternals`1.WaitForCompletionAsync(CancellationToken cancellationToken)
at Bicep.LanguageServer.Deploy.DeploymentHelper.WaitForDeploymentCompletionAsync(String deploymentId, String documentPath, IDeploymentOperationsCache deploymentOperationsCache) in C:\__w\1\s\bicep\src\Bicep.LangServer\Deploy\DeploymentHelper.cs:line 142
at Bicep.LanguageServer.Handlers.BicepDeploymentWaitForCompletionCommandHandler.Handle(BicepDeploymentWaitForCompletionParams request, CancellationToken cancellationToken) in C:\__w\1\s\bicep\src\Bicep.LangServer\Handlers\BicepDeploymentWaitForCompletionCommandHandler.cs:line 32
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.SemanticTokensDeltaPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.g__InnerRoute|7_0(IServiceScopeFactory serviceScopeFactory, Request request, TDescriptor descriptor, Object params, CancellationToken token, ILogger logger)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.RouteRequest(IRequestDescriptor`1 descriptors, Request request, CancellationToken token)
at OmniSharp.Extensions.JsonRpc.DefaultRequestInvoker.<>c__DisplayClass10_0.<b__5>d.MoveNext()
```
EXPECTED: No internal error, no callback

Contributor guide

Open the contributing guide

Research direction

Start at src/Bicep.LangServer/Deploy/DeploymentHelper.cs line 142 and BicepDeploymentWaitForCompletionCommandHandler.cs line 32, then reproduce the deployment with the invalid storage account name from the issue. Trace how the Azure deployment failure is surfaced to the callback. Done means the invalid-name deployment reports the resource error without an internal error or an erroneous callback.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure
Domain
cloud, devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.