Project

General

Profile

Bug #36370

Updated by Evgeni Golov over 1 year ago

Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=2196436  

 *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:* 
 <pre> 
 {"error":"An error occurred."} 
 </pre> 

 *Expected results:* 
 <pre> 
 {"data":"computeResource":"id":"MDE6Rm9yZW1hbkF6dXJlUm06OkF6dXJlUm0tMTI=","provider":"AzureRm"}}} 
 </pre> 

 *Additional info:* 
 In production log, we see the following error: 
 <pre> 
 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' 
 </pre> 

 This is because app/graphql/types/provider_enum.rb uses `supported_providers` and not `all_providers` `registered_providers` to obtain the list of providers. 

 <pre> 
 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"] 
 </pre>

Back