Add GraphQL for Terraform States
What does this MR do?
- Add terraform state registry finder
- Add terraform state resolver
- Add terraform state registry type
- Use package_file specific feature flag for it's graphql endpointRelates to #220956 (closed)
Database
Since terraform_state_registry doesn't exist on the primary (it's in the geo secondary tracking database), so you won't be able to run an explain on this in #database-lab
At any rate, here's the added query:
SELECT "terraform_state_registry".* FROM "terraform_state_registry" ORDER BY "terraform_state_registry"."id" ASCAnd here's an explain plan I ran locally:
Index Scan using terraform_state_registry_pkey on terraform_state_registry  (cost=0.15..55.85 rows=780 width=76)And if :ids are provided in params (example was 10, 100, and 1000 because I'm lazy):
SELECT "terraform_state_registry".* FROM "terraform_state_registry" WHERE "terraform_state_registry"."id" IN (10, 100, 1000) ORDER BY "terraform_state_registry"."id" ASCAnd I guess this is the explain for that (also local):
 Sort  (cost=11.61..11.62 rows=3 width=76)
   Sort Key: id
   ->  Bitmap Heap Scan on terraform_state_registry  (cost=4.47..11.58 rows=3 width=76)
         Recheck Cond: (id = ANY ('{10,100,1000}'::bigint[]))
         ->  Bitmap Index Scan on terraform_state_registry_pkey  (cost=0.00..4.47 rows=3 width=0)
               Index Cond: (id = ANY ('{10,100,1000}'::bigint[]))If you feel that it would be useful to see this run in staging, that might be able to be arranged. At the moment, even if I could figure out how to do that, there would be 0 rows since we don't have any replicated terraform states there yet. 
Screenshots
Does this MR meet the acceptance criteria?
Conformity
- 
Changelog entry 
- 
Documentation (if required) 
- 
Code review guidelines 
- 
Merge request performance guidelines 
- 
Style guides 
- 
Database guides 
- 
Separation of EE specific content 
Availability and Testing
- 
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. 
- 
Tested in all supported browsers 
- 
Informed Infrastructure department of a default or new setting change, if applicable per definition of done 
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- 
Label as security and @ mention @gitlab-com/gl-security/appsec
- 
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods 
- 
Security reports checked/validated by a reviewer from the AppSec team