Open Jeej opened 3 years ago
@anthony-c-martin
Still repros with latest schemas, moved to https://github.com/Azure/azure-resource-manager-schemas/issues/1542
@Jeej Thanks for bringing this to our attention. This is a bug in the schema for the websites RP. As soon as they fix it, I can integrate it.
I'm still seeing this issue. It's a real problem as it makes the extension almost unusable. You end up seeing so many validation errors for things that aren't validation errors (like numberOfWorkers
) it makes it hard to find the real errors. I see that it's tagged as P1 but the latest activity on this is March 2021. Is there any idea when this might be addressed? or is there a workaround for now? Thanks.
@pmcilreavy Could you add comments directly to https://github.com/Azure/azure-resource-manager-schemas/issues/1542 to help put pressure on them getting this fixed? Thanks!
@StephenWeatherford - we need to have a conversation about this. It's not clear to me exactly how we could improve purely in JSON schema 4. Realistically, I feel like it may necessitate some intelligence in the VSCode extension to use heuristics for the pattern matching. AFAIK we've built intelligence into this extension for matching against the type
field, but here we also need to go further and match against the name
field.
The schema is using regex to differentiate between the various child resources, but this obviously fails as soon as an expression is involved - which is generally unavoidable, as most people are wanting to parameterize the resource name. If the extension able to partially evaluate the expression being used, this would probably solve the problem. See comments here and here for more information.
For example, in the repro reported here, we have the following name
:
"name": "[concat(parameters('appService_Name'), '/web')]",
If we could partially evaluate this to "<unevaluated>/web"
, it should unambiguously match against:
https://github.com/Azure/azure-resource-manager-schemas/blob/cc3667c9cee1fe21a0718747e00bc8ce9f3cb37d/schemas/2018-11-01/Microsoft.Web.json#L1677-L1687
For a nested resource the issue is also present:
Hi,
For my project I have an ARM template to deploy an Azure Function. In the template I have a Microsoft.Web/sites/config to set some settings. Unfortunately, ARM Tools marks my template as invalid. The following template shows the validation errors:
(Code is only to trigger validation errors, for deployment more code is needed.)
In the problems pane I get the following errors:
ARM Tools shouldn't give any validation error. For instance, numberOfWorkers is in my code an integer, the validation error specifies it as string or object. It is strange that it should be both 😉 .
Besides that, when I look at the template numberOfWorkers is also specified as integer. Following the document schema which links to Microsoft.Web.json numberOfWorkers is also specified as integer.
In this repository the numberOfWorkers is also defined as integer.
Can you fix this? It is annoying that that there are a lot of invalid errors.