Bug 2196436
| Summary: | Can't query plugin CRs via GraphQL | ||
|---|---|---|---|
| Product: | Red Hat Satellite | Reporter: | Evgeni Golov <egolov> |
| Component: | Compute Resources | Assignee: | Evgeni Golov <egolov> |
| Status: | VERIFIED --- | QA Contact: | sganar |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 6.13.0 | CC: | lstejska, sganar, shwsingh |
| Target Milestone: | 6.14.0 | Keywords: | Triaged |
| Target Release: | Unused | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | Bug | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
The same is also true for the ProviderFriendlyNameEnum, but changing that my Satellite refuses to start due to BZ#2196242 Created redmine issue https://projects.theforeman.org/issues/36370 from this bug Upstream bug assigned to egolov Upstream bug assigned to egolov Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/36370 has been resolved. Verified.
Tested on Satellite 6.14.0 Snap 6.0
Steps followed:
1. create an Azure (or Google) CR
2. curl -X POST -H "Content-Type: application/json" -d '{"query": "{ computeResource(id: \"MDE6Q29tcHV0ZVJlc291cmNlLTE=\") \{id, provider\} }"}' -u admin:passwd https://$(hostname -f)/api/graphql
Observation:
No error observed.
{"data":{"computeResource":{"id":"MDE6Q29tcHV0ZVJlc291cmNlLTE=","provider":"AzureRm"}}}
|
Description of problem: When trying to query a CR that was created from a plugin (like Azure or Google) via GraphQL, an error occurs. Version-Release number of selected component (if applicable): 6.13.0, but should happen on any other too How reproducible: 100% Steps to Reproduce: 1. create an Azure (or in 6.13 Google) CR 2. curl -X POST -H "Content-Type: application/json" -d '{"query": "{ computeResource(id: \"MDE6Rm9yZW1hbkF6dXJlUm06OkF6dXJlUm0tMTI=\") \{id, provider\} }"}' -u admin:changeme https://$(hostname -f)/api/graphql (replace the ID with the right for your install Actual results: {"error":"An error occurred."} Expected results: {"data":"computeResource":"id":"MDE6Rm9yZW1hbkF6dXJlUm06OkF6dXJlUm0tMTI=","provider":"AzureRm"}}} Additional info: In production log, we see the following error: 2023-05-09T06:43:41 [W|app|02510a9d] Action failed 2023-05-09T06:43:41 [I|app|02510a9d] Backtrace for 'Action failed' error (Types::ProviderEnum::UnresolvedValueError): `ComputeResource.provider` returned `"AzureRm"` at `computeResource.provider`, but this isn't a valid value for ` ProviderEnum`. Update the field or resolver to return one of `ProviderEnum`'s values instead. 02510a9d | /usr/share/gems/gems/graphql-1.13.16/lib/graphql/schema/enum.rb:161:in `coerce_result' This is because app/graphql/types/provider_enum.rb uses `supported_providers` and not `all_providers` to obtain the list of providers. irb(main):001:0> ::ComputeResource.supported_providers.keys => ["Libvirt", "Ovirt", "EC2", "Vmware", "Openstack"] irb(main):002:0> ::ComputeResource.all_providers.keys => ["Libvirt", "Ovirt", "EC2", "Vmware", "Openstack", "AzureRm", "GCE"]