microsoftgraph / msgraph-bicep-types

Repo contains Microsoft Graph resource types to integrate with bicep templates.
MIT License
46 stars 7 forks source link

Errors should be in better format #127

Open slavizh opened 6 months ago

slavizh commented 6 months ago

Is your feature request related to a problem? Please describe. One of the issues related to this is most likely that Graph resources are not displayed in Azure Deployments as resources. As such we do not have the usual ARM/Bicep errors for resources and that is confusing.

With deployments for Azure resources we can have error like this:

     | 13:21:11 - The deployment 'lz-storage-account-240527135pgyh' failed with
     | error(s). Showing 3 out of 3 error(s). Status Message: vault container
     | already exists and ImmutableStorageWithVersioning property is immutable.
     | The container must undergo a migration to support immutable Storage with
     | versioning. (Code:ContainerMustUndergoObjectLevelWormMigration)  Status
     | Message: At least one resource deployment operation failed. Please list
     | deployment operations for details. Please see

From Azure deployments (operations) we can extract the same information and structure it like this:

ailed Deployments
--------------------
Id: 
Code: DeploymentStackDeploymentFailed
Message: One or more resources could not be deployed. Correlation id: '81299724-a760-4808-b302-4682e76cd461'.

Id: /subscriptions/<sub id>/providers/Microsoft.Resources/deployments/lz-storage-account-240527135pgyh
Code: DeploymentFailed
Message: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.

Id: 
Code: ContainerMustUndergoObjectLevelWormMigration
Message: vault container already exists and ImmutableStorageWithVersioning property is immutable. The container must undergo a migration to support immutable Storage with versioning.

Failed Resources
--------------------
Id: /subscriptions/<sub id>/resourceGroups/lz-storage-account/providers/Microsoft.Storage/storageAccounts/<storage name>/blobServices/default/containers/vault
Code: ContainerMustUndergoObjectLevelWormMigration
Message: vault container already exists and ImmutableStorageWithVersioning property is immutable. The container must undergo a migration to support immutable Storage with versioning.

Such information is even available directly in deployment stacks without needing to query deployment operations to get it. As you can see this is very clear and well structured information what is failing and for which resource. With Graph resources we do not have that. We have information like:

11:55:28 - The deployment 'azDeploy-240523115357-lz-ms-graph-test'
     | failed with error(s). Showing 3 out of 4 error(s). Status Message:
     | {"error":{"code":"BadRequest","target":"/resources/entraGroupRes","message":"AppOnly OBO tokens not supported by target service. Graph client request id: 624c90dc-600f-452a-a21a-4df1a7d2d672. Graph request timestamp: Thu, 23 May 2024 11:54:52 GMT."}} (Code:DeploymentOperationFailed)  Status Message: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details. (Code: DeploymentFailed)  - {"error":{"code":"BadRequest","target":"/resources/entraGroupRes","message":"AppOnly OBO tokens not supported by target service. Graph client request id: 624c90dc-600f-452a-a21a-4df1a7d2d672. Graph request timestamp: Thu, 23 May 2024 11:54:52 GMT."}} (Code:)   Status Message: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details. (Code: DeploymentFailed)  - {"error":{"code":"BadRequest","target":"/resources/entraGroupRes","message":"AppOnly OBO tokens not supported by target service. Graph client request id: 2067aa5d-d196-4bdb-9fc7-db7cdfb0e11a. Graph request timestamp: Thu, 23 May 2024 11:54:52 GMT."}} (Code:)   CorrelationId: 6688fdc1-313c-47ee-9582-f0f76ddd7a00

If we look at the name of target resource /resources/entraGroupRes you basically you are missing vital information like:

Instead we have this name entraGroupRes. This is basically the symbolic name of the resources I have defined in my template. In this case this is the name of multiple resources as entraGroupRes is a loop upon Microsoft.Graph/groups type. Many times the actual deployment is done by engineers who did not code the template, they only provide the configuration for the deployment so they do not know what entraGroupRes represents let alone being able to pin down to the exact resource.

If we take the current Graph error I think it should at the end achieve the same type of functionality in Azure Deployments where the graph resources are present within Deployment/Deployment operations in way that you can achieve something like this

Failed Resources
--------------------
Id: providers/Microsoft.Graph/groups/exampleGroup1
Code: '' // as far as I understand this error does not have code.
Message: AppOnly OBO tokens not supported by target service. Graph client request id: 624c90dc-600f-452a-a21a-4df1a7d2d672. Graph request timestamp: Thu, 23 May 2024 11:54:52 GMT.

Also if multiple resources are failing even if it is with the same error you should be able to list each one of them as separate one.

I think this represents quite improvement and alignment with the existing experience.

Describe the solution you'd like described

Additional context n/a

dkershaw10 commented 4 months ago

@jason-dou will investigate further with Shenglong.