qontract-reconcile 0.10.2.dev394__py3-none-any.whl → 0.10.2.dev414__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 (308) hide show
  1. {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/METADATA +4 -3
  2. {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/RECORD +308 -308
  3. reconcile/acs_rbac.py +2 -2
  4. reconcile/aus/advanced_upgrade_service.py +15 -12
  5. reconcile/aus/base.py +9 -13
  6. reconcile/aus/cluster_version_data.py +15 -5
  7. reconcile/aus/models.py +1 -1
  8. reconcile/automated_actions/config/integration.py +15 -3
  9. reconcile/aws_account_manager/integration.py +6 -6
  10. reconcile/aws_account_manager/reconciler.py +3 -3
  11. reconcile/aws_ami_cleanup/integration.py +2 -5
  12. reconcile/aws_ami_share.py +69 -62
  13. reconcile/aws_saml_idp/integration.py +5 -3
  14. reconcile/aws_saml_roles/integration.py +23 -22
  15. reconcile/aws_version_sync/integration.py +6 -12
  16. reconcile/change_owners/bundle.py +3 -3
  17. reconcile/change_owners/change_log_tracking.py +3 -2
  18. reconcile/change_owners/change_owners.py +1 -1
  19. reconcile/dashdotdb_dora.py +1 -1
  20. reconcile/dashdotdb_slo.py +1 -1
  21. reconcile/database_access_manager.py +8 -9
  22. reconcile/dynatrace_token_provider/integration.py +1 -1
  23. reconcile/endpoints_discovery/integration.py +4 -1
  24. reconcile/endpoints_discovery/merge_request.py +1 -1
  25. reconcile/endpoints_discovery/merge_request_manager.py +1 -1
  26. reconcile/external_resources/integration.py +1 -1
  27. reconcile/external_resources/manager.py +19 -7
  28. reconcile/external_resources/metrics.py +1 -1
  29. reconcile/external_resources/model.py +6 -6
  30. reconcile/external_resources/reconciler.py +7 -4
  31. reconcile/external_resources/secrets_sync.py +2 -2
  32. reconcile/external_resources/state.py +56 -14
  33. reconcile/fleet_labeler/integration.py +1 -1
  34. reconcile/gcp_image_mirror.py +2 -2
  35. reconcile/github_org.py +1 -1
  36. reconcile/github_owners.py +4 -0
  37. reconcile/gitlab_members.py +6 -12
  38. reconcile/gitlab_permissions.py +8 -12
  39. reconcile/glitchtip_project_alerts/integration.py +3 -1
  40. reconcile/gql_definitions/acs/acs_instances.py +5 -5
  41. reconcile/gql_definitions/acs/acs_policies.py +5 -5
  42. reconcile/gql_definitions/acs/acs_rbac.py +5 -5
  43. reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +5 -5
  44. reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +5 -5
  45. reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +5 -5
  46. reconcile/gql_definitions/app_sre_tekton_access_revalidation/roles.py +5 -5
  47. reconcile/gql_definitions/app_sre_tekton_access_revalidation/users.py +5 -5
  48. reconcile/gql_definitions/automated_actions/instance.py +46 -7
  49. reconcile/gql_definitions/aws_account_manager/aws_accounts.py +5 -5
  50. reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +5 -5
  51. reconcile/gql_definitions/aws_cloudwatch_log_retention/aws_accounts.py +5 -5
  52. reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +5 -5
  53. reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +5 -5
  54. reconcile/gql_definitions/aws_saml_roles/roles.py +5 -5
  55. reconcile/gql_definitions/aws_version_sync/clusters.py +5 -5
  56. reconcile/gql_definitions/aws_version_sync/namespaces.py +5 -5
  57. reconcile/gql_definitions/change_owners/queries/change_types.py +5 -5
  58. reconcile/gql_definitions/change_owners/queries/self_service_roles.py +5 -5
  59. reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +5 -5
  60. reconcile/gql_definitions/common/alerting_services_settings.py +5 -5
  61. reconcile/gql_definitions/common/app_code_component_repos.py +5 -5
  62. reconcile/gql_definitions/common/app_interface_custom_messages.py +5 -5
  63. reconcile/gql_definitions/common/app_interface_dms_settings.py +5 -5
  64. reconcile/gql_definitions/common/app_interface_repo_settings.py +5 -5
  65. reconcile/gql_definitions/common/app_interface_roles.py +5 -5
  66. reconcile/gql_definitions/common/app_interface_state_settings.py +5 -5
  67. reconcile/gql_definitions/common/app_interface_vault_settings.py +5 -5
  68. reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +5 -5
  69. reconcile/gql_definitions/common/apps.py +5 -5
  70. reconcile/gql_definitions/common/aws_vpc_requests.py +5 -5
  71. reconcile/gql_definitions/common/aws_vpcs.py +5 -5
  72. reconcile/gql_definitions/common/clusters.py +5 -5
  73. reconcile/gql_definitions/common/clusters_minimal.py +5 -5
  74. reconcile/gql_definitions/common/clusters_with_dms.py +5 -5
  75. reconcile/gql_definitions/common/clusters_with_peering.py +5 -5
  76. reconcile/gql_definitions/common/github_orgs.py +5 -5
  77. reconcile/gql_definitions/common/jira_settings.py +5 -5
  78. reconcile/gql_definitions/common/jiralert_settings.py +5 -5
  79. reconcile/gql_definitions/common/ldap_settings.py +5 -5
  80. reconcile/gql_definitions/common/namespaces.py +5 -5
  81. reconcile/gql_definitions/common/namespaces_minimal.py +7 -5
  82. reconcile/gql_definitions/common/ocm_env_telemeter.py +5 -5
  83. reconcile/gql_definitions/common/ocm_environments.py +5 -5
  84. reconcile/gql_definitions/common/pagerduty_instances.py +5 -5
  85. reconcile/gql_definitions/common/pgp_reencryption_settings.py +5 -5
  86. reconcile/gql_definitions/common/pipeline_providers.py +5 -5
  87. reconcile/gql_definitions/common/quay_instances.py +5 -5
  88. reconcile/gql_definitions/common/quay_orgs.py +5 -5
  89. reconcile/gql_definitions/common/reserved_networks.py +5 -5
  90. reconcile/gql_definitions/common/rhcs_provider_settings.py +5 -5
  91. reconcile/gql_definitions/common/saas_files.py +5 -5
  92. reconcile/gql_definitions/common/saas_target_namespaces.py +5 -5
  93. reconcile/gql_definitions/common/saasherder_settings.py +5 -5
  94. reconcile/gql_definitions/common/slack_workspaces.py +5 -5
  95. reconcile/gql_definitions/common/smtp_client_settings.py +5 -5
  96. reconcile/gql_definitions/common/state_aws_account.py +5 -5
  97. reconcile/gql_definitions/common/users.py +5 -5
  98. reconcile/gql_definitions/common/users_with_paths.py +5 -5
  99. reconcile/gql_definitions/cost_report/app_names.py +5 -5
  100. reconcile/gql_definitions/cost_report/cost_namespaces.py +5 -5
  101. reconcile/gql_definitions/cost_report/settings.py +5 -5
  102. reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +5 -5
  103. reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +5 -5
  104. reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +5 -5
  105. reconcile/gql_definitions/email_sender/apps.py +5 -5
  106. reconcile/gql_definitions/email_sender/emails.py +5 -5
  107. reconcile/gql_definitions/email_sender/users.py +5 -5
  108. reconcile/gql_definitions/endpoints_discovery/apps.py +5 -5
  109. reconcile/gql_definitions/external_resources/aws_accounts.py +5 -5
  110. reconcile/gql_definitions/external_resources/external_resources_modules.py +5 -5
  111. reconcile/gql_definitions/external_resources/external_resources_namespaces.py +5 -5
  112. reconcile/gql_definitions/external_resources/external_resources_settings.py +5 -5
  113. reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py +5 -5
  114. reconcile/gql_definitions/fleet_labeler/fleet_labels.py +5 -5
  115. reconcile/gql_definitions/fragments/aus_organization.py +5 -5
  116. reconcile/gql_definitions/fragments/aws_account_common.py +5 -5
  117. reconcile/gql_definitions/fragments/aws_account_managed.py +5 -5
  118. reconcile/gql_definitions/fragments/aws_account_sso.py +5 -5
  119. reconcile/gql_definitions/fragments/aws_infra_management_account.py +5 -5
  120. reconcile/gql_definitions/fragments/aws_organization.py +5 -5
  121. reconcile/gql_definitions/fragments/aws_vpc.py +5 -5
  122. reconcile/gql_definitions/fragments/aws_vpc_request.py +5 -5
  123. reconcile/gql_definitions/fragments/container_image_mirror.py +5 -5
  124. reconcile/gql_definitions/fragments/deploy_resources.py +5 -5
  125. reconcile/gql_definitions/fragments/disable.py +5 -5
  126. reconcile/gql_definitions/fragments/email_service.py +5 -5
  127. reconcile/gql_definitions/fragments/email_user.py +5 -5
  128. reconcile/gql_definitions/fragments/jumphost_common_fields.py +5 -5
  129. reconcile/gql_definitions/fragments/membership_source.py +5 -5
  130. reconcile/gql_definitions/fragments/minimal_ocm_organization.py +5 -5
  131. reconcile/gql_definitions/fragments/oc_connection_cluster.py +5 -5
  132. reconcile/gql_definitions/fragments/ocm_environment.py +5 -5
  133. reconcile/gql_definitions/fragments/pipeline_provider_retention.py +5 -5
  134. reconcile/gql_definitions/fragments/prometheus_instance.py +5 -5
  135. reconcile/gql_definitions/fragments/resource_limits_requirements.py +5 -5
  136. reconcile/gql_definitions/fragments/resource_requests_requirements.py +5 -5
  137. reconcile/gql_definitions/fragments/resource_values.py +5 -5
  138. reconcile/gql_definitions/fragments/saas_slo_document.py +5 -5
  139. reconcile/gql_definitions/fragments/saas_target_namespace.py +5 -5
  140. reconcile/gql_definitions/fragments/serviceaccount_token.py +5 -5
  141. reconcile/gql_definitions/fragments/terraform_state.py +5 -5
  142. reconcile/gql_definitions/fragments/upgrade_policy.py +5 -5
  143. reconcile/gql_definitions/fragments/user.py +5 -5
  144. reconcile/gql_definitions/fragments/vault_secret.py +5 -5
  145. reconcile/gql_definitions/gcp/gcp_docker_repos.py +5 -5
  146. reconcile/gql_definitions/gcp/gcp_projects.py +5 -5
  147. reconcile/gql_definitions/gitlab_members/gitlab_instances.py +5 -5
  148. reconcile/gql_definitions/gitlab_members/permissions.py +5 -5
  149. reconcile/gql_definitions/glitchtip/glitchtip_instance.py +5 -5
  150. reconcile/gql_definitions/glitchtip/glitchtip_project.py +5 -5
  151. reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +5 -5
  152. reconcile/gql_definitions/integrations/integrations.py +5 -5
  153. reconcile/gql_definitions/introspection.json +231 -0
  154. reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +5 -5
  155. reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +5 -5
  156. reconcile/gql_definitions/jira/jira_servers.py +5 -5
  157. reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +5 -5
  158. reconcile/gql_definitions/jumphosts/jumphosts.py +5 -5
  159. reconcile/gql_definitions/ldap_groups/roles.py +5 -5
  160. reconcile/gql_definitions/ldap_groups/settings.py +5 -5
  161. reconcile/gql_definitions/maintenance/maintenances.py +5 -5
  162. reconcile/gql_definitions/membershipsources/roles.py +5 -5
  163. reconcile/gql_definitions/ocm_labels/clusters.py +5 -5
  164. reconcile/gql_definitions/ocm_labels/organizations.py +5 -5
  165. reconcile/gql_definitions/openshift_cluster_bots/clusters.py +5 -5
  166. reconcile/gql_definitions/openshift_groups/managed_groups.py +5 -5
  167. reconcile/gql_definitions/openshift_groups/managed_roles.py +5 -5
  168. reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +5 -5
  169. reconcile/gql_definitions/quay_membership/quay_membership.py +5 -5
  170. reconcile/gql_definitions/rhcs/certs.py +5 -5
  171. reconcile/gql_definitions/rhidp/organizations.py +5 -5
  172. reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +5 -5
  173. reconcile/gql_definitions/service_dependencies/service_dependencies.py +5 -5
  174. reconcile/gql_definitions/sharding/aws_accounts.py +5 -5
  175. reconcile/gql_definitions/sharding/ocm_organization.py +5 -5
  176. reconcile/gql_definitions/skupper_network/site_controller_template.py +5 -5
  177. reconcile/gql_definitions/skupper_network/skupper_networks.py +5 -5
  178. reconcile/gql_definitions/slack_usergroups/clusters.py +5 -5
  179. reconcile/gql_definitions/slack_usergroups/permissions.py +5 -5
  180. reconcile/gql_definitions/slack_usergroups/users.py +5 -5
  181. reconcile/gql_definitions/slo_documents/slo_documents.py +5 -5
  182. reconcile/gql_definitions/status_board/status_board.py +5 -5
  183. reconcile/gql_definitions/statuspage/statuspages.py +5 -5
  184. reconcile/gql_definitions/templating/template_collection.py +5 -5
  185. reconcile/gql_definitions/templating/templates.py +5 -5
  186. reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +5 -5
  187. reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +5 -5
  188. reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +5 -5
  189. reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +5 -5
  190. reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +5 -5
  191. reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +5 -5
  192. reconcile/gql_definitions/terraform_init/aws_accounts.py +5 -5
  193. reconcile/gql_definitions/terraform_repo/terraform_repo.py +5 -5
  194. reconcile/gql_definitions/terraform_resources/database_access_manager.py +5 -5
  195. reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +5 -5
  196. reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +5 -5
  197. reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +5 -5
  198. reconcile/gql_definitions/vault_instances/vault_instances.py +5 -5
  199. reconcile/gql_definitions/vault_policies/vault_policies.py +5 -5
  200. reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +5 -5
  201. reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +5 -5
  202. reconcile/integrations_manager.py +3 -3
  203. reconcile/jenkins_worker_fleets.py +9 -8
  204. reconcile/jira_permissions_validator.py +2 -2
  205. reconcile/ldap_groups/integration.py +1 -1
  206. reconcile/ocm/types.py +35 -57
  207. reconcile/ocm_aws_infrastructure_access.py +1 -1
  208. reconcile/ocm_clusters.py +4 -4
  209. reconcile/ocm_labels/integration.py +3 -2
  210. reconcile/ocm_machine_pools.py +23 -23
  211. reconcile/openshift_base.py +53 -2
  212. reconcile/openshift_cluster_bots.py +1 -1
  213. reconcile/openshift_namespace_labels.py +1 -1
  214. reconcile/openshift_namespaces.py +97 -101
  215. reconcile/openshift_resources_base.py +6 -2
  216. reconcile/openshift_rhcs_certs.py +5 -5
  217. reconcile/openshift_rolebindings.py +7 -11
  218. reconcile/openshift_saas_deploy.py +4 -5
  219. reconcile/openshift_saas_deploy_change_tester.py +9 -7
  220. reconcile/openshift_serviceaccount_tokens.py +2 -2
  221. reconcile/openshift_upgrade_watcher.py +1 -1
  222. reconcile/oum/labelset.py +5 -3
  223. reconcile/oum/models.py +1 -4
  224. reconcile/prometheus_rules_tester/integration.py +3 -3
  225. reconcile/quay_mirror.py +1 -1
  226. reconcile/queries.py +6 -0
  227. reconcile/rhidp/common.py +3 -5
  228. reconcile/rhidp/sso_client/base.py +1 -1
  229. reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +1 -1
  230. reconcile/skupper_network/integration.py +2 -2
  231. reconcile/slack_usergroups.py +31 -11
  232. reconcile/status_board.py +6 -6
  233. reconcile/statuspage/atlassian.py +7 -7
  234. reconcile/statuspage/page.py +4 -9
  235. reconcile/templating/lib/rendering.py +3 -3
  236. reconcile/templating/renderer.py +2 -2
  237. reconcile/terraform_cloudflare_dns.py +3 -3
  238. reconcile/terraform_cloudflare_resources.py +5 -5
  239. reconcile/terraform_cloudflare_users.py +3 -2
  240. reconcile/terraform_init/integration.py +2 -2
  241. reconcile/terraform_repo.py +16 -12
  242. reconcile/terraform_resources.py +6 -6
  243. reconcile/terraform_tgw_attachments.py +20 -18
  244. reconcile/terraform_vpc_resources/integration.py +3 -1
  245. reconcile/typed_queries/cost_report/app_names.py +1 -1
  246. reconcile/typed_queries/cost_report/cost_namespaces.py +2 -2
  247. reconcile/typed_queries/saas_files.py +11 -11
  248. reconcile/typed_queries/status_board.py +2 -2
  249. reconcile/unleash_feature_toggles/integration.py +4 -2
  250. reconcile/utils/acs/base.py +6 -3
  251. reconcile/utils/acs/policies.py +2 -2
  252. reconcile/utils/aws_api.py +51 -20
  253. reconcile/utils/aws_api_typed/organization.py +4 -2
  254. reconcile/utils/deadmanssnitch_api.py +1 -1
  255. reconcile/utils/early_exit_cache.py +8 -10
  256. reconcile/utils/gitlab_api.py +7 -5
  257. reconcile/utils/glitchtip/client.py +6 -2
  258. reconcile/utils/glitchtip/models.py +25 -28
  259. reconcile/utils/gql.py +4 -7
  260. reconcile/utils/instrumented_wrappers.py +1 -1
  261. reconcile/utils/internal_groups/client.py +2 -2
  262. reconcile/utils/internal_groups/models.py +8 -17
  263. reconcile/utils/jinja2/utils.py +2 -5
  264. reconcile/utils/jobcontroller/controller.py +1 -1
  265. reconcile/utils/jobcontroller/models.py +17 -1
  266. reconcile/utils/json.py +39 -1
  267. reconcile/utils/membershipsources/app_interface_resolver.py +4 -2
  268. reconcile/utils/membershipsources/models.py +16 -23
  269. reconcile/utils/membershipsources/resolver.py +4 -2
  270. reconcile/utils/merge_request_manager/merge_request_manager.py +1 -1
  271. reconcile/utils/merge_request_manager/parser.py +4 -4
  272. reconcile/utils/metrics.py +5 -5
  273. reconcile/utils/models.py +304 -82
  274. reconcile/utils/mr/notificator.py +1 -1
  275. reconcile/utils/mr/user_maintenance.py +3 -2
  276. reconcile/utils/oc.py +112 -92
  277. reconcile/utils/ocm/addons.py +0 -1
  278. reconcile/utils/ocm/base.py +17 -20
  279. reconcile/utils/ocm/cluster_groups.py +1 -1
  280. reconcile/utils/ocm/identity_providers.py +2 -2
  281. reconcile/utils/ocm/labels.py +1 -1
  282. reconcile/utils/ocm/products.py +8 -8
  283. reconcile/utils/ocm/service_log.py +1 -1
  284. reconcile/utils/ocm/sre_capability_labels.py +20 -13
  285. reconcile/utils/openshift_resource.py +5 -0
  286. reconcile/utils/pagerduty_api.py +5 -2
  287. reconcile/utils/promotion_state.py +6 -11
  288. reconcile/utils/raw_github_api.py +1 -1
  289. reconcile/utils/rhcsv2_certs.py +1 -4
  290. reconcile/utils/runtime/integration.py +1 -1
  291. reconcile/utils/saasherder/interfaces.py +13 -20
  292. reconcile/utils/saasherder/models.py +23 -20
  293. reconcile/utils/saasherder/saasherder.py +26 -17
  294. reconcile/utils/slack_api.py +2 -2
  295. reconcile/utils/structs.py +1 -1
  296. reconcile/utils/terraform_client.py +1 -1
  297. reconcile/utils/terrascript_aws_client.py +47 -43
  298. reconcile/utils/unleash/server.py +2 -8
  299. reconcile/utils/vault.py +4 -11
  300. reconcile/utils/vcs.py +8 -8
  301. reconcile/vault_replication.py +1 -1
  302. tools/cli_commands/cost_report/cost_management_api.py +3 -3
  303. tools/cli_commands/cost_report/view.py +7 -6
  304. tools/cli_commands/erv2.py +3 -1
  305. tools/qontract_cli.py +6 -5
  306. tools/template_validation.py +3 -1
  307. {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/WHEEL +0 -0
  308. {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -174,9 +174,9 @@ query TerraformCloudflareResources {
174
174
 
175
175
 
176
176
  class ConfiguredBaseModel(BaseModel):
177
- class Config:
178
- smart_union=True
179
- extra=Extra.forbid
177
+ model_config = ConfigDict(
178
+ extra='forbid'
179
+ )
180
180
 
181
181
 
182
182
  class ClusterSpecV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -29,9 +29,9 @@ query AppInterfaceSettingCloudflareAndVault {
29
29
 
30
30
 
31
31
  class ConfiguredBaseModel(BaseModel):
32
- class Config:
33
- smart_union=True
34
- extra=Extra.forbid
32
+ model_config = ConfigDict(
33
+ extra='forbid'
34
+ )
35
35
 
36
36
 
37
37
  class AppInterfaceSettingsV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -68,9 +68,9 @@ query CloudflareAccountRole {
68
68
 
69
69
 
70
70
  class ConfiguredBaseModel(BaseModel):
71
- class Config:
72
- smart_union=True
73
- extra=Extra.forbid
71
+ model_config = ConfigDict(
72
+ extra='forbid'
73
+ )
74
74
 
75
75
 
76
76
  class UserV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -60,9 +60,9 @@ query TerraformInitAWSAccounts {
60
60
 
61
61
 
62
62
  class ConfiguredBaseModel(BaseModel):
63
- class Config:
64
- smart_union=True
65
- extra=Extra.forbid
63
+ model_config = ConfigDict(
64
+ extra='forbid'
65
+ )
66
66
 
67
67
 
68
68
  class TerraformStateAWSV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -71,9 +71,9 @@ query TerraformRepo {
71
71
 
72
72
 
73
73
  class ConfiguredBaseModel(BaseModel):
74
- class Config:
75
- smart_union=True
76
- extra=Extra.forbid
74
+ model_config = ConfigDict(
75
+ extra='forbid'
76
+ )
77
77
 
78
78
 
79
79
  class AWSTerraformStateIntegrationsV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -68,9 +68,9 @@ query DatabaseAccessManager {
68
68
 
69
69
 
70
70
  class ConfiguredBaseModel(BaseModel):
71
- class Config:
72
- smart_union=True
73
- extra=Extra.forbid
71
+ model_config = ConfigDict(
72
+ extra='forbid'
73
+ )
74
74
 
75
75
 
76
76
  class VaultSecretV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -552,9 +552,9 @@ query TerraformResourcesNamespaces {
552
552
 
553
553
 
554
554
  class ConfiguredBaseModel(BaseModel):
555
- class Config:
556
- smart_union=True
557
- extra=Extra.forbid
555
+ model_config = ConfigDict(
556
+ extra='forbid'
557
+ )
558
558
 
559
559
 
560
560
  class ExternalResourcesProvisionerV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -92,9 +92,9 @@ query AWSAccounts($name: String) {
92
92
 
93
93
 
94
94
  class ConfiguredBaseModel(BaseModel):
95
- class Config:
96
- smart_union=True
97
- extra=Extra.forbid
95
+ model_config = ConfigDict(
96
+ extra='forbid'
97
+ )
98
98
 
99
99
 
100
100
  class AWSAccountV1(AWSAccountCommon):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -57,9 +57,9 @@ query UnleashFeatureToggles {
57
57
 
58
58
 
59
59
  class ConfiguredBaseModel(BaseModel):
60
- class Config:
61
- smart_union=True
62
- extra=Extra.forbid
60
+ model_config = ConfigDict(
61
+ extra='forbid'
62
+ )
63
63
 
64
64
 
65
65
  class UnleashFeatureToggleV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -118,9 +118,9 @@ query VaultInstances {
118
118
 
119
119
 
120
120
  class ConfiguredBaseModel(BaseModel):
121
- class Config:
122
- smart_union=True
123
- extra=Extra.forbid
121
+ model_config = ConfigDict(
122
+ extra='forbid'
123
+ )
124
124
 
125
125
 
126
126
  class VaultInstanceAuthV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -32,9 +32,9 @@ query VaultPolicies {
32
32
 
33
33
 
34
34
  class ConfiguredBaseModel(BaseModel):
35
- class Config:
36
- smart_union=True
37
- extra=Extra.forbid
35
+ model_config = ConfigDict(
36
+ extra='forbid'
37
+ )
38
38
 
39
39
 
40
40
  class VaultInstanceV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,7 +12,7 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
@@ -77,9 +77,9 @@ query VpcPeeringsValidator {
77
77
 
78
78
 
79
79
  class ConfiguredBaseModel(BaseModel):
80
- class Config:
81
- smart_union=True
82
- extra=Extra.forbid
80
+ model_config = ConfigDict(
81
+ extra='forbid'
82
+ )
83
83
 
84
84
 
85
85
  class ClusterNetworkV1(ConfiguredBaseModel):
@@ -1,5 +1,5 @@
1
1
  """
2
- Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
2
+ Generated by qenerate plugin=pydantic_v2. DO NOT MODIFY MANUALLY!
3
3
  """
4
4
  from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
5
  from datetime import datetime # noqa: F401 # pylint: disable=W0611
@@ -12,16 +12,16 @@ from typing import ( # noqa: F401 # pylint: disable=W0611
12
12
 
13
13
  from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
14
  BaseModel,
15
- Extra,
15
+ ConfigDict,
16
16
  Field,
17
17
  Json,
18
18
  )
19
19
 
20
20
 
21
21
  class ConfiguredBaseModel(BaseModel):
22
- class Config:
23
- smart_union=True
24
- extra=Extra.forbid
22
+ model_config = ConfigDict(
23
+ extra='forbid'
24
+ )
25
25
 
26
26
 
27
27
  class ClusterNetworkV1(ConfiguredBaseModel):
@@ -122,7 +122,7 @@ def _build_helm_integration_spec(
122
122
  managed: IntegrationManagedV1,
123
123
  shard_manager: IntegrationShardManager,
124
124
  ) -> HelmIntegrationSpec:
125
- integration_spec = managed.spec.dict(by_alias=True)
125
+ integration_spec = managed.spec.model_dump(by_alias=True)
126
126
  shard_specs = shard_manager.build_integration_shards(integration_name, managed)
127
127
  his = HelmIntegrationSpec(
128
128
  **integration_spec, name=integration_name, shard_specs=shard_specs
@@ -143,7 +143,7 @@ def build_helm_values(specs: Iterable[HelmIntegrationSpec]) -> dict:
143
143
  else:
144
144
  values.integrations.append(s)
145
145
 
146
- return values.dict(exclude_none=True, by_alias=True)
146
+ return values.model_dump(exclude_none=True, by_alias=True)
147
147
 
148
148
 
149
149
  class IntegrationsEnvironment(BaseModel):
@@ -273,7 +273,7 @@ def run(
273
273
 
274
274
  ri, oc_map = ob.fetch_current_state(
275
275
  namespaces=[
276
- ie.namespace.dict(by_alias=True) for ie in integration_environments
276
+ ie.namespace.model_dump(by_alias=True) for ie in integration_environments
277
277
  ],
278
278
  thread_pool_size=thread_pool_size,
279
279
  integration=QONTRACT_INTEGRATION,
@@ -26,7 +26,7 @@ class SSHHostKeyVerificationStrategy(Enum):
26
26
  KNOWN_HOSTS_FILE_KEY_VERIFICATION_STRATEGY = "knownHostsFileKeyVerificationStrategy"
27
27
 
28
28
 
29
- class SSHConnector(BaseModel):
29
+ class SSHConnector(BaseModel, use_enum_values=True):
30
30
  credentials_id: str = Field(..., alias="credentialsId")
31
31
  launch_timeout_seconds: int | None = Field(None, alias="launchTimeoutSeconds")
32
32
  max_num_retries: int | None = Field(None, alias="maxNumRetries")
@@ -38,9 +38,6 @@ class SSHConnector(BaseModel):
38
38
  alias="sshHostKeyVerificationStrategy",
39
39
  )
40
40
 
41
- class Config:
42
- use_enum_values = True
43
-
44
41
 
45
42
  class ComputerConnector(BaseModel):
46
43
  # alias name is defined by jcasc schema
@@ -81,7 +78,7 @@ class JenkinsWorkerFleet(BaseModel):
81
78
  return hash(self.fleet + self.region)
82
79
 
83
80
  def differ(self, other: JenkinsWorkerFleet) -> bool:
84
- return self.dict() != other.dict()
81
+ return self.model_dump(mode="json") != other.model_dump(mode="json")
85
82
 
86
83
 
87
84
  def get_current_state(jenkins: JenkinsApi) -> list[JenkinsWorkerFleet]:
@@ -159,8 +156,8 @@ def act(
159
156
  current_fleet = current_state[current_state.index(f)]
160
157
  desired_fleet = desired_state[desired_state.index(f)]
161
158
  if current_fleet.differ(desired_fleet):
162
- logging.debug("CURRENT: " + str(current_fleet.dict(by_alias=True)))
163
- logging.debug("DESIRED: " + str(desired_fleet.dict(by_alias=True)))
159
+ logging.debug("CURRENT: " + str(current_fleet.model_dump(by_alias=True)))
160
+ logging.debug("DESIRED: " + str(desired_fleet.model_dump(by_alias=True)))
164
161
  to_update.append(desired_fleet)
165
162
 
166
163
  if to_add or to_delete or to_update:
@@ -173,7 +170,11 @@ def act(
173
170
 
174
171
  if not dry_run:
175
172
  d_clouds = [
176
- {"eC2Fleet": d.dict(by_alias=True, exclude_none=True)}
173
+ {
174
+ "eC2Fleet": d.model_dump(
175
+ mode="json", by_alias=True, exclude_none=True
176
+ )
177
+ }
177
178
  for d in desired_state
178
179
  ]
179
180
  config = {"jenkins": {"clouds": d_clouds}}
@@ -188,7 +188,7 @@ def _validate_issue_fields(
188
188
 
189
189
  for option in project_issue_field.options:
190
190
  if option == field.value:
191
- custom_fields[project_issue_field.id] = option.dict()
191
+ custom_fields[project_issue_field.id] = option.model_dump()
192
192
  break
193
193
  else:
194
194
  logging.error(
@@ -431,7 +431,7 @@ def get_jira_boards(
431
431
 
432
432
 
433
433
  def export_boards(boards: list[JiraBoardV1]) -> list[dict]:
434
- return [board.dict() for board in boards]
434
+ return [board.model_dump() for board in boards]
435
435
 
436
436
 
437
437
  @defer
@@ -58,7 +58,7 @@ class LdapGroupsIntegration(QontractReconcileIntegration[LdapGroupsIntegrationPa
58
58
  """Return the desired state for early exit."""
59
59
  if not query_func:
60
60
  query_func = gql.get_api().query
61
- return {"roles": [c.dict() for c in self.get_roles(query_func)]}
61
+ return {"roles": [c.model_dump() for c in self.get_roles(query_func)]}
62
62
 
63
63
  @defer
64
64
  def run(self, dry_run: bool, defer: Callable | None = None) -> None:
reconcile/ocm/types.py CHANGED
@@ -1,10 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from pydantic import (
4
- BaseModel,
5
- Extra,
6
- Field,
7
- )
3
+ from pydantic import BaseModel, Field, field_validator
8
4
 
9
5
 
10
6
  class OCMClusterAutoscale(BaseModel):
@@ -13,100 +9,82 @@ class OCMClusterAutoscale(BaseModel):
13
9
 
14
10
 
15
11
  class OCMClusterNetwork(BaseModel):
16
- type: str | None
12
+ type: str | None = None
17
13
  vpc: str
18
14
  service: str
19
15
  pod: str
20
16
 
21
17
 
22
- class OCMClusterSpec(BaseModel):
23
- autoscale: OCMClusterAutoscale | None
18
+ class OCMClusterSpec(BaseModel, extra="forbid"):
19
+ autoscale: OCMClusterAutoscale | None = None
24
20
  channel: str
25
- disable_user_workload_monitoring: bool | None
26
- external_id: str | None
27
- id: str | None
28
- instance_type: str | None
29
- multi_az: bool | None
30
- nodes: int | None
21
+ disable_user_workload_monitoring: bool | None = None
22
+ external_id: str | None = None
23
+ id: str | None = None
24
+ instance_type: str | None = None
25
+ multi_az: bool | None = None
26
+ nodes: int | None = None
31
27
  private: bool
32
28
  product: str
33
29
  provider: str
34
- provision_shard_id: str | None
30
+ provision_shard_id: str | None = None
35
31
  region: str
36
- initial_version: str | None
32
+ initial_version: str | None = None
37
33
  version: str
38
- hypershift: bool | None
39
- fips: bool | None
34
+ hypershift: bool | None = None
35
+ fips: bool = False
40
36
 
41
- class Config:
42
- extra = Extra.forbid
37
+ @field_validator("fips", mode="before")
38
+ @classmethod
39
+ def set_fips_default(cls, v: bool | None) -> bool:
40
+ return v or False
43
41
 
44
42
 
45
- class OSDClusterSpec(OCMClusterSpec):
43
+ class OSDClusterSpec(OCMClusterSpec, extra="forbid"):
46
44
  load_balancers: int
47
45
  storage: int
48
46
 
49
- class Config:
50
- extra = Extra.forbid
51
47
 
52
-
53
- class ROSAOcmAwsStsAttrs(BaseModel):
48
+ class ROSAOcmAwsStsAttrs(BaseModel, extra="forbid"):
54
49
  installer_role_arn: str
55
50
  support_role_arn: str
56
- controlplane_role_arn: str | None
51
+ controlplane_role_arn: str | None = None
57
52
  worker_role_arn: str
58
53
 
59
- class Config:
60
- extra = Extra.forbid
61
-
62
54
 
63
- class ROSAOcmAwsAttrs(BaseModel):
55
+ class ROSAOcmAwsAttrs(BaseModel, extra="forbid"):
64
56
  creator_role_arn: str
65
- sts: ROSAOcmAwsStsAttrs | None
66
-
67
- class Config:
68
- extra = Extra.forbid
57
+ sts: ROSAOcmAwsStsAttrs | None = None
69
58
 
70
59
 
71
- class ROSAClusterAWSAccount(BaseModel):
60
+ class ROSAClusterAWSAccount(BaseModel, extra="forbid"):
72
61
  uid: str
73
- rosa: ROSAOcmAwsAttrs | None
74
- billing_account_id: str | None
62
+ rosa: ROSAOcmAwsAttrs | None = None
63
+ billing_account_id: str | None = None
75
64
 
76
- class Config:
77
- extra = Extra.forbid
78
65
 
79
-
80
- class ROSAClusterSpec(OCMClusterSpec):
66
+ class ROSAClusterSpec(OCMClusterSpec, extra="forbid"):
81
67
  account: ROSAClusterAWSAccount
82
- subnet_ids: list[str] | None
83
- availability_zones: list[str] | None
84
- oidc_endpoint_url: str | None
85
-
86
- class Config:
87
- extra = Extra.forbid
68
+ subnet_ids: list[str] | None = None
69
+ availability_zones: list[str] | None = None
70
+ oidc_endpoint_url: str | None = None
88
71
 
89
72
 
90
73
  class ClusterMachinePool(BaseModel):
91
74
  id: str
92
75
  instance_type: str
93
- replicas: int | None
94
- autoscale: OCMClusterAutoscale | None
76
+ replicas: int | None = None
77
+ autoscale: OCMClusterAutoscale | None = None
95
78
 
96
79
 
97
- class OCMSpec(BaseModel):
98
- path: str | None
80
+ class OCMSpec(BaseModel, validate_by_name=True, validate_by_alias=True):
81
+ path: str | None = None
99
82
  spec: OSDClusterSpec | ROSAClusterSpec | OCMClusterSpec
100
83
  machine_pools: list[ClusterMachinePool] = Field(
101
84
  default_factory=list, alias="machinePools"
102
85
  )
103
86
  network: OCMClusterNetwork
104
- domain: str | None
87
+ domain: str | None = None
105
88
  server_url: str = Field("", alias="serverUrl")
106
89
  console_url: str = Field("", alias="consoleUrl")
107
90
  elb_fqdn: str = Field("", alias="elbFQDN")
108
-
109
- class Config:
110
- smart_union = True
111
- # This is need to populate by either console_url or consoleUrl, for instance
112
- allow_population_by_field_name = True
@@ -103,7 +103,7 @@ def fetch_desired_state(clusters: Iterable[Mapping[str, Any]]) -> list[dict[str,
103
103
  namespaces = get_namespaces()
104
104
  for namespace_info in namespaces:
105
105
  specs = get_external_resource_specs(
106
- namespace_info.dict(by_alias=True), provision_provider=PROVIDER_AWS
106
+ namespace_info.model_dump(by_alias=True), provision_provider=PROVIDER_AWS
107
107
  )
108
108
  for spec in specs:
109
109
  if spec.provider != "aws-iam-service-account":
reconcile/ocm_clusters.py CHANGED
@@ -248,13 +248,13 @@ def get_cluster_ocm_update_spec(
248
248
  if not desired_spec.network.type:
249
249
  desired_spec.network.type = "OVNKubernetes"
250
250
 
251
- cspec = current_spec.spec.dict()
252
- cspec[ocmmod.SPEC_ATTR_NETWORK] = current_spec.network.dict(
251
+ cspec = current_spec.spec.model_dump()
252
+ cspec[ocmmod.SPEC_ATTR_NETWORK] = current_spec.network.model_dump(
253
253
  exclude={IGNORE_NETWORK_TYPE_ATTR}
254
254
  )
255
255
 
256
- dspec = desired_spec.spec.dict()
257
- dspec[ocmmod.SPEC_ATTR_NETWORK] = desired_spec.network.dict(
256
+ dspec = desired_spec.spec.model_dump()
257
+ dspec[ocmmod.SPEC_ATTR_NETWORK] = desired_spec.network.model_dump(
258
258
  exclude={IGNORE_NETWORK_TYPE_ATTR}
259
259
  )
260
260