[Question] Dependecy resolvement when specifying custom configuration
- Dominant language
- C#
- Stars
- 448
- Forks
- 247
- PR merge metrics
- No merged PRs in 30d
Description
### Release version
v6.0.1.1
### Question Details
**Problem Description**
Publishing a policy fragment depending on the named value results in the following error:
`
info: publisher[0]
Putting policy policy for operation dependecycheck in API echo-api...
info: publisher[0]
Putting policy policy for operation retrieve-header-only in API echo-api...
crit: publisher[0]
Application failed.
System.Net.Http.HttpRequestException: HTTP request to URI https://management.azure.com/subscriptions/***/resourceGroups/app-grp/providers/Microsoft.ApiManagement/service/api-grp-apim-3/apis/echo-api/operations/dependecycheck/policies/policy?api-version=2023-09-01-preview failed with status code 400. Content is '{"error":{"code":"ValidationError","message":"One or more fields contain incorrect values:","details":[{"code":"ValidationError","target":"include-fragment","message":"Error in element 'include-fragment' on line 11, column 4: Policy fragment with id 'TokenValidator' could not be found."}]}}'.
`
**Environment setup**
The solution uses the following features from API Management:
- APIs
- Named Values
- Policy Fragments
The relationships are:
- named values contain properties
- policy depends on the name value
- the policy is attached to the API
The policy content - to understand the correlation with named values:
`
https://{{my_idp_hostname}}/api/v2/
https://{{my_idp_hostname}}/userinfo
https://{{my_idp_hostname}}/
`
Example of configuration file per e.g. Prod:
`
apimServiceName: api-prod
namedValues:
- name: MyIdpHostname
properties:
displayName: my_idp_hostname
value: ""
`
The publishing pipeline has 3 stages:
- dev; to republish what we have in git
- uat, we read what we have in git, make amendments to named values (see above), and publish it
- prod, we read what we have in git, make amendments to named values (see above), and publish it
During the publishing test, we observed the following behavior:
- API is published
- Policy publishing fails
**Observations**
- The policy is published when the configuration file is not specified.
- Named values are replaced, but only if they are not available.
NB: This applies when we have a custom configuration file to amend values per stage/environment. The same behavior/outcome applies to Products; whether we use partial (publish-artifacts-in-last-commit) or full publishing (publish-all-artifacts-in-repo).
**Questions**
- Named Value: why can we not replace/amend the value if previously available?
- Dependencies: why does a replacement of NamedValue work if not previously available, but the policy referencing it, fails?
Is this by design or perhaps a bug?
Thanks in advance.
### Expected behavior
Named values are replaced
Named values are published
API is published
Policy is published
API is updated
### Actual behavior
Named values are replaced
Named values are published (only if not available earlier)
API is published
Policy publishing fails with status code 400:
`
crit: publisher[0]
Application failed.
System.Net.Http.HttpRequestException: HTTP request to URI https://management.azure.com/subscriptions/***/resourceGroups/app-grp/providers/Microsoft.ApiManagement/service/api-grp-apim-3/apis/echo-api/operations/dependecycheck/policies/policy?api-version=2023-09-01-preview failed with status code 400. Content is '{"error":{"code":"ValidationError","message":"One or more fields contain incorrect values:","details":[{"code":"ValidationError","target":"include-fragment","message":"Error in element 'include-fragment' on line 11, column 4: Policy fragment with id 'TokenValidator' could not be found."}]}}'.
`
### Reproduction Steps
Prerequisites:
1. Use Echo API (by default available when an instance of API Management is created)
Steps:
1. Create a policy (see above)
3. Assign the policy to Echo API; it does not matter what API endpoint.
4. Run executor (no filter configuration attached)
5. Run publisher (with configuration example as specified above).
Publisher fails.
PS: The same behavior is observed with Products.
Contributor guide
Assessment
This issue has not been assessed yet.