qontract-reconcile 0.9.1rc298__py3-none-any.whl → 0.10.1.dev1203__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (843) hide show
  1. qontract_reconcile-0.10.1.dev1203.dist-info/METADATA +500 -0
  2. qontract_reconcile-0.10.1.dev1203.dist-info/RECORD +771 -0
  3. {qontract_reconcile-0.9.1rc298.dist-info → qontract_reconcile-0.10.1.dev1203.dist-info}/WHEEL +1 -2
  4. {qontract_reconcile-0.9.1rc298.dist-info → qontract_reconcile-0.10.1.dev1203.dist-info}/entry_points.txt +4 -2
  5. reconcile/acs_notifiers.py +126 -0
  6. reconcile/acs_policies.py +243 -0
  7. reconcile/acs_rbac.py +596 -0
  8. reconcile/aus/advanced_upgrade_service.py +621 -8
  9. reconcile/aus/aus_label_source.py +115 -0
  10. reconcile/aus/base.py +1053 -353
  11. reconcile/{utils → aus}/cluster_version_data.py +27 -12
  12. reconcile/aus/healthchecks.py +77 -0
  13. reconcile/aus/metrics.py +158 -0
  14. reconcile/aus/models.py +245 -5
  15. reconcile/aus/node_pool_spec.py +35 -0
  16. reconcile/aus/ocm_addons_upgrade_scheduler_org.py +225 -110
  17. reconcile/aus/ocm_upgrade_scheduler.py +76 -71
  18. reconcile/aus/ocm_upgrade_scheduler_org.py +81 -23
  19. reconcile/aus/version_gate_approver.py +204 -0
  20. reconcile/aus/version_gates/__init__.py +12 -0
  21. reconcile/aus/version_gates/handler.py +33 -0
  22. reconcile/aus/version_gates/ingress_gate_handler.py +32 -0
  23. reconcile/aus/version_gates/ocp_gate_handler.py +26 -0
  24. reconcile/aus/version_gates/sts_version_gate_handler.py +100 -0
  25. reconcile/aws_account_manager/README.md +5 -0
  26. reconcile/aws_account_manager/integration.py +373 -0
  27. reconcile/aws_account_manager/merge_request_manager.py +114 -0
  28. reconcile/aws_account_manager/metrics.py +39 -0
  29. reconcile/aws_account_manager/reconciler.py +403 -0
  30. reconcile/aws_account_manager/utils.py +41 -0
  31. reconcile/aws_ami_cleanup/integration.py +273 -0
  32. reconcile/aws_ami_share.py +18 -14
  33. reconcile/aws_cloudwatch_log_retention/integration.py +253 -0
  34. reconcile/aws_iam_keys.py +1 -1
  35. reconcile/aws_iam_password_reset.py +56 -20
  36. reconcile/aws_saml_idp/integration.py +204 -0
  37. reconcile/aws_saml_roles/integration.py +322 -0
  38. reconcile/aws_support_cases_sos.py +2 -2
  39. reconcile/aws_version_sync/integration.py +430 -0
  40. reconcile/aws_version_sync/merge_request_manager/merge_request.py +156 -0
  41. reconcile/aws_version_sync/merge_request_manager/merge_request_manager.py +160 -0
  42. reconcile/aws_version_sync/utils.py +64 -0
  43. reconcile/blackbox_exporter_endpoint_monitoring.py +2 -5
  44. reconcile/change_owners/README.md +34 -0
  45. reconcile/change_owners/approver.py +7 -9
  46. reconcile/change_owners/bundle.py +134 -9
  47. reconcile/change_owners/change_log_tracking.py +236 -0
  48. reconcile/change_owners/change_owners.py +204 -194
  49. reconcile/change_owners/change_types.py +183 -265
  50. reconcile/change_owners/changes.py +488 -0
  51. reconcile/change_owners/decision.py +120 -41
  52. reconcile/change_owners/diff.py +63 -92
  53. reconcile/change_owners/implicit_ownership.py +19 -16
  54. reconcile/change_owners/self_service_roles.py +158 -35
  55. reconcile/change_owners/tester.py +20 -18
  56. reconcile/checkpoint.py +4 -6
  57. reconcile/cli.py +1523 -242
  58. reconcile/closedbox_endpoint_monitoring_base.py +10 -17
  59. reconcile/cluster_auth_rhidp/integration.py +257 -0
  60. reconcile/cluster_deployment_mapper.py +2 -5
  61. reconcile/cna/assets/asset.py +4 -7
  62. reconcile/cna/assets/null.py +2 -5
  63. reconcile/cna/integration.py +2 -3
  64. reconcile/cna/state.py +6 -9
  65. reconcile/dashdotdb_base.py +31 -10
  66. reconcile/dashdotdb_cso.py +3 -6
  67. reconcile/dashdotdb_dora.py +530 -0
  68. reconcile/dashdotdb_dvo.py +10 -13
  69. reconcile/dashdotdb_slo.py +75 -19
  70. reconcile/database_access_manager.py +753 -0
  71. reconcile/deadmanssnitch.py +207 -0
  72. reconcile/dynatrace_token_provider/dependencies.py +69 -0
  73. reconcile/dynatrace_token_provider/integration.py +656 -0
  74. reconcile/dynatrace_token_provider/metrics.py +62 -0
  75. reconcile/dynatrace_token_provider/model.py +14 -0
  76. reconcile/dynatrace_token_provider/ocm.py +140 -0
  77. reconcile/dynatrace_token_provider/validate.py +48 -0
  78. reconcile/endpoints_discovery/integration.py +348 -0
  79. reconcile/endpoints_discovery/merge_request.py +96 -0
  80. reconcile/endpoints_discovery/merge_request_manager.py +178 -0
  81. reconcile/external_resources/aws.py +204 -0
  82. reconcile/external_resources/factories.py +163 -0
  83. reconcile/external_resources/integration.py +194 -0
  84. reconcile/external_resources/integration_secrets_sync.py +47 -0
  85. reconcile/external_resources/manager.py +405 -0
  86. reconcile/external_resources/meta.py +17 -0
  87. reconcile/external_resources/metrics.py +95 -0
  88. reconcile/external_resources/model.py +350 -0
  89. reconcile/external_resources/reconciler.py +265 -0
  90. reconcile/external_resources/secrets_sync.py +465 -0
  91. reconcile/external_resources/state.py +258 -0
  92. reconcile/gabi_authorized_users.py +19 -11
  93. reconcile/gcr_mirror.py +43 -34
  94. reconcile/github_org.py +4 -6
  95. reconcile/github_owners.py +1 -1
  96. reconcile/github_repo_invites.py +2 -5
  97. reconcile/gitlab_fork_compliance.py +14 -13
  98. reconcile/gitlab_housekeeping.py +185 -91
  99. reconcile/gitlab_labeler.py +15 -14
  100. reconcile/gitlab_members.py +126 -120
  101. reconcile/gitlab_owners.py +53 -66
  102. reconcile/gitlab_permissions.py +167 -6
  103. reconcile/glitchtip/README.md +150 -0
  104. reconcile/glitchtip/integration.py +99 -51
  105. reconcile/glitchtip/reconciler.py +99 -70
  106. reconcile/glitchtip_project_alerts/__init__.py +0 -0
  107. reconcile/glitchtip_project_alerts/integration.py +333 -0
  108. reconcile/glitchtip_project_dsn/integration.py +43 -43
  109. reconcile/gql_definitions/acs/__init__.py +0 -0
  110. reconcile/gql_definitions/acs/acs_instances.py +83 -0
  111. reconcile/gql_definitions/acs/acs_policies.py +239 -0
  112. reconcile/gql_definitions/acs/acs_rbac.py +111 -0
  113. reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +46 -8
  114. reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +38 -8
  115. reconcile/gql_definitions/app_interface_metrics_exporter/__init__.py +0 -0
  116. reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +61 -0
  117. reconcile/gql_definitions/aws_account_manager/__init__.py +0 -0
  118. reconcile/gql_definitions/aws_account_manager/aws_accounts.py +177 -0
  119. reconcile/gql_definitions/aws_ami_cleanup/__init__.py +0 -0
  120. reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +161 -0
  121. reconcile/gql_definitions/aws_saml_idp/__init__.py +0 -0
  122. reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +117 -0
  123. reconcile/gql_definitions/aws_saml_roles/__init__.py +0 -0
  124. reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +117 -0
  125. reconcile/gql_definitions/aws_saml_roles/roles.py +97 -0
  126. reconcile/gql_definitions/aws_version_sync/__init__.py +0 -0
  127. reconcile/gql_definitions/aws_version_sync/clusters.py +83 -0
  128. reconcile/gql_definitions/aws_version_sync/namespaces.py +143 -0
  129. reconcile/gql_definitions/change_owners/queries/change_types.py +16 -29
  130. reconcile/gql_definitions/change_owners/queries/self_service_roles.py +45 -11
  131. reconcile/gql_definitions/cluster_auth_rhidp/__init__.py +0 -0
  132. reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +128 -0
  133. reconcile/gql_definitions/cna/queries/cna_provisioners.py +6 -8
  134. reconcile/gql_definitions/cna/queries/cna_resources.py +3 -5
  135. reconcile/gql_definitions/common/alerting_services_settings.py +2 -2
  136. reconcile/gql_definitions/common/app_code_component_repos.py +9 -5
  137. reconcile/gql_definitions/{glitchtip/glitchtip_settings.py → common/app_interface_custom_messages.py} +14 -16
  138. reconcile/gql_definitions/common/app_interface_dms_settings.py +86 -0
  139. reconcile/gql_definitions/common/app_interface_repo_settings.py +2 -2
  140. reconcile/gql_definitions/common/app_interface_state_settings.py +3 -5
  141. reconcile/gql_definitions/common/app_interface_vault_settings.py +3 -5
  142. reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +120 -0
  143. reconcile/gql_definitions/common/apps.py +72 -0
  144. reconcile/gql_definitions/common/aws_vpc_requests.py +109 -0
  145. reconcile/gql_definitions/common/aws_vpcs.py +84 -0
  146. reconcile/gql_definitions/common/clusters.py +120 -254
  147. reconcile/gql_definitions/common/clusters_minimal.py +11 -35
  148. reconcile/gql_definitions/common/clusters_with_dms.py +72 -0
  149. reconcile/gql_definitions/common/clusters_with_peering.py +70 -98
  150. reconcile/gql_definitions/common/github_orgs.py +2 -2
  151. reconcile/gql_definitions/common/jira_settings.py +68 -0
  152. reconcile/gql_definitions/common/jiralert_settings.py +68 -0
  153. reconcile/gql_definitions/common/namespaces.py +74 -32
  154. reconcile/gql_definitions/common/namespaces_minimal.py +4 -10
  155. reconcile/gql_definitions/common/ocm_env_telemeter.py +95 -0
  156. reconcile/gql_definitions/common/ocm_environments.py +4 -2
  157. reconcile/gql_definitions/common/pagerduty_instances.py +5 -5
  158. reconcile/gql_definitions/common/pgp_reencryption_settings.py +5 -11
  159. reconcile/gql_definitions/common/pipeline_providers.py +45 -90
  160. reconcile/gql_definitions/common/quay_instances.py +64 -0
  161. reconcile/gql_definitions/common/quay_orgs.py +68 -0
  162. reconcile/gql_definitions/common/reserved_networks.py +94 -0
  163. reconcile/gql_definitions/common/saas_files.py +133 -95
  164. reconcile/gql_definitions/common/saas_target_namespaces.py +41 -26
  165. reconcile/gql_definitions/common/saasherder_settings.py +2 -2
  166. reconcile/gql_definitions/common/slack_workspaces.py +62 -0
  167. reconcile/gql_definitions/common/smtp_client_settings.py +2 -2
  168. reconcile/gql_definitions/common/state_aws_account.py +77 -0
  169. reconcile/gql_definitions/common/users.py +3 -2
  170. reconcile/gql_definitions/cost_report/__init__.py +0 -0
  171. reconcile/gql_definitions/cost_report/app_names.py +68 -0
  172. reconcile/gql_definitions/cost_report/cost_namespaces.py +86 -0
  173. reconcile/gql_definitions/cost_report/settings.py +77 -0
  174. reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +42 -12
  175. reconcile/gql_definitions/dynatrace_token_provider/__init__.py +0 -0
  176. reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +79 -0
  177. reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +84 -0
  178. reconcile/gql_definitions/endpoints_discovery/__init__.py +0 -0
  179. reconcile/gql_definitions/endpoints_discovery/namespaces.py +127 -0
  180. reconcile/gql_definitions/external_resources/__init__.py +0 -0
  181. reconcile/gql_definitions/external_resources/aws_accounts.py +73 -0
  182. reconcile/gql_definitions/external_resources/external_resources_modules.py +78 -0
  183. reconcile/gql_definitions/external_resources/external_resources_namespaces.py +1111 -0
  184. reconcile/gql_definitions/external_resources/external_resources_settings.py +98 -0
  185. reconcile/gql_definitions/fragments/aus_organization.py +34 -39
  186. reconcile/gql_definitions/fragments/aws_account_common.py +62 -0
  187. reconcile/gql_definitions/fragments/aws_account_managed.py +57 -0
  188. reconcile/gql_definitions/fragments/aws_account_sso.py +35 -0
  189. reconcile/gql_definitions/fragments/aws_infra_management_account.py +2 -2
  190. reconcile/gql_definitions/fragments/aws_vpc.py +47 -0
  191. reconcile/gql_definitions/fragments/aws_vpc_request.py +65 -0
  192. reconcile/gql_definitions/fragments/aws_vpc_request_subnet.py +29 -0
  193. reconcile/gql_definitions/fragments/deplopy_resources.py +7 -7
  194. reconcile/gql_definitions/fragments/disable.py +28 -0
  195. reconcile/gql_definitions/fragments/jumphost_common_fields.py +2 -2
  196. reconcile/gql_definitions/fragments/membership_source.py +47 -0
  197. reconcile/gql_definitions/fragments/minimal_ocm_organization.py +29 -0
  198. reconcile/gql_definitions/fragments/oc_connection_cluster.py +4 -9
  199. reconcile/gql_definitions/fragments/ocm_environment.py +5 -5
  200. reconcile/gql_definitions/fragments/pipeline_provider_retention.py +30 -0
  201. reconcile/gql_definitions/fragments/prometheus_instance.py +48 -0
  202. reconcile/gql_definitions/fragments/resource_limits_requirements.py +29 -0
  203. reconcile/gql_definitions/fragments/{resource_requirements.py → resource_requests_requirements.py} +3 -3
  204. reconcile/gql_definitions/fragments/resource_values.py +2 -2
  205. reconcile/gql_definitions/fragments/saas_target_namespace.py +55 -12
  206. reconcile/gql_definitions/fragments/serviceaccount_token.py +38 -0
  207. reconcile/gql_definitions/fragments/terraform_state.py +36 -0
  208. reconcile/gql_definitions/fragments/upgrade_policy.py +5 -3
  209. reconcile/gql_definitions/fragments/user.py +3 -2
  210. reconcile/gql_definitions/fragments/vault_secret.py +2 -2
  211. reconcile/gql_definitions/gitlab_members/gitlab_instances.py +6 -2
  212. reconcile/gql_definitions/gitlab_members/permissions.py +3 -5
  213. reconcile/gql_definitions/glitchtip/glitchtip_instance.py +16 -2
  214. reconcile/gql_definitions/glitchtip/glitchtip_project.py +22 -23
  215. reconcile/gql_definitions/glitchtip_project_alerts/__init__.py +0 -0
  216. reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +173 -0
  217. reconcile/gql_definitions/integrations/integrations.py +62 -45
  218. reconcile/gql_definitions/introspection.json +51176 -0
  219. reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +13 -5
  220. reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +79 -0
  221. reconcile/gql_definitions/jira/__init__.py +0 -0
  222. reconcile/gql_definitions/jira/jira_servers.py +80 -0
  223. reconcile/gql_definitions/jira_permissions_validator/__init__.py +0 -0
  224. reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +131 -0
  225. reconcile/gql_definitions/jumphosts/jumphosts.py +3 -5
  226. reconcile/gql_definitions/ldap_groups/__init__.py +0 -0
  227. reconcile/gql_definitions/ldap_groups/roles.py +111 -0
  228. reconcile/gql_definitions/ldap_groups/settings.py +79 -0
  229. reconcile/gql_definitions/maintenance/__init__.py +0 -0
  230. reconcile/gql_definitions/maintenance/maintenances.py +101 -0
  231. reconcile/gql_definitions/membershipsources/__init__.py +0 -0
  232. reconcile/gql_definitions/membershipsources/roles.py +112 -0
  233. reconcile/gql_definitions/ocm_labels/__init__.py +0 -0
  234. reconcile/gql_definitions/ocm_labels/clusters.py +112 -0
  235. reconcile/gql_definitions/ocm_labels/organizations.py +78 -0
  236. reconcile/gql_definitions/ocm_subscription_labels/__init__.py +0 -0
  237. reconcile/gql_definitions/openshift_cluster_bots/__init__.py +0 -0
  238. reconcile/gql_definitions/openshift_cluster_bots/clusters.py +126 -0
  239. reconcile/gql_definitions/openshift_groups/managed_groups.py +2 -2
  240. reconcile/gql_definitions/openshift_groups/managed_roles.py +3 -2
  241. reconcile/gql_definitions/openshift_serviceaccount_tokens/__init__.py +0 -0
  242. reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +132 -0
  243. reconcile/gql_definitions/quay_membership/quay_membership.py +3 -5
  244. reconcile/gql_definitions/rhidp/__init__.py +0 -0
  245. reconcile/gql_definitions/rhidp/organizations.py +96 -0
  246. reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +2 -2
  247. reconcile/gql_definitions/service_dependencies/service_dependencies.py +9 -31
  248. reconcile/gql_definitions/sharding/aws_accounts.py +2 -2
  249. reconcile/gql_definitions/sharding/ocm_organization.py +63 -0
  250. reconcile/gql_definitions/skupper_network/site_controller_template.py +2 -2
  251. reconcile/gql_definitions/skupper_network/skupper_networks.py +12 -38
  252. reconcile/gql_definitions/slack_usergroups/clusters.py +2 -2
  253. reconcile/gql_definitions/slack_usergroups/permissions.py +8 -15
  254. reconcile/gql_definitions/slack_usergroups/users.py +3 -2
  255. reconcile/gql_definitions/slo_documents/__init__.py +0 -0
  256. reconcile/gql_definitions/slo_documents/slo_documents.py +142 -0
  257. reconcile/gql_definitions/status_board/__init__.py +0 -0
  258. reconcile/gql_definitions/status_board/status_board.py +163 -0
  259. reconcile/gql_definitions/statuspage/statuspages.py +56 -7
  260. reconcile/gql_definitions/templating/__init__.py +0 -0
  261. reconcile/gql_definitions/templating/template_collection.py +130 -0
  262. reconcile/gql_definitions/templating/templates.py +108 -0
  263. reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +4 -8
  264. reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +8 -8
  265. reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +6 -8
  266. reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +45 -56
  267. reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +4 -8
  268. reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +4 -8
  269. reconcile/gql_definitions/terraform_init/__init__.py +0 -0
  270. reconcile/gql_definitions/terraform_init/aws_accounts.py +93 -0
  271. reconcile/gql_definitions/terraform_repo/__init__.py +0 -0
  272. reconcile/gql_definitions/terraform_repo/terraform_repo.py +141 -0
  273. reconcile/gql_definitions/terraform_resources/database_access_manager.py +158 -0
  274. reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +153 -162
  275. reconcile/gql_definitions/terraform_tgw_attachments/__init__.py +0 -0
  276. reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +119 -0
  277. reconcile/gql_definitions/unleash_feature_toggles/__init__.py +0 -0
  278. reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +113 -0
  279. reconcile/gql_definitions/vault_instances/vault_instances.py +17 -50
  280. reconcile/gql_definitions/vault_policies/vault_policies.py +2 -2
  281. reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +49 -12
  282. reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +7 -2
  283. reconcile/integrations_manager.py +25 -13
  284. reconcile/jenkins/types.py +5 -1
  285. reconcile/jenkins_base.py +36 -0
  286. reconcile/jenkins_job_builder.py +10 -48
  287. reconcile/jenkins_job_builds_cleaner.py +40 -25
  288. reconcile/jenkins_job_cleaner.py +1 -3
  289. reconcile/jenkins_roles.py +22 -26
  290. reconcile/jenkins_webhooks.py +9 -6
  291. reconcile/jenkins_worker_fleets.py +11 -6
  292. reconcile/jira_permissions_validator.py +340 -0
  293. reconcile/jira_watcher.py +3 -5
  294. reconcile/ldap_groups/__init__.py +0 -0
  295. reconcile/ldap_groups/integration.py +279 -0
  296. reconcile/ldap_users.py +3 -0
  297. reconcile/ocm/types.py +39 -59
  298. reconcile/ocm_additional_routers.py +0 -1
  299. reconcile/ocm_addons_upgrade_tests_trigger.py +10 -15
  300. reconcile/ocm_aws_infrastructure_access.py +30 -32
  301. reconcile/ocm_clusters.py +217 -130
  302. reconcile/ocm_external_configuration_labels.py +15 -0
  303. reconcile/ocm_github_idp.py +1 -1
  304. reconcile/ocm_groups.py +25 -5
  305. reconcile/ocm_internal_notifications/__init__.py +0 -0
  306. reconcile/ocm_internal_notifications/integration.py +119 -0
  307. reconcile/ocm_labels/__init__.py +0 -0
  308. reconcile/ocm_labels/integration.py +409 -0
  309. reconcile/ocm_machine_pools.py +517 -108
  310. reconcile/ocm_upgrade_scheduler_org_updater.py +15 -11
  311. reconcile/openshift_base.py +609 -207
  312. reconcile/openshift_cluster_bots.py +344 -0
  313. reconcile/openshift_clusterrolebindings.py +15 -15
  314. reconcile/openshift_groups.py +42 -45
  315. reconcile/openshift_limitranges.py +1 -0
  316. reconcile/openshift_namespace_labels.py +22 -28
  317. reconcile/openshift_namespaces.py +22 -22
  318. reconcile/openshift_network_policies.py +4 -8
  319. reconcile/openshift_prometheus_rules.py +43 -0
  320. reconcile/openshift_resourcequotas.py +2 -16
  321. reconcile/openshift_resources.py +12 -10
  322. reconcile/openshift_resources_base.py +304 -328
  323. reconcile/openshift_rolebindings.py +18 -20
  324. reconcile/openshift_saas_deploy.py +105 -21
  325. reconcile/openshift_saas_deploy_change_tester.py +30 -35
  326. reconcile/openshift_saas_deploy_trigger_base.py +39 -36
  327. reconcile/openshift_saas_deploy_trigger_cleaner.py +41 -27
  328. reconcile/openshift_saas_deploy_trigger_configs.py +1 -2
  329. reconcile/openshift_saas_deploy_trigger_images.py +1 -2
  330. reconcile/openshift_saas_deploy_trigger_moving_commits.py +1 -2
  331. reconcile/openshift_saas_deploy_trigger_upstream_jobs.py +1 -2
  332. reconcile/openshift_serviceaccount_tokens.py +138 -74
  333. reconcile/openshift_tekton_resources.py +89 -24
  334. reconcile/openshift_upgrade_watcher.py +110 -62
  335. reconcile/openshift_users.py +16 -15
  336. reconcile/openshift_vault_secrets.py +11 -6
  337. reconcile/oum/__init__.py +0 -0
  338. reconcile/oum/base.py +387 -0
  339. reconcile/oum/labelset.py +55 -0
  340. reconcile/oum/metrics.py +71 -0
  341. reconcile/oum/models.py +69 -0
  342. reconcile/oum/providers.py +59 -0
  343. reconcile/oum/standalone.py +196 -0
  344. reconcile/prometheus_rules_tester/integration.py +31 -23
  345. reconcile/quay_base.py +4 -1
  346. reconcile/quay_membership.py +1 -2
  347. reconcile/quay_mirror.py +111 -61
  348. reconcile/quay_mirror_org.py +34 -21
  349. reconcile/quay_permissions.py +7 -3
  350. reconcile/quay_repos.py +24 -32
  351. reconcile/queries.py +263 -198
  352. reconcile/query_validator.py +3 -5
  353. reconcile/resource_scraper.py +3 -4
  354. reconcile/{template_tester.py → resource_template_tester.py} +3 -3
  355. reconcile/rhidp/__init__.py +0 -0
  356. reconcile/rhidp/common.py +214 -0
  357. reconcile/rhidp/metrics.py +20 -0
  358. reconcile/rhidp/ocm_oidc_idp/__init__.py +0 -0
  359. reconcile/rhidp/ocm_oidc_idp/base.py +221 -0
  360. reconcile/rhidp/ocm_oidc_idp/integration.py +56 -0
  361. reconcile/rhidp/ocm_oidc_idp/metrics.py +22 -0
  362. reconcile/rhidp/sso_client/__init__.py +0 -0
  363. reconcile/rhidp/sso_client/base.py +266 -0
  364. reconcile/rhidp/sso_client/integration.py +60 -0
  365. reconcile/rhidp/sso_client/metrics.py +39 -0
  366. reconcile/run_integration.py +293 -0
  367. reconcile/saas_auto_promotions_manager/integration.py +69 -24
  368. reconcile/saas_auto_promotions_manager/merge_request_manager/batcher.py +208 -0
  369. reconcile/saas_auto_promotions_manager/merge_request_manager/desired_state.py +28 -0
  370. reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request.py +3 -4
  371. reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request_manager_v2.py +172 -0
  372. reconcile/saas_auto_promotions_manager/merge_request_manager/metrics.py +42 -0
  373. reconcile/saas_auto_promotions_manager/merge_request_manager/mr_parser.py +226 -0
  374. reconcile/saas_auto_promotions_manager/merge_request_manager/open_merge_requests.py +23 -0
  375. reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +108 -32
  376. reconcile/saas_auto_promotions_manager/meta.py +4 -0
  377. reconcile/saas_auto_promotions_manager/publisher.py +32 -4
  378. reconcile/saas_auto_promotions_manager/s3_exporter.py +77 -0
  379. reconcile/saas_auto_promotions_manager/subscriber.py +110 -23
  380. reconcile/saas_auto_promotions_manager/utils/saas_files_inventory.py +48 -41
  381. reconcile/saas_file_validator.py +16 -6
  382. reconcile/sendgrid_teammates.py +27 -12
  383. reconcile/service_dependencies.py +0 -3
  384. reconcile/signalfx_endpoint_monitoring.py +2 -5
  385. reconcile/skupper_network/integration.py +10 -11
  386. reconcile/skupper_network/models.py +3 -5
  387. reconcile/skupper_network/reconciler.py +28 -35
  388. reconcile/skupper_network/site_controller.py +8 -8
  389. reconcile/slack_base.py +4 -7
  390. reconcile/slack_usergroups.py +249 -171
  391. reconcile/sql_query.py +324 -171
  392. reconcile/status.py +0 -1
  393. reconcile/status_board.py +275 -0
  394. reconcile/statuspage/__init__.py +0 -5
  395. reconcile/statuspage/atlassian.py +219 -80
  396. reconcile/statuspage/integration.py +9 -97
  397. reconcile/statuspage/integrations/__init__.py +0 -0
  398. reconcile/statuspage/integrations/components.py +77 -0
  399. reconcile/statuspage/integrations/maintenances.py +111 -0
  400. reconcile/statuspage/page.py +107 -72
  401. reconcile/statuspage/state.py +6 -11
  402. reconcile/statuspage/status.py +8 -12
  403. reconcile/templates/rosa-classic-cluster-creation.sh.j2 +60 -0
  404. reconcile/templates/rosa-hcp-cluster-creation.sh.j2 +61 -0
  405. reconcile/templating/__init__.py +0 -0
  406. reconcile/templating/lib/__init__.py +0 -0
  407. reconcile/templating/lib/merge_request_manager.py +180 -0
  408. reconcile/templating/lib/model.py +20 -0
  409. reconcile/templating/lib/rendering.py +191 -0
  410. reconcile/templating/renderer.py +410 -0
  411. reconcile/templating/validator.py +153 -0
  412. reconcile/terraform_aws_route53.py +13 -10
  413. reconcile/terraform_cloudflare_dns.py +92 -122
  414. reconcile/terraform_cloudflare_resources.py +15 -13
  415. reconcile/terraform_cloudflare_users.py +27 -27
  416. reconcile/terraform_init/__init__.py +0 -0
  417. reconcile/terraform_init/integration.py +165 -0
  418. reconcile/terraform_init/merge_request.py +57 -0
  419. reconcile/terraform_init/merge_request_manager.py +102 -0
  420. reconcile/terraform_repo.py +403 -0
  421. reconcile/terraform_resources.py +266 -168
  422. reconcile/terraform_tgw_attachments.py +417 -167
  423. reconcile/terraform_users.py +40 -17
  424. reconcile/terraform_vpc_peerings.py +310 -142
  425. reconcile/terraform_vpc_resources/__init__.py +0 -0
  426. reconcile/terraform_vpc_resources/integration.py +220 -0
  427. reconcile/terraform_vpc_resources/merge_request.py +57 -0
  428. reconcile/terraform_vpc_resources/merge_request_manager.py +107 -0
  429. reconcile/typed_queries/alerting_services_settings.py +1 -2
  430. reconcile/typed_queries/app_interface_custom_messages.py +24 -0
  431. reconcile/typed_queries/app_interface_deadmanssnitch_settings.py +17 -0
  432. reconcile/typed_queries/app_interface_metrics_exporter/__init__.py +0 -0
  433. reconcile/typed_queries/app_interface_metrics_exporter/onboarding_status.py +13 -0
  434. reconcile/typed_queries/app_interface_repo_url.py +1 -2
  435. reconcile/typed_queries/app_interface_state_settings.py +1 -3
  436. reconcile/typed_queries/app_interface_vault_settings.py +1 -2
  437. reconcile/typed_queries/app_quay_repos_escalation_policies.py +14 -0
  438. reconcile/typed_queries/apps.py +11 -0
  439. reconcile/typed_queries/aws_vpc_requests.py +9 -0
  440. reconcile/typed_queries/aws_vpcs.py +12 -0
  441. reconcile/typed_queries/cloudflare.py +10 -0
  442. reconcile/typed_queries/clusters.py +7 -5
  443. reconcile/typed_queries/clusters_minimal.py +6 -5
  444. reconcile/typed_queries/clusters_with_dms.py +16 -0
  445. reconcile/typed_queries/cost_report/__init__.py +0 -0
  446. reconcile/typed_queries/cost_report/app_names.py +22 -0
  447. reconcile/typed_queries/cost_report/cost_namespaces.py +43 -0
  448. reconcile/typed_queries/cost_report/settings.py +15 -0
  449. reconcile/typed_queries/dynatrace.py +10 -0
  450. reconcile/typed_queries/dynatrace_environments.py +14 -0
  451. reconcile/typed_queries/dynatrace_token_provider_token_specs.py +14 -0
  452. reconcile/typed_queries/external_resources.py +46 -0
  453. reconcile/typed_queries/get_state_aws_account.py +20 -0
  454. reconcile/typed_queries/glitchtip.py +10 -0
  455. reconcile/typed_queries/jenkins.py +25 -0
  456. reconcile/typed_queries/jira.py +7 -0
  457. reconcile/typed_queries/jira_settings.py +16 -0
  458. reconcile/typed_queries/jiralert_settings.py +22 -0
  459. reconcile/typed_queries/ocm.py +8 -0
  460. reconcile/typed_queries/pagerduty_instances.py +2 -7
  461. reconcile/typed_queries/quay.py +23 -0
  462. reconcile/typed_queries/repos.py +20 -8
  463. reconcile/typed_queries/reserved_networks.py +12 -0
  464. reconcile/typed_queries/saas_files.py +221 -167
  465. reconcile/typed_queries/slack.py +7 -0
  466. reconcile/typed_queries/slo_documents.py +12 -0
  467. reconcile/typed_queries/status_board.py +58 -0
  468. reconcile/typed_queries/tekton_pipeline_providers.py +1 -2
  469. reconcile/typed_queries/terraform_namespaces.py +1 -2
  470. reconcile/typed_queries/terraform_tgw_attachments/__init__.py +0 -0
  471. reconcile/typed_queries/terraform_tgw_attachments/aws_accounts.py +16 -0
  472. reconcile/typed_queries/unleash.py +10 -0
  473. reconcile/typed_queries/users.py +11 -0
  474. reconcile/typed_queries/vault.py +10 -0
  475. reconcile/unleash_feature_toggles/__init__.py +0 -0
  476. reconcile/unleash_feature_toggles/integration.py +287 -0
  477. reconcile/utils/acs/__init__.py +0 -0
  478. reconcile/utils/acs/base.py +81 -0
  479. reconcile/utils/acs/notifiers.py +143 -0
  480. reconcile/utils/acs/policies.py +163 -0
  481. reconcile/utils/acs/rbac.py +277 -0
  482. reconcile/utils/aggregated_list.py +11 -9
  483. reconcile/utils/amtool.py +6 -4
  484. reconcile/utils/aws_api.py +279 -66
  485. reconcile/utils/aws_api_typed/__init__.py +0 -0
  486. reconcile/utils/aws_api_typed/account.py +23 -0
  487. reconcile/utils/aws_api_typed/api.py +273 -0
  488. reconcile/utils/aws_api_typed/dynamodb.py +16 -0
  489. reconcile/utils/aws_api_typed/iam.py +67 -0
  490. reconcile/utils/aws_api_typed/organization.py +152 -0
  491. reconcile/utils/aws_api_typed/s3.py +26 -0
  492. reconcile/utils/aws_api_typed/service_quotas.py +79 -0
  493. reconcile/utils/aws_api_typed/sts.py +36 -0
  494. reconcile/utils/aws_api_typed/support.py +79 -0
  495. reconcile/utils/aws_helper.py +42 -3
  496. reconcile/utils/batches.py +11 -0
  497. reconcile/utils/binary.py +7 -9
  498. reconcile/utils/cloud_resource_best_practice/__init__.py +0 -0
  499. reconcile/utils/cloud_resource_best_practice/aws_rds.py +66 -0
  500. reconcile/utils/clusterhealth/__init__.py +0 -0
  501. reconcile/utils/clusterhealth/providerbase.py +39 -0
  502. reconcile/utils/clusterhealth/telemeter.py +39 -0
  503. reconcile/utils/config.py +3 -4
  504. reconcile/utils/deadmanssnitch_api.py +86 -0
  505. reconcile/utils/differ.py +205 -0
  506. reconcile/utils/disabled_integrations.py +4 -6
  507. reconcile/utils/dynatrace/__init__.py +0 -0
  508. reconcile/utils/dynatrace/client.py +93 -0
  509. reconcile/utils/early_exit_cache.py +289 -0
  510. reconcile/utils/elasticsearch_exceptions.py +5 -0
  511. reconcile/utils/environ.py +2 -2
  512. reconcile/utils/exceptions.py +4 -0
  513. reconcile/utils/expiration.py +4 -8
  514. reconcile/utils/extended_early_exit.py +210 -0
  515. reconcile/utils/external_resource_spec.py +34 -12
  516. reconcile/utils/external_resources.py +48 -20
  517. reconcile/utils/filtering.py +16 -0
  518. reconcile/utils/git.py +49 -16
  519. reconcile/utils/github_api.py +10 -9
  520. reconcile/utils/gitlab_api.py +333 -190
  521. reconcile/utils/glitchtip/client.py +97 -100
  522. reconcile/utils/glitchtip/models.py +89 -11
  523. reconcile/utils/gql.py +157 -58
  524. reconcile/utils/grouping.py +17 -0
  525. reconcile/utils/helm.py +89 -18
  526. reconcile/utils/helpers.py +51 -0
  527. reconcile/utils/imap_client.py +5 -6
  528. reconcile/utils/internal_groups/__init__.py +0 -0
  529. reconcile/utils/internal_groups/client.py +160 -0
  530. reconcile/utils/internal_groups/models.py +71 -0
  531. reconcile/utils/jenkins_api.py +10 -34
  532. reconcile/utils/jinja2/__init__.py +0 -0
  533. reconcile/utils/{jinja2_ext.py → jinja2/extensions.py} +6 -4
  534. reconcile/utils/jinja2/filters.py +142 -0
  535. reconcile/utils/jinja2/utils.py +278 -0
  536. reconcile/utils/jira_client.py +165 -8
  537. reconcile/utils/jjb_client.py +47 -35
  538. reconcile/utils/jobcontroller/__init__.py +0 -0
  539. reconcile/utils/jobcontroller/controller.py +413 -0
  540. reconcile/utils/jobcontroller/models.py +195 -0
  541. reconcile/utils/jsonpath.py +4 -5
  542. reconcile/utils/jump_host.py +13 -12
  543. reconcile/utils/keycloak.py +106 -0
  544. reconcile/utils/ldap_client.py +35 -6
  545. reconcile/utils/lean_terraform_client.py +115 -6
  546. reconcile/utils/membershipsources/__init__.py +0 -0
  547. reconcile/utils/membershipsources/app_interface_resolver.py +60 -0
  548. reconcile/utils/membershipsources/models.py +91 -0
  549. reconcile/utils/membershipsources/resolver.py +110 -0
  550. reconcile/utils/merge_request_manager/__init__.py +0 -0
  551. reconcile/utils/merge_request_manager/merge_request_manager.py +99 -0
  552. reconcile/utils/merge_request_manager/parser.py +67 -0
  553. reconcile/utils/metrics.py +511 -1
  554. reconcile/utils/models.py +123 -0
  555. reconcile/utils/mr/README.md +198 -0
  556. reconcile/utils/mr/__init__.py +14 -10
  557. reconcile/utils/mr/app_interface_reporter.py +2 -2
  558. reconcile/utils/mr/aws_access.py +4 -4
  559. reconcile/utils/mr/base.py +51 -31
  560. reconcile/utils/mr/clusters_updates.py +10 -7
  561. reconcile/utils/mr/glitchtip_access_reporter.py +2 -4
  562. reconcile/utils/mr/labels.py +14 -1
  563. reconcile/utils/mr/notificator.py +1 -3
  564. reconcile/utils/mr/ocm_update_recommended_version.py +1 -2
  565. reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py +7 -3
  566. reconcile/utils/mr/promote_qontract.py +203 -0
  567. reconcile/utils/mr/user_maintenance.py +24 -4
  568. reconcile/utils/oauth2_backend_application_session.py +132 -0
  569. reconcile/utils/oc.py +194 -170
  570. reconcile/utils/oc_connection_parameters.py +40 -51
  571. reconcile/utils/oc_filters.py +11 -13
  572. reconcile/utils/oc_map.py +14 -35
  573. reconcile/utils/ocm/__init__.py +30 -1
  574. reconcile/utils/ocm/addons.py +228 -0
  575. reconcile/utils/ocm/base.py +618 -5
  576. reconcile/utils/ocm/cluster_groups.py +5 -56
  577. reconcile/utils/ocm/clusters.py +111 -99
  578. reconcile/utils/ocm/identity_providers.py +66 -0
  579. reconcile/utils/ocm/label_sources.py +75 -0
  580. reconcile/utils/ocm/labels.py +139 -54
  581. reconcile/utils/ocm/manifests.py +39 -0
  582. reconcile/utils/ocm/ocm.py +182 -928
  583. reconcile/utils/ocm/products.py +758 -0
  584. reconcile/utils/ocm/search_filters.py +20 -28
  585. reconcile/utils/ocm/service_log.py +32 -79
  586. reconcile/utils/ocm/sre_capability_labels.py +51 -0
  587. reconcile/utils/ocm/status_board.py +66 -0
  588. reconcile/utils/ocm/subscriptions.py +49 -59
  589. reconcile/utils/ocm/syncsets.py +39 -0
  590. reconcile/utils/ocm/upgrades.py +181 -0
  591. reconcile/utils/ocm_base_client.py +71 -36
  592. reconcile/utils/openshift_resource.py +113 -67
  593. reconcile/utils/output.py +18 -11
  594. reconcile/utils/pagerduty_api.py +16 -10
  595. reconcile/utils/parse_dhms_duration.py +13 -1
  596. reconcile/utils/prometheus.py +123 -0
  597. reconcile/utils/promotion_state.py +56 -19
  598. reconcile/utils/promtool.py +5 -8
  599. reconcile/utils/quay_api.py +13 -25
  600. reconcile/utils/raw_github_api.py +3 -5
  601. reconcile/utils/repo_owners.py +2 -8
  602. reconcile/utils/rest_api_base.py +126 -0
  603. reconcile/utils/rosa/__init__.py +0 -0
  604. reconcile/utils/rosa/rosa_cli.py +310 -0
  605. reconcile/utils/rosa/session.py +201 -0
  606. reconcile/utils/ruamel.py +16 -0
  607. reconcile/utils/runtime/__init__.py +0 -1
  608. reconcile/utils/runtime/desired_state_diff.py +9 -20
  609. reconcile/utils/runtime/environment.py +33 -8
  610. reconcile/utils/runtime/integration.py +28 -12
  611. reconcile/utils/runtime/meta.py +1 -3
  612. reconcile/utils/runtime/runner.py +8 -11
  613. reconcile/utils/runtime/sharding.py +93 -36
  614. reconcile/utils/saasherder/__init__.py +1 -1
  615. reconcile/utils/saasherder/interfaces.py +143 -138
  616. reconcile/utils/saasherder/models.py +201 -43
  617. reconcile/utils/saasherder/saasherder.py +508 -378
  618. reconcile/utils/secret_reader.py +22 -27
  619. reconcile/utils/semver_helper.py +15 -1
  620. reconcile/utils/slack_api.py +124 -36
  621. reconcile/utils/smtp_client.py +1 -2
  622. reconcile/utils/sqs_gateway.py +10 -6
  623. reconcile/utils/state.py +276 -127
  624. reconcile/utils/terraform/config_client.py +6 -7
  625. reconcile/utils/terraform_client.py +284 -125
  626. reconcile/utils/terrascript/cloudflare_client.py +38 -17
  627. reconcile/utils/terrascript/cloudflare_resources.py +67 -18
  628. reconcile/utils/terrascript/models.py +2 -3
  629. reconcile/utils/terrascript/resources.py +1 -2
  630. reconcile/utils/terrascript_aws_client.py +1292 -540
  631. reconcile/utils/three_way_diff_strategy.py +157 -0
  632. reconcile/utils/unleash/__init__.py +11 -0
  633. reconcile/utils/{unleash.py → unleash/client.py} +35 -29
  634. reconcile/utils/unleash/server.py +145 -0
  635. reconcile/utils/vault.py +42 -32
  636. reconcile/utils/vaultsecretref.py +2 -4
  637. reconcile/utils/vcs.py +250 -0
  638. reconcile/vault_replication.py +38 -31
  639. reconcile/vpc_peerings_validator.py +82 -13
  640. tools/app_interface_metrics_exporter.py +70 -0
  641. tools/app_interface_reporter.py +44 -157
  642. tools/cli_commands/container_images_report.py +154 -0
  643. tools/cli_commands/cost_report/__init__.py +0 -0
  644. tools/cli_commands/cost_report/aws.py +137 -0
  645. tools/cli_commands/cost_report/cost_management_api.py +155 -0
  646. tools/cli_commands/cost_report/model.py +49 -0
  647. tools/cli_commands/cost_report/openshift.py +166 -0
  648. tools/cli_commands/cost_report/openshift_cost_optimization.py +187 -0
  649. tools/cli_commands/cost_report/response.py +124 -0
  650. tools/cli_commands/cost_report/util.py +72 -0
  651. tools/cli_commands/cost_report/view.py +524 -0
  652. tools/cli_commands/erv2.py +620 -0
  653. tools/cli_commands/gpg_encrypt.py +5 -8
  654. tools/cli_commands/systems_and_tools.py +489 -0
  655. tools/glitchtip_access_revalidation.py +1 -1
  656. tools/qontract_cli.py +2301 -673
  657. tools/saas_metrics_exporter/__init__.py +0 -0
  658. tools/saas_metrics_exporter/commit_distance/__init__.py +0 -0
  659. tools/saas_metrics_exporter/commit_distance/channel.py +63 -0
  660. tools/saas_metrics_exporter/commit_distance/commit_distance.py +103 -0
  661. tools/saas_metrics_exporter/commit_distance/metrics.py +19 -0
  662. tools/saas_metrics_exporter/main.py +99 -0
  663. tools/saas_promotion_state/__init__.py +0 -0
  664. tools/saas_promotion_state/saas_promotion_state.py +105 -0
  665. tools/sd_app_sre_alert_report.py +145 -0
  666. tools/template_validation.py +107 -0
  667. e2e_tests/cli.py +0 -83
  668. e2e_tests/create_namespace.py +0 -43
  669. e2e_tests/dedicated_admin_rolebindings.py +0 -44
  670. e2e_tests/dedicated_admin_test_base.py +0 -39
  671. e2e_tests/default_network_policies.py +0 -47
  672. e2e_tests/default_project_labels.py +0 -52
  673. e2e_tests/network_policy_test_base.py +0 -17
  674. e2e_tests/test_base.py +0 -56
  675. qontract_reconcile-0.9.1rc298.dist-info/METADATA +0 -63
  676. qontract_reconcile-0.9.1rc298.dist-info/RECORD +0 -585
  677. qontract_reconcile-0.9.1rc298.dist-info/top_level.txt +0 -4
  678. reconcile/ecr_mirror.py +0 -152
  679. reconcile/github_scanner.py +0 -74
  680. reconcile/gitlab_integrations.py +0 -63
  681. reconcile/gql_definitions/ocm_oidc_idp/clusters.py +0 -195
  682. reconcile/gql_definitions/ocp_release_mirror/ocp_release_mirror.py +0 -287
  683. reconcile/integrations_validator.py +0 -18
  684. reconcile/jenkins_plugins.py +0 -129
  685. reconcile/kafka_clusters.py +0 -208
  686. reconcile/ocm_cluster_admin.py +0 -42
  687. reconcile/ocm_oidc_idp.py +0 -198
  688. reconcile/ocp_release_mirror.py +0 -373
  689. reconcile/prometheus_rules_tester_old.py +0 -436
  690. reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request_manager.py +0 -279
  691. reconcile/saas_auto_promotions_manager/utils/vcs.py +0 -141
  692. reconcile/sentry_config.py +0 -613
  693. reconcile/sentry_helper.py +0 -69
  694. reconcile/test/conftest.py +0 -187
  695. reconcile/test/fixtures.py +0 -24
  696. reconcile/test/saas_auto_promotions_manager/conftest.py +0 -69
  697. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/conftest.py +0 -110
  698. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/data_keys.py +0 -10
  699. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_housekeeping.py +0 -200
  700. reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/test_merge_request_manager.py +0 -151
  701. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/conftest.py +0 -63
  702. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/data_keys.py +0 -4
  703. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_multiple_namespaces.py +0 -46
  704. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_namespace.py +0 -94
  705. reconcile/test/saas_auto_promotions_manager/merge_request_manager/renderer/test_content_single_target.py +0 -44
  706. reconcile/test/saas_auto_promotions_manager/subscriber/conftest.py +0 -74
  707. reconcile/test/saas_auto_promotions_manager/subscriber/data_keys.py +0 -11
  708. reconcile/test/saas_auto_promotions_manager/subscriber/test_content_hash.py +0 -155
  709. reconcile/test/saas_auto_promotions_manager/subscriber/test_diff.py +0 -173
  710. reconcile/test/saas_auto_promotions_manager/subscriber/test_multiple_channels_config_hash.py +0 -226
  711. reconcile/test/saas_auto_promotions_manager/subscriber/test_multiple_channels_moving_ref.py +0 -224
  712. reconcile/test/saas_auto_promotions_manager/subscriber/test_single_channel_with_single_publisher.py +0 -350
  713. reconcile/test/saas_auto_promotions_manager/test_integration_test.py +0 -129
  714. reconcile/test/saas_auto_promotions_manager/utils/saas_files_inventory/test_multiple_publishers_for_single_channel.py +0 -70
  715. reconcile/test/saas_auto_promotions_manager/utils/saas_files_inventory/test_saas_files_use_target_config_hash.py +0 -63
  716. reconcile/test/saas_auto_promotions_manager/utils/saas_files_inventory/test_saas_files_with_auto_promote.py +0 -74
  717. reconcile/test/saas_auto_promotions_manager/utils/saas_files_inventory/test_saas_files_without_auto_promote.py +0 -65
  718. reconcile/test/test_aggregated_list.py +0 -237
  719. reconcile/test/test_amtool.py +0 -37
  720. reconcile/test/test_auto_promoter.py +0 -295
  721. reconcile/test/test_aws_ami_share.py +0 -68
  722. reconcile/test/test_aws_iam_keys.py +0 -70
  723. reconcile/test/test_aws_iam_password_reset.py +0 -35
  724. reconcile/test/test_aws_support_cases_sos.py +0 -23
  725. reconcile/test/test_checkpoint.py +0 -178
  726. reconcile/test/test_cli.py +0 -41
  727. reconcile/test/test_closedbox_endpoint_monitoring.py +0 -207
  728. reconcile/test/test_gabi_authorized_users.py +0 -72
  729. reconcile/test/test_github_org.py +0 -154
  730. reconcile/test/test_github_repo_invites.py +0 -123
  731. reconcile/test/test_gitlab_housekeeping.py +0 -88
  732. reconcile/test/test_gitlab_labeler.py +0 -129
  733. reconcile/test/test_gitlab_members.py +0 -283
  734. reconcile/test/test_instrumented_wrappers.py +0 -18
  735. reconcile/test/test_integrations_manager.py +0 -995
  736. reconcile/test/test_jenkins_worker_fleets.py +0 -55
  737. reconcile/test/test_jump_host.py +0 -117
  738. reconcile/test/test_ldap_users.py +0 -123
  739. reconcile/test/test_make.py +0 -28
  740. reconcile/test/test_ocm_additional_routers.py +0 -134
  741. reconcile/test/test_ocm_addons_upgrade_scheduler_org.py +0 -149
  742. reconcile/test/test_ocm_clusters.py +0 -598
  743. reconcile/test/test_ocm_clusters_manifest_updates.py +0 -89
  744. reconcile/test/test_ocm_oidc_idp.py +0 -315
  745. reconcile/test/test_ocm_update_recommended_version.py +0 -145
  746. reconcile/test/test_ocm_upgrade_scheduler.py +0 -614
  747. reconcile/test/test_ocm_upgrade_scheduler_org_updater.py +0 -129
  748. reconcile/test/test_openshift_base.py +0 -730
  749. reconcile/test/test_openshift_namespace_labels.py +0 -345
  750. reconcile/test/test_openshift_namespaces.py +0 -256
  751. reconcile/test/test_openshift_resource.py +0 -415
  752. reconcile/test/test_openshift_resources_base.py +0 -440
  753. reconcile/test/test_openshift_saas_deploy_change_tester.py +0 -310
  754. reconcile/test/test_openshift_tekton_resources.py +0 -253
  755. reconcile/test/test_openshift_upgrade_watcher.py +0 -146
  756. reconcile/test/test_prometheus_rules_tester.py +0 -151
  757. reconcile/test/test_prometheus_rules_tester_old.py +0 -77
  758. reconcile/test/test_quay_membership.py +0 -86
  759. reconcile/test/test_quay_mirror.py +0 -109
  760. reconcile/test/test_quay_mirror_org.py +0 -70
  761. reconcile/test/test_quay_repos.py +0 -59
  762. reconcile/test/test_queries.py +0 -53
  763. reconcile/test/test_repo_owners.py +0 -47
  764. reconcile/test/test_requests_sender.py +0 -139
  765. reconcile/test/test_saasherder.py +0 -1074
  766. reconcile/test/test_saasherder_allowed_secret_paths.py +0 -127
  767. reconcile/test/test_secret_reader.py +0 -153
  768. reconcile/test/test_slack_base.py +0 -185
  769. reconcile/test/test_slack_usergroups.py +0 -744
  770. reconcile/test/test_sql_query.py +0 -19
  771. reconcile/test/test_terraform_cloudflare_dns.py +0 -117
  772. reconcile/test/test_terraform_cloudflare_resources.py +0 -106
  773. reconcile/test/test_terraform_cloudflare_users.py +0 -749
  774. reconcile/test/test_terraform_resources.py +0 -257
  775. reconcile/test/test_terraform_tgw_attachments.py +0 -631
  776. reconcile/test/test_terraform_users.py +0 -57
  777. reconcile/test/test_terraform_vpc_peerings.py +0 -499
  778. reconcile/test/test_terraform_vpc_peerings_build_desired_state.py +0 -1061
  779. reconcile/test/test_unleash.py +0 -138
  780. reconcile/test/test_utils_aws_api.py +0 -240
  781. reconcile/test/test_utils_aws_helper.py +0 -80
  782. reconcile/test/test_utils_cluster_version_data.py +0 -177
  783. reconcile/test/test_utils_data_structures.py +0 -13
  784. reconcile/test/test_utils_disabled_integrations.py +0 -86
  785. reconcile/test/test_utils_expiration.py +0 -109
  786. reconcile/test/test_utils_external_resource_spec.py +0 -383
  787. reconcile/test/test_utils_external_resources.py +0 -247
  788. reconcile/test/test_utils_github_api.py +0 -73
  789. reconcile/test/test_utils_gitlab_api.py +0 -20
  790. reconcile/test/test_utils_gpg.py +0 -69
  791. reconcile/test/test_utils_gql.py +0 -81
  792. reconcile/test/test_utils_helm.py +0 -306
  793. reconcile/test/test_utils_helpers.py +0 -55
  794. reconcile/test/test_utils_imap_client.py +0 -65
  795. reconcile/test/test_utils_jjb_client.py +0 -52
  796. reconcile/test/test_utils_jsonpath.py +0 -286
  797. reconcile/test/test_utils_ldap_client.py +0 -51
  798. reconcile/test/test_utils_mr.py +0 -226
  799. reconcile/test/test_utils_mr_clusters_updates.py +0 -77
  800. reconcile/test/test_utils_oc.py +0 -984
  801. reconcile/test/test_utils_ocm.py +0 -110
  802. reconcile/test/test_utils_pagerduty_api.py +0 -251
  803. reconcile/test/test_utils_parse_dhms_duration.py +0 -34
  804. reconcile/test/test_utils_password_validator.py +0 -155
  805. reconcile/test/test_utils_quay_api.py +0 -86
  806. reconcile/test/test_utils_semver_helper.py +0 -19
  807. reconcile/test/test_utils_sharding.py +0 -56
  808. reconcile/test/test_utils_slack_api.py +0 -439
  809. reconcile/test/test_utils_smtp_client.py +0 -73
  810. reconcile/test/test_utils_state.py +0 -256
  811. reconcile/test/test_utils_terraform.py +0 -13
  812. reconcile/test/test_utils_terraform_client.py +0 -585
  813. reconcile/test/test_utils_terraform_config_client.py +0 -219
  814. reconcile/test/test_utils_terrascript_aws_client.py +0 -277
  815. reconcile/test/test_utils_terrascript_cloudflare_client.py +0 -597
  816. reconcile/test/test_utils_terrascript_cloudflare_resources.py +0 -26
  817. reconcile/test/test_vault_replication.py +0 -515
  818. reconcile/test/test_vault_utils.py +0 -47
  819. reconcile/test/test_version_bump.py +0 -18
  820. reconcile/test/test_vpc_peerings_validator.py +0 -103
  821. reconcile/test/test_wrong_region.py +0 -78
  822. reconcile/typed_queries/glitchtip_settings.py +0 -18
  823. reconcile/typed_queries/ocp_release_mirror.py +0 -11
  824. reconcile/unleash_watcher.py +0 -120
  825. reconcile/utils/git_secrets.py +0 -63
  826. reconcile/utils/mr/auto_promoter.py +0 -218
  827. reconcile/utils/sentry_client.py +0 -383
  828. release/test_version.py +0 -50
  829. release/version.py +0 -100
  830. tools/test/test_qontract_cli.py +0 -60
  831. tools/test/test_sre_checkpoints.py +0 -79
  832. /e2e_tests/__init__.py → /reconcile/aus/upgrades.py +0 -0
  833. /reconcile/{gql_definitions/ocp_release_mirror → aws_account_manager}/__init__.py +0 -0
  834. /reconcile/{test → aws_ami_cleanup}/__init__.py +0 -0
  835. /reconcile/{test/saas_auto_promotions_manager → aws_cloudwatch_log_retention}/__init__.py +0 -0
  836. /reconcile/{test/saas_auto_promotions_manager/merge_request_manager → aws_saml_idp}/__init__.py +0 -0
  837. /reconcile/{test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager → aws_saml_roles}/__init__.py +0 -0
  838. /reconcile/{test/saas_auto_promotions_manager/merge_request_manager/renderer → aws_version_sync}/__init__.py +0 -0
  839. /reconcile/{test/saas_auto_promotions_manager/subscriber → aws_version_sync/merge_request_manager}/__init__.py +0 -0
  840. /reconcile/{test/saas_auto_promotions_manager/utils → cluster_auth_rhidp}/__init__.py +0 -0
  841. /reconcile/{test/saas_auto_promotions_manager/utils/saas_files_inventory → dynatrace_token_provider}/__init__.py +0 -0
  842. {release → reconcile/endpoints_discovery}/__init__.py +0 -0
  843. {tools/test → reconcile/external_resources}/__init__.py +0 -0
reconcile/queries.py CHANGED
@@ -5,10 +5,7 @@ import shlex
5
5
  from collections.abc import Mapping
6
6
  from dataclasses import dataclass
7
7
  from textwrap import indent
8
- from typing import (
9
- Any,
10
- Optional,
11
- )
8
+ from typing import Any
12
9
 
13
10
  from jinja2 import Template
14
11
 
@@ -25,7 +22,7 @@ SECRET_READER_SETTINGS = """
25
22
  """
26
23
 
27
24
 
28
- def get_secret_reader_settings() -> Optional[Mapping[str, Any]]:
25
+ def get_secret_reader_settings() -> Mapping[str, Any] | None:
29
26
  """Returns SecretReader settings"""
30
27
  gqlapi = gql.get_api()
31
28
  settings = gqlapi.query(SECRET_READER_SETTINGS)["settings"]
@@ -42,7 +39,6 @@ APP_INTERFACE_SETTINGS_QUERY = """
42
39
  vault
43
40
  kubeBinary
44
41
  mergeRequestGateway
45
- saasDeployJobTemplate
46
42
  hashLength
47
43
  smtp {
48
44
  mailAddress
@@ -106,6 +102,13 @@ APP_INTERFACE_SETTINGS_QUERY = """
106
102
  readTimeout
107
103
  connectTimeout
108
104
  }
105
+ terraformResourcesProviderExclusions {
106
+ provider
107
+ excludeProvisioners {
108
+ name
109
+ }
110
+ excludeAllProvisioners
111
+ }
109
112
  }
110
113
  }
111
114
  """
@@ -285,13 +288,12 @@ INTEGRATIONS_QUERY = """
285
288
  successfulJobHistoryLimit
286
289
  failedJobHistoryLimit
287
290
  imageRef
291
+ enablePushgateway
288
292
  }
289
293
  }
290
294
  }
291
295
  }
292
- """ % (
293
- indent(JUMPHOST_FIELDS, 12 * " "),
294
- )
296
+ """ % (indent(JUMPHOST_FIELDS, 12 * " "),)
295
297
 
296
298
 
297
299
  def get_integrations(managed=False):
@@ -313,7 +315,6 @@ JENKINS_INSTANCES_QUERY = """
313
315
  format
314
316
  }
315
317
  previousUrls
316
- plugins
317
318
  deleteMethod
318
319
  managedProjects
319
320
  buildsCleanupRules {
@@ -324,7 +325,15 @@ JENKINS_INSTANCES_QUERY = """
324
325
  workerFleets {
325
326
  account
326
327
  identifier
327
- credentialsId
328
+ sshConnector {
329
+ credentialsId
330
+ jvmOptions
331
+ launchTimeoutSeconds
332
+ maxNumRetries
333
+ port
334
+ retryWaitTime
335
+ sshHostKeyVerificationStrategy
336
+ }
328
337
  fsRoot
329
338
  labelString
330
339
  numExecutors
@@ -535,6 +544,22 @@ AWS_ACCOUNTS_QUERY = """
535
544
  }
536
545
  }
537
546
  {% endif %}
547
+ {% if cleanup %}
548
+ cleanup {
549
+ provider
550
+ ... on AWSAccountCleanupOptionCloudWatch_v1 {
551
+ regex
552
+ retention_in_days
553
+ delete_empty_log_group
554
+ region
555
+ }
556
+ ... on AWSAccountCleanupOptionAMI_v1 {
557
+ regex
558
+ age
559
+ region
560
+ }
561
+ }
562
+ {% endif %}
538
563
  }
539
564
  }
540
565
  """
@@ -547,6 +572,7 @@ def get_aws_accounts(
547
572
  sharing=False,
548
573
  terraform_state=False,
549
574
  ecrs=True,
575
+ cleanup=False,
550
576
  ):
551
577
  """Returns all AWS accounts"""
552
578
  gqlapi = gql.get_api()
@@ -559,6 +585,7 @@ def get_aws_accounts(
559
585
  sharing=sharing,
560
586
  terraform_state=terraform_state,
561
587
  ecrs=ecrs,
588
+ cleanup=cleanup,
562
589
  )
563
590
  return gqlapi.query(query)["accounts"]
564
591
 
@@ -571,11 +598,11 @@ def get_state_aws_accounts(reset_passwords=False):
571
598
 
572
599
  def get_queue_aws_accounts():
573
600
  """Returns AWS accounts to use for queue management"""
574
- uid = os.environ["gitlab_pr_submitter_queue_url"].split("/")[3]
601
+ uid = os.environ["gitlab_pr_submitter_queue_url"].split("/")[3] # noqa: SIM112
575
602
  return get_aws_accounts(uid=uid)
576
603
 
577
604
 
578
- def get_jumphosts(hostname: Optional[str] = None) -> JumphostsQueryData:
605
+ def get_jumphosts(hostname: str | None = None) -> JumphostsQueryData:
579
606
  """Returns all jumphosts"""
580
607
  variables = {}
581
608
  # The dictionary must be empty if no hostname is set.
@@ -619,6 +646,32 @@ CLUSTER_FILTER_QUERY = """
619
646
  {% endif %}
620
647
  """
621
648
 
649
+ AWS_INFRASTRUCTURE_ACCESS_QUERY = """
650
+ {% if aws_infrastructure_access %}
651
+ awsInfrastructureAccess {
652
+ awsGroup {
653
+ account {
654
+ name
655
+ uid
656
+ terraformUsername
657
+ automationToken {
658
+ path
659
+ field
660
+ version
661
+ format
662
+ }
663
+ }
664
+ roles {
665
+ users {
666
+ org_username
667
+ }
668
+ }
669
+ }
670
+ accessLevel
671
+ }
672
+ {% endif %}
673
+ """
674
+
622
675
  CLUSTERS_QUERY = """
623
676
  {
624
677
  clusters: clusters_v1
@@ -628,7 +681,6 @@ CLUSTERS_QUERY = """
628
681
  name
629
682
  serverUrl
630
683
  consoleUrl
631
- kibanaUrl
632
684
  elbFQDN
633
685
  prometheusUrl
634
686
  managedGroups
@@ -652,6 +704,7 @@ CLUSTERS_QUERY = """
652
704
  ocm {
653
705
  name
654
706
  environment {
707
+ name
655
708
  url
656
709
  accessTokenClientId
657
710
  accessTokenUrl
@@ -671,10 +724,16 @@ CLUSTERS_QUERY = """
671
724
  format
672
725
  version
673
726
  }
727
+ allowedClusterExternalConfigLabels
674
728
  blockedVersions
675
729
  inheritVersionData {
676
730
  name
731
+ orgId
732
+ environment {
733
+ name
734
+ }
677
735
  publishVersionData {
736
+ orgId
678
737
  name
679
738
  }
680
739
  }
@@ -685,27 +744,7 @@ CLUSTERS_QUERY = """
685
744
  }
686
745
  }
687
746
  }
688
- awsInfrastructureAccess {
689
- awsGroup {
690
- account {
691
- name
692
- uid
693
- terraformUsername
694
- automationToken {
695
- path
696
- field
697
- version
698
- format
699
- }
700
- }
701
- roles {
702
- users {
703
- org_username
704
- }
705
- }
706
- }
707
- accessLevel
708
- }
747
+ %s
709
748
  %s
710
749
  spec {
711
750
  product
@@ -717,8 +756,18 @@ CLUSTERS_QUERY = """
717
756
  ... on ClusterSpecROSA_v1 {
718
757
  subnet_ids
719
758
  availability_zones
759
+ oidc_endpoint_url
720
760
  account {
761
+ name
721
762
  uid
763
+ terraformUsername
764
+ resourcesDefaultRegion
765
+ automationToken {
766
+ path
767
+ field
768
+ version
769
+ format
770
+ }
722
771
  rosa {
723
772
  ocm_environments {
724
773
  ocm {
@@ -731,6 +780,9 @@ CLUSTERS_QUERY = """
731
780
  worker_role_arn
732
781
  }
733
782
  }
783
+ billingAccount {
784
+ uid
785
+ }
734
786
  }
735
787
  }
736
788
  id
@@ -741,14 +793,8 @@ CLUSTERS_QUERY = """
741
793
  version
742
794
  initial_version
743
795
  multi_az
744
- nodes
745
- instance_type
746
796
  private
747
797
  provision_shard_id
748
- autoscale {
749
- min_replicas
750
- max_replicas
751
- }
752
798
  disable_user_workload_monitoring
753
799
  }
754
800
  externalConfiguration {
@@ -777,6 +823,10 @@ CLUSTERS_QUERY = """
777
823
  id
778
824
  instance_type
779
825
  replicas
826
+ autoscale {
827
+ min_replicas
828
+ max_replicas
829
+ }
780
830
  labels
781
831
  taints {
782
832
  key
@@ -837,6 +887,7 @@ CLUSTERS_QUERY = """
837
887
  }
838
888
  tags
839
889
  cidrBlock
890
+ cidrBlocks
840
891
  manageSecurityGroups
841
892
  assumeRole
842
893
  }
@@ -907,6 +958,12 @@ CLUSTERS_QUERY = """
907
958
  version
908
959
  format
909
960
  }
961
+ clusterAdminAutomationToken {
962
+ path
963
+ field
964
+ version
965
+ format
966
+ }
910
967
  clusterAdmin
911
968
  internal
912
969
  disable {
@@ -917,6 +974,7 @@ CLUSTERS_QUERY = """
917
974
  """ % (
918
975
  indent(CLUSTER_FILTER_QUERY, 2 * " "),
919
976
  indent(JUMPHOST_FIELDS, 6 * " "),
977
+ indent(AWS_INFRASTRUCTURE_ACCESS_QUERY, 4 * " "),
920
978
  indent(AWS_INFRA_MANAGEMENT_ACCOUNT, 4 * " "),
921
979
  indent(AWS_INFRA_MANAGEMENT_ACCOUNT, 12 * " "),
922
980
  )
@@ -930,7 +988,6 @@ CLUSTERS_MINIMAL_QUERY = """
930
988
  name
931
989
  serverUrl
932
990
  consoleUrl
933
- kibanaUrl
934
991
  prometheusUrl
935
992
  insecureSkipTLSVerify
936
993
  jumpHost {
@@ -974,12 +1031,13 @@ CLUSTERS_MINIMAL_QUERY = """
974
1031
  )
975
1032
 
976
1033
 
977
- def get_clusters(minimal=False):
1034
+ def get_clusters(minimal: bool = False, aws_infrastructure_access: bool = False):
978
1035
  """Returns all Clusters"""
979
1036
  gqlapi = gql.get_api()
980
1037
  tmpl = CLUSTERS_MINIMAL_QUERY if minimal else CLUSTERS_QUERY
981
1038
  query = Template(tmpl).render(
982
1039
  filter=None,
1040
+ aws_infrastructure_access=aws_infrastructure_access,
983
1041
  )
984
1042
  return gqlapi.query(query)["clusters"]
985
1043
 
@@ -993,6 +1051,7 @@ CLUSTER_PEERING_QUERY = """
993
1051
  ocm {
994
1052
  name
995
1053
  environment {
1054
+ name
996
1055
  url
997
1056
  accessTokenClientId
998
1057
  accessTokenUrl
@@ -1032,7 +1091,23 @@ CLUSTER_PEERING_QUERY = """
1032
1091
  }
1033
1092
 
1034
1093
  spec {
1094
+ id
1035
1095
  region
1096
+ private
1097
+ hypershift
1098
+ ... on ClusterSpecROSA_v1 {
1099
+ account {
1100
+ name
1101
+ uid
1102
+ terraformUsername
1103
+ automationToken {
1104
+ path
1105
+ field
1106
+ version
1107
+ format
1108
+ }
1109
+ }
1110
+ }
1036
1111
  }
1037
1112
  network {
1038
1113
  vpc
@@ -1076,6 +1151,7 @@ CLUSTER_PEERING_QUERY = """
1076
1151
  }
1077
1152
  }
1078
1153
  tags
1154
+ assumeRole
1079
1155
  }
1080
1156
  ... on ClusterPeeringConnectionAccountTGW_v1 {
1081
1157
  account {
@@ -1102,7 +1178,23 @@ CLUSTER_PEERING_QUERY = """
1102
1178
  vpc
1103
1179
  }
1104
1180
  spec {
1181
+ id
1105
1182
  region
1183
+ private
1184
+ hypershift
1185
+ ... on ClusterSpecROSA_v1 {
1186
+ account {
1187
+ name
1188
+ uid
1189
+ terraformUsername
1190
+ automationToken {
1191
+ path
1192
+ field
1193
+ version
1194
+ format
1195
+ }
1196
+ }
1197
+ }
1106
1198
  }
1107
1199
  awsInfrastructureManagementAccounts {
1108
1200
  account {
@@ -1130,7 +1222,23 @@ CLUSTER_PEERING_QUERY = """
1130
1222
  name
1131
1223
  cluster {
1132
1224
  name
1225
+ spec {
1226
+ ... on ClusterSpecROSA_v1 {
1227
+ account {
1228
+ name
1229
+ uid
1230
+ terraformUsername
1231
+ automationToken {
1232
+ path
1233
+ field
1234
+ version
1235
+ format
1236
+ }
1237
+ }
1238
+ }
1239
+ }
1133
1240
  }
1241
+ assumeRole
1134
1242
  awsInfrastructureManagementAccount {
1135
1243
  name
1136
1244
  uid
@@ -1146,6 +1254,7 @@ CLUSTER_PEERING_QUERY = """
1146
1254
  }
1147
1255
  }
1148
1256
  }
1257
+ assumeRole
1149
1258
  }
1150
1259
  }
1151
1260
  }
@@ -1183,7 +1292,9 @@ OCM_QUERY = """
1183
1292
  path
1184
1293
  name
1185
1294
  environment {
1295
+ name
1186
1296
  url
1297
+ labels
1187
1298
  accessTokenClientId
1188
1299
  accessTokenUrl
1189
1300
  accessTokenClientSecret {
@@ -1287,68 +1398,6 @@ def get_openshift_cluster_managers() -> list[dict[str, Any]]:
1287
1398
  return gql.get_api().query(OCM_QUERY)["instances"]
1288
1399
 
1289
1400
 
1290
- KAFKA_CLUSTERS_QUERY = """
1291
- {
1292
- clusters: kafka_clusters_v1 {
1293
- name
1294
- ocm {
1295
- name
1296
- environment {
1297
- url
1298
- accessTokenClientId
1299
- accessTokenUrl
1300
- accessTokenClientSecret {
1301
- path
1302
- field
1303
- format
1304
- version
1305
- }
1306
- }
1307
- orgId
1308
- accessTokenClientId
1309
- accessTokenUrl
1310
- accessTokenClientSecret {
1311
- path
1312
- field
1313
- format
1314
- version
1315
- }
1316
- }
1317
- spec {
1318
- provider
1319
- region
1320
- multi_az
1321
- }
1322
- namespaces {
1323
- name
1324
- cluster {
1325
- name
1326
- serverUrl
1327
- insecureSkipTLSVerify
1328
- jumpHost {
1329
- %s
1330
- }
1331
- automationToken {
1332
- path
1333
- field
1334
- version
1335
- format
1336
- }
1337
- }
1338
- }
1339
- }
1340
- }
1341
- """ % (
1342
- indent(JUMPHOST_FIELDS, 10 * " "),
1343
- )
1344
-
1345
-
1346
- def get_kafka_clusters(minimal=False):
1347
- """Returns all Kafka Clusters"""
1348
- gqlapi = gql.get_api()
1349
- return gqlapi.query(KAFKA_CLUSTERS_QUERY)["clusters"]
1350
-
1351
-
1352
1401
  NAMESPACES_QUERY = """
1353
1402
  {
1354
1403
  namespaces: namespaces_v1 {
@@ -1473,9 +1522,7 @@ NAMESPACES_QUERY = """
1473
1522
  }
1474
1523
  }
1475
1524
  }
1476
- """ % (
1477
- indent(JUMPHOST_FIELDS, 8 * " "),
1478
- )
1525
+ """ % (indent(JUMPHOST_FIELDS, 8 * " "),)
1479
1526
 
1480
1527
  NAMESPACES_MINIMAL_QUERY = """
1481
1528
  {
@@ -1503,9 +1550,7 @@ NAMESPACES_MINIMAL_QUERY = """
1503
1550
  }
1504
1551
  }
1505
1552
  }
1506
- """ % (
1507
- indent(JUMPHOST_FIELDS, 8 * " "),
1508
- )
1553
+ """ % (indent(JUMPHOST_FIELDS, 8 * " "),)
1509
1554
 
1510
1555
 
1511
1556
  def get_namespaces(minimal=False):
@@ -1516,80 +1561,6 @@ def get_namespaces(minimal=False):
1516
1561
  return gqlapi.query(NAMESPACES_QUERY)["namespaces"]
1517
1562
 
1518
1563
 
1519
- SA_TOKEN = """
1520
- name
1521
- namespace {
1522
- name
1523
- cluster {
1524
- name
1525
- serverUrl
1526
- insecureSkipTLSVerify
1527
- jumpHost {
1528
- %s
1529
- }
1530
- automationToken {
1531
- path
1532
- field
1533
- version
1534
- format
1535
- }
1536
- internal
1537
- disable {
1538
- integrations
1539
- }
1540
- }
1541
- }
1542
- serviceAccountName
1543
- """ % (
1544
- indent(JUMPHOST_FIELDS, 6 * " "),
1545
- )
1546
-
1547
-
1548
- SERVICEACCOUNT_TOKENS_QUERY = """
1549
- {
1550
- namespaces: namespaces_v1 {
1551
- name
1552
- cluster {
1553
- name
1554
- serverUrl
1555
- insecureSkipTLSVerify
1556
- jumpHost {
1557
- %s
1558
- }
1559
- automationToken {
1560
- path
1561
- field
1562
- version
1563
- format
1564
- }
1565
- internal
1566
- disable {
1567
- integrations
1568
- }
1569
- }
1570
- sharedResources {
1571
- openshiftServiceAccountTokens {
1572
- %s
1573
- }
1574
- }
1575
- openshiftServiceAccountTokens {
1576
- %s
1577
- }
1578
- }
1579
- }
1580
- """ % (
1581
- indent(JUMPHOST_FIELDS, 8 * " "),
1582
- indent(SA_TOKEN, 8 * " "),
1583
- indent(SA_TOKEN, 6 * " "),
1584
- )
1585
-
1586
-
1587
- def get_serviceaccount_tokens():
1588
- """Returns all namespaces with ServiceAccount tokens information"""
1589
- gqlapi = gql.get_api()
1590
- return gqlapi.query(SERVICEACCOUNT_TOKENS_QUERY)["namespaces"]
1591
-
1592
-
1593
1564
  PRODUCTS_QUERY = """
1594
1565
  {
1595
1566
  products: products_v1 {
@@ -1661,6 +1632,7 @@ APPS_QUERY = """
1661
1632
  showInReviewQueue
1662
1633
  gitlabRepoOwners {
1663
1634
  enabled
1635
+ persistentLgtm
1664
1636
  }
1665
1637
  gitlabHousekeeping {
1666
1638
  enabled
@@ -1693,6 +1665,7 @@ CODE_COMPONENT_REPO_QUERY = """
1693
1665
  apps: apps_v1 {
1694
1666
  codeComponents {
1695
1667
  url
1668
+ managePermissions
1696
1669
  }
1697
1670
  }
1698
1671
  }
@@ -1725,7 +1698,7 @@ def get_review_repos():
1725
1698
  ]
1726
1699
 
1727
1700
 
1728
- def get_repos(server="") -> list[str]:
1701
+ def get_repos(server: str = "", exclude_manage_permissions: bool = False) -> list[str]:
1729
1702
  """Returns all repos defined under codeComponents
1730
1703
  Optional arguments:
1731
1704
  server: url of the server to return. for example: https://github.com
@@ -1735,6 +1708,8 @@ def get_repos(server="") -> list[str]:
1735
1708
  for a in apps:
1736
1709
  if a["codeComponents"] is not None:
1737
1710
  for c in a["codeComponents"]:
1711
+ if exclude_manage_permissions and c.get("managePermissions") is False:
1712
+ continue
1738
1713
  if c["url"].startswith(server):
1739
1714
  repos.append(c["url"])
1740
1715
  return repos
@@ -1748,7 +1723,7 @@ def get_repos_gitlab_owner(server=""):
1748
1723
  """
1749
1724
  code_components = get_code_components()
1750
1725
  return [
1751
- c["url"]
1726
+ {"url": c["url"], "gitlabRepoOwners": c["gitlabRepoOwners"]}
1752
1727
  for c in code_components
1753
1728
  if c["url"].startswith(server)
1754
1729
  and c["gitlabRepoOwners"]
@@ -1858,6 +1833,9 @@ USERS_QUERY = """
1858
1833
  gabi_instances {
1859
1834
  path
1860
1835
  }
1836
+ schedules {
1837
+ path
1838
+ }
1861
1839
  {% endif %}
1862
1840
  }
1863
1841
  }
@@ -2018,6 +1996,7 @@ def get_external_users():
2018
1996
  APP_INTERFACE_SQL_QUERIES_QUERY = """
2019
1997
  {
2020
1998
  sql_queries: app_interface_sql_queries_v1 {
1999
+ path
2021
2000
  name
2022
2001
  namespace
2023
2002
  {
@@ -2182,9 +2161,7 @@ PIPELINES_PROVIDERS_QUERY = """
2182
2161
  }
2183
2162
  }
2184
2163
  }
2185
- """ % (
2186
- indent(JUMPHOST_FIELDS, 12 * " "),
2187
- )
2164
+ """ % (indent(JUMPHOST_FIELDS, 12 * " "),)
2188
2165
 
2189
2166
 
2190
2167
  def get_pipelines_providers():
@@ -2215,6 +2192,7 @@ JIRA_BOARDS_QUERY = """
2215
2192
  format
2216
2193
  }
2217
2194
  }
2195
+ {% if with_slack %}
2218
2196
  slack {
2219
2197
  workspace {
2220
2198
  name
@@ -2243,15 +2221,17 @@ JIRA_BOARDS_QUERY = """
2243
2221
  }
2244
2222
  channel
2245
2223
  }
2224
+ {% endif %}
2246
2225
  }
2247
2226
  }
2248
2227
  """
2249
2228
 
2250
2229
 
2251
- def get_jira_boards():
2230
+ def get_jira_boards(with_slack: bool | None = True):
2252
2231
  """Returns Jira boards resources defined in app-interface"""
2253
2232
  gqlapi = gql.get_api()
2254
- return gqlapi.query(JIRA_BOARDS_QUERY)["jira_boards"]
2233
+ query = Template(JIRA_BOARDS_QUERY).render(with_slack=with_slack)
2234
+ return gqlapi.query(query)["jira_boards"]
2255
2235
 
2256
2236
 
2257
2237
  # Use APATH as the place holder because Python formatting interferes
@@ -2420,9 +2400,7 @@ DNS_ZONES_QUERY = """
2420
2400
  }
2421
2401
  }
2422
2402
  }
2423
- """ % (
2424
- indent(DNS_RECORD, 6 * " "),
2425
- )
2403
+ """ % (indent(DNS_RECORD, 6 * " "),)
2426
2404
 
2427
2405
 
2428
2406
  def get_dns_zones(account_name=None):
@@ -2562,6 +2540,7 @@ GABI_INSTANCES_QUERY = """
2562
2540
  }
2563
2541
  users{
2564
2542
  github_username
2543
+ org_username
2565
2544
  }
2566
2545
  instances{
2567
2546
  account
@@ -2607,9 +2586,7 @@ GABI_INSTANCES_QUERY = """
2607
2586
  expirationDate
2608
2587
  }
2609
2588
  }
2610
- """ % (
2611
- indent(JUMPHOST_FIELDS, 12 * " "),
2612
- )
2589
+ """ % (indent(JUMPHOST_FIELDS, 12 * " "),)
2613
2590
 
2614
2591
 
2615
2592
  def get_gabi_instances():
@@ -2754,3 +2731,91 @@ BLACKBOX_EXPORTER_MONITORING_PROVIDER = """
2754
2731
  def get_blackbox_exporter_monitoring_provider() -> dict:
2755
2732
  gqlapi = gql.get_api()
2756
2733
  return gqlapi.query(BLACKBOX_EXPORTER_MONITORING_PROVIDER)["providers"]
2734
+
2735
+
2736
+ JENKINS_CONFIGS = """
2737
+ {
2738
+ jenkins_configs: jenkins_configs_v1 {
2739
+ name
2740
+ app {
2741
+ name
2742
+ }
2743
+ instance {
2744
+ name
2745
+ serverUrl
2746
+ token {
2747
+ path
2748
+ field
2749
+ version
2750
+ format
2751
+ }
2752
+ deleteMethod
2753
+ }
2754
+ type
2755
+ config
2756
+ config_path {
2757
+ content
2758
+ }
2759
+ }
2760
+ }
2761
+ """
2762
+
2763
+
2764
+ def get_jenkins_configs():
2765
+ gqlapi = gql.get_api()
2766
+ return gqlapi.query(JENKINS_CONFIGS)["jenkins_configs"]
2767
+
2768
+
2769
+ TF_RESOURCES_PROVIDER_EXCLUSIONS_BY_PROVISIONER = """
2770
+ {
2771
+ tf_provider_exclusions: app_interface_settings_v1 {
2772
+ terraformResourcesProviderExclusions {
2773
+ provider
2774
+ excludeProvisioners {
2775
+ name
2776
+ }
2777
+ excludeAllProvisioners
2778
+ }
2779
+ }
2780
+ }
2781
+ """
2782
+
2783
+
2784
+ def get_tf_resources_provider_exclusions_by_provisioner() -> (
2785
+ list[dict[str, Any]] | None
2786
+ ):
2787
+ gqlapi = gql.get_api()
2788
+ settings = gqlapi.query(TF_RESOURCES_PROVIDER_EXCLUSIONS_BY_PROVISIONER)[
2789
+ "tf_provider_exclusions"
2790
+ ]
2791
+ if len(settings) == 1 and "terraformResourcesProviderExclusions" in settings[0]:
2792
+ return settings[0]["terraformResourcesProviderExclusions"]
2793
+ return None
2794
+
2795
+
2796
+ SCHEMAS_QUERY = """
2797
+ {
2798
+ schemas: __schema {
2799
+ types {
2800
+ name
2801
+ fields {
2802
+ name
2803
+ type {
2804
+ kind
2805
+ name
2806
+ ofType {
2807
+ kind
2808
+ name
2809
+ }
2810
+ }
2811
+ }
2812
+ }
2813
+ }
2814
+ }
2815
+ """
2816
+
2817
+
2818
+ # TODO: replace with typed query following https://issues.redhat.com/browse/APPSRE-10983
2819
+ def get_schemas() -> dict:
2820
+ gqlapi = gql.get_api()
2821
+ return gqlapi.query(SCHEMAS_QUERY)["schemas"]