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.
- {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/METADATA +4 -3
- {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/RECORD +308 -308
- reconcile/acs_rbac.py +2 -2
- reconcile/aus/advanced_upgrade_service.py +15 -12
- reconcile/aus/base.py +9 -13
- reconcile/aus/cluster_version_data.py +15 -5
- reconcile/aus/models.py +1 -1
- reconcile/automated_actions/config/integration.py +15 -3
- reconcile/aws_account_manager/integration.py +6 -6
- reconcile/aws_account_manager/reconciler.py +3 -3
- reconcile/aws_ami_cleanup/integration.py +2 -5
- reconcile/aws_ami_share.py +69 -62
- reconcile/aws_saml_idp/integration.py +5 -3
- reconcile/aws_saml_roles/integration.py +23 -22
- reconcile/aws_version_sync/integration.py +6 -12
- reconcile/change_owners/bundle.py +3 -3
- reconcile/change_owners/change_log_tracking.py +3 -2
- reconcile/change_owners/change_owners.py +1 -1
- reconcile/dashdotdb_dora.py +1 -1
- reconcile/dashdotdb_slo.py +1 -1
- reconcile/database_access_manager.py +8 -9
- reconcile/dynatrace_token_provider/integration.py +1 -1
- reconcile/endpoints_discovery/integration.py +4 -1
- reconcile/endpoints_discovery/merge_request.py +1 -1
- reconcile/endpoints_discovery/merge_request_manager.py +1 -1
- reconcile/external_resources/integration.py +1 -1
- reconcile/external_resources/manager.py +19 -7
- reconcile/external_resources/metrics.py +1 -1
- reconcile/external_resources/model.py +6 -6
- reconcile/external_resources/reconciler.py +7 -4
- reconcile/external_resources/secrets_sync.py +2 -2
- reconcile/external_resources/state.py +56 -14
- reconcile/fleet_labeler/integration.py +1 -1
- reconcile/gcp_image_mirror.py +2 -2
- reconcile/github_org.py +1 -1
- reconcile/github_owners.py +4 -0
- reconcile/gitlab_members.py +6 -12
- reconcile/gitlab_permissions.py +8 -12
- reconcile/glitchtip_project_alerts/integration.py +3 -1
- reconcile/gql_definitions/acs/acs_instances.py +5 -5
- reconcile/gql_definitions/acs/acs_policies.py +5 -5
- reconcile/gql_definitions/acs/acs_rbac.py +5 -5
- reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +5 -5
- reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +5 -5
- reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +5 -5
- reconcile/gql_definitions/app_sre_tekton_access_revalidation/roles.py +5 -5
- reconcile/gql_definitions/app_sre_tekton_access_revalidation/users.py +5 -5
- reconcile/gql_definitions/automated_actions/instance.py +46 -7
- reconcile/gql_definitions/aws_account_manager/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_cloudwatch_log_retention/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_saml_roles/roles.py +5 -5
- reconcile/gql_definitions/aws_version_sync/clusters.py +5 -5
- reconcile/gql_definitions/aws_version_sync/namespaces.py +5 -5
- reconcile/gql_definitions/change_owners/queries/change_types.py +5 -5
- reconcile/gql_definitions/change_owners/queries/self_service_roles.py +5 -5
- reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +5 -5
- reconcile/gql_definitions/common/alerting_services_settings.py +5 -5
- reconcile/gql_definitions/common/app_code_component_repos.py +5 -5
- reconcile/gql_definitions/common/app_interface_custom_messages.py +5 -5
- reconcile/gql_definitions/common/app_interface_dms_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_repo_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_roles.py +5 -5
- reconcile/gql_definitions/common/app_interface_state_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_vault_settings.py +5 -5
- reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +5 -5
- reconcile/gql_definitions/common/apps.py +5 -5
- reconcile/gql_definitions/common/aws_vpc_requests.py +5 -5
- reconcile/gql_definitions/common/aws_vpcs.py +5 -5
- reconcile/gql_definitions/common/clusters.py +5 -5
- reconcile/gql_definitions/common/clusters_minimal.py +5 -5
- reconcile/gql_definitions/common/clusters_with_dms.py +5 -5
- reconcile/gql_definitions/common/clusters_with_peering.py +5 -5
- reconcile/gql_definitions/common/github_orgs.py +5 -5
- reconcile/gql_definitions/common/jira_settings.py +5 -5
- reconcile/gql_definitions/common/jiralert_settings.py +5 -5
- reconcile/gql_definitions/common/ldap_settings.py +5 -5
- reconcile/gql_definitions/common/namespaces.py +5 -5
- reconcile/gql_definitions/common/namespaces_minimal.py +7 -5
- reconcile/gql_definitions/common/ocm_env_telemeter.py +5 -5
- reconcile/gql_definitions/common/ocm_environments.py +5 -5
- reconcile/gql_definitions/common/pagerduty_instances.py +5 -5
- reconcile/gql_definitions/common/pgp_reencryption_settings.py +5 -5
- reconcile/gql_definitions/common/pipeline_providers.py +5 -5
- reconcile/gql_definitions/common/quay_instances.py +5 -5
- reconcile/gql_definitions/common/quay_orgs.py +5 -5
- reconcile/gql_definitions/common/reserved_networks.py +5 -5
- reconcile/gql_definitions/common/rhcs_provider_settings.py +5 -5
- reconcile/gql_definitions/common/saas_files.py +5 -5
- reconcile/gql_definitions/common/saas_target_namespaces.py +5 -5
- reconcile/gql_definitions/common/saasherder_settings.py +5 -5
- reconcile/gql_definitions/common/slack_workspaces.py +5 -5
- reconcile/gql_definitions/common/smtp_client_settings.py +5 -5
- reconcile/gql_definitions/common/state_aws_account.py +5 -5
- reconcile/gql_definitions/common/users.py +5 -5
- reconcile/gql_definitions/common/users_with_paths.py +5 -5
- reconcile/gql_definitions/cost_report/app_names.py +5 -5
- reconcile/gql_definitions/cost_report/cost_namespaces.py +5 -5
- reconcile/gql_definitions/cost_report/settings.py +5 -5
- reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +5 -5
- reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +5 -5
- reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +5 -5
- reconcile/gql_definitions/email_sender/apps.py +5 -5
- reconcile/gql_definitions/email_sender/emails.py +5 -5
- reconcile/gql_definitions/email_sender/users.py +5 -5
- reconcile/gql_definitions/endpoints_discovery/apps.py +5 -5
- reconcile/gql_definitions/external_resources/aws_accounts.py +5 -5
- reconcile/gql_definitions/external_resources/external_resources_modules.py +5 -5
- reconcile/gql_definitions/external_resources/external_resources_namespaces.py +5 -5
- reconcile/gql_definitions/external_resources/external_resources_settings.py +5 -5
- reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py +5 -5
- reconcile/gql_definitions/fleet_labeler/fleet_labels.py +5 -5
- reconcile/gql_definitions/fragments/aus_organization.py +5 -5
- reconcile/gql_definitions/fragments/aws_account_common.py +5 -5
- reconcile/gql_definitions/fragments/aws_account_managed.py +5 -5
- reconcile/gql_definitions/fragments/aws_account_sso.py +5 -5
- reconcile/gql_definitions/fragments/aws_infra_management_account.py +5 -5
- reconcile/gql_definitions/fragments/aws_organization.py +5 -5
- reconcile/gql_definitions/fragments/aws_vpc.py +5 -5
- reconcile/gql_definitions/fragments/aws_vpc_request.py +5 -5
- reconcile/gql_definitions/fragments/container_image_mirror.py +5 -5
- reconcile/gql_definitions/fragments/deploy_resources.py +5 -5
- reconcile/gql_definitions/fragments/disable.py +5 -5
- reconcile/gql_definitions/fragments/email_service.py +5 -5
- reconcile/gql_definitions/fragments/email_user.py +5 -5
- reconcile/gql_definitions/fragments/jumphost_common_fields.py +5 -5
- reconcile/gql_definitions/fragments/membership_source.py +5 -5
- reconcile/gql_definitions/fragments/minimal_ocm_organization.py +5 -5
- reconcile/gql_definitions/fragments/oc_connection_cluster.py +5 -5
- reconcile/gql_definitions/fragments/ocm_environment.py +5 -5
- reconcile/gql_definitions/fragments/pipeline_provider_retention.py +5 -5
- reconcile/gql_definitions/fragments/prometheus_instance.py +5 -5
- reconcile/gql_definitions/fragments/resource_limits_requirements.py +5 -5
- reconcile/gql_definitions/fragments/resource_requests_requirements.py +5 -5
- reconcile/gql_definitions/fragments/resource_values.py +5 -5
- reconcile/gql_definitions/fragments/saas_slo_document.py +5 -5
- reconcile/gql_definitions/fragments/saas_target_namespace.py +5 -5
- reconcile/gql_definitions/fragments/serviceaccount_token.py +5 -5
- reconcile/gql_definitions/fragments/terraform_state.py +5 -5
- reconcile/gql_definitions/fragments/upgrade_policy.py +5 -5
- reconcile/gql_definitions/fragments/user.py +5 -5
- reconcile/gql_definitions/fragments/vault_secret.py +5 -5
- reconcile/gql_definitions/gcp/gcp_docker_repos.py +5 -5
- reconcile/gql_definitions/gcp/gcp_projects.py +5 -5
- reconcile/gql_definitions/gitlab_members/gitlab_instances.py +5 -5
- reconcile/gql_definitions/gitlab_members/permissions.py +5 -5
- reconcile/gql_definitions/glitchtip/glitchtip_instance.py +5 -5
- reconcile/gql_definitions/glitchtip/glitchtip_project.py +5 -5
- reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +5 -5
- reconcile/gql_definitions/integrations/integrations.py +5 -5
- reconcile/gql_definitions/introspection.json +231 -0
- reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +5 -5
- reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +5 -5
- reconcile/gql_definitions/jira/jira_servers.py +5 -5
- reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +5 -5
- reconcile/gql_definitions/jumphosts/jumphosts.py +5 -5
- reconcile/gql_definitions/ldap_groups/roles.py +5 -5
- reconcile/gql_definitions/ldap_groups/settings.py +5 -5
- reconcile/gql_definitions/maintenance/maintenances.py +5 -5
- reconcile/gql_definitions/membershipsources/roles.py +5 -5
- reconcile/gql_definitions/ocm_labels/clusters.py +5 -5
- reconcile/gql_definitions/ocm_labels/organizations.py +5 -5
- reconcile/gql_definitions/openshift_cluster_bots/clusters.py +5 -5
- reconcile/gql_definitions/openshift_groups/managed_groups.py +5 -5
- reconcile/gql_definitions/openshift_groups/managed_roles.py +5 -5
- reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +5 -5
- reconcile/gql_definitions/quay_membership/quay_membership.py +5 -5
- reconcile/gql_definitions/rhcs/certs.py +5 -5
- reconcile/gql_definitions/rhidp/organizations.py +5 -5
- reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +5 -5
- reconcile/gql_definitions/service_dependencies/service_dependencies.py +5 -5
- reconcile/gql_definitions/sharding/aws_accounts.py +5 -5
- reconcile/gql_definitions/sharding/ocm_organization.py +5 -5
- reconcile/gql_definitions/skupper_network/site_controller_template.py +5 -5
- reconcile/gql_definitions/skupper_network/skupper_networks.py +5 -5
- reconcile/gql_definitions/slack_usergroups/clusters.py +5 -5
- reconcile/gql_definitions/slack_usergroups/permissions.py +5 -5
- reconcile/gql_definitions/slack_usergroups/users.py +5 -5
- reconcile/gql_definitions/slo_documents/slo_documents.py +5 -5
- reconcile/gql_definitions/status_board/status_board.py +5 -5
- reconcile/gql_definitions/statuspage/statuspages.py +5 -5
- reconcile/gql_definitions/templating/template_collection.py +5 -5
- reconcile/gql_definitions/templating/templates.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +5 -5
- reconcile/gql_definitions/terraform_init/aws_accounts.py +5 -5
- reconcile/gql_definitions/terraform_repo/terraform_repo.py +5 -5
- reconcile/gql_definitions/terraform_resources/database_access_manager.py +5 -5
- reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +5 -5
- reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +5 -5
- reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +5 -5
- reconcile/gql_definitions/vault_instances/vault_instances.py +5 -5
- reconcile/gql_definitions/vault_policies/vault_policies.py +5 -5
- reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +5 -5
- reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +5 -5
- reconcile/integrations_manager.py +3 -3
- reconcile/jenkins_worker_fleets.py +9 -8
- reconcile/jira_permissions_validator.py +2 -2
- reconcile/ldap_groups/integration.py +1 -1
- reconcile/ocm/types.py +35 -57
- reconcile/ocm_aws_infrastructure_access.py +1 -1
- reconcile/ocm_clusters.py +4 -4
- reconcile/ocm_labels/integration.py +3 -2
- reconcile/ocm_machine_pools.py +23 -23
- reconcile/openshift_base.py +53 -2
- reconcile/openshift_cluster_bots.py +1 -1
- reconcile/openshift_namespace_labels.py +1 -1
- reconcile/openshift_namespaces.py +97 -101
- reconcile/openshift_resources_base.py +6 -2
- reconcile/openshift_rhcs_certs.py +5 -5
- reconcile/openshift_rolebindings.py +7 -11
- reconcile/openshift_saas_deploy.py +4 -5
- reconcile/openshift_saas_deploy_change_tester.py +9 -7
- reconcile/openshift_serviceaccount_tokens.py +2 -2
- reconcile/openshift_upgrade_watcher.py +1 -1
- reconcile/oum/labelset.py +5 -3
- reconcile/oum/models.py +1 -4
- reconcile/prometheus_rules_tester/integration.py +3 -3
- reconcile/quay_mirror.py +1 -1
- reconcile/queries.py +6 -0
- reconcile/rhidp/common.py +3 -5
- reconcile/rhidp/sso_client/base.py +1 -1
- reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +1 -1
- reconcile/skupper_network/integration.py +2 -2
- reconcile/slack_usergroups.py +31 -11
- reconcile/status_board.py +6 -6
- reconcile/statuspage/atlassian.py +7 -7
- reconcile/statuspage/page.py +4 -9
- reconcile/templating/lib/rendering.py +3 -3
- reconcile/templating/renderer.py +2 -2
- reconcile/terraform_cloudflare_dns.py +3 -3
- reconcile/terraform_cloudflare_resources.py +5 -5
- reconcile/terraform_cloudflare_users.py +3 -2
- reconcile/terraform_init/integration.py +2 -2
- reconcile/terraform_repo.py +16 -12
- reconcile/terraform_resources.py +6 -6
- reconcile/terraform_tgw_attachments.py +20 -18
- reconcile/terraform_vpc_resources/integration.py +3 -1
- reconcile/typed_queries/cost_report/app_names.py +1 -1
- reconcile/typed_queries/cost_report/cost_namespaces.py +2 -2
- reconcile/typed_queries/saas_files.py +11 -11
- reconcile/typed_queries/status_board.py +2 -2
- reconcile/unleash_feature_toggles/integration.py +4 -2
- reconcile/utils/acs/base.py +6 -3
- reconcile/utils/acs/policies.py +2 -2
- reconcile/utils/aws_api.py +51 -20
- reconcile/utils/aws_api_typed/organization.py +4 -2
- reconcile/utils/deadmanssnitch_api.py +1 -1
- reconcile/utils/early_exit_cache.py +8 -10
- reconcile/utils/gitlab_api.py +7 -5
- reconcile/utils/glitchtip/client.py +6 -2
- reconcile/utils/glitchtip/models.py +25 -28
- reconcile/utils/gql.py +4 -7
- reconcile/utils/instrumented_wrappers.py +1 -1
- reconcile/utils/internal_groups/client.py +2 -2
- reconcile/utils/internal_groups/models.py +8 -17
- reconcile/utils/jinja2/utils.py +2 -5
- reconcile/utils/jobcontroller/controller.py +1 -1
- reconcile/utils/jobcontroller/models.py +17 -1
- reconcile/utils/json.py +39 -1
- reconcile/utils/membershipsources/app_interface_resolver.py +4 -2
- reconcile/utils/membershipsources/models.py +16 -23
- reconcile/utils/membershipsources/resolver.py +4 -2
- reconcile/utils/merge_request_manager/merge_request_manager.py +1 -1
- reconcile/utils/merge_request_manager/parser.py +4 -4
- reconcile/utils/metrics.py +5 -5
- reconcile/utils/models.py +304 -82
- reconcile/utils/mr/notificator.py +1 -1
- reconcile/utils/mr/user_maintenance.py +3 -2
- reconcile/utils/oc.py +112 -92
- reconcile/utils/ocm/addons.py +0 -1
- reconcile/utils/ocm/base.py +17 -20
- reconcile/utils/ocm/cluster_groups.py +1 -1
- reconcile/utils/ocm/identity_providers.py +2 -2
- reconcile/utils/ocm/labels.py +1 -1
- reconcile/utils/ocm/products.py +8 -8
- reconcile/utils/ocm/service_log.py +1 -1
- reconcile/utils/ocm/sre_capability_labels.py +20 -13
- reconcile/utils/openshift_resource.py +5 -0
- reconcile/utils/pagerduty_api.py +5 -2
- reconcile/utils/promotion_state.py +6 -11
- reconcile/utils/raw_github_api.py +1 -1
- reconcile/utils/rhcsv2_certs.py +1 -4
- reconcile/utils/runtime/integration.py +1 -1
- reconcile/utils/saasherder/interfaces.py +13 -20
- reconcile/utils/saasherder/models.py +23 -20
- reconcile/utils/saasherder/saasherder.py +26 -17
- reconcile/utils/slack_api.py +2 -2
- reconcile/utils/structs.py +1 -1
- reconcile/utils/terraform_client.py +1 -1
- reconcile/utils/terrascript_aws_client.py +47 -43
- reconcile/utils/unleash/server.py +2 -8
- reconcile/utils/vault.py +4 -11
- reconcile/utils/vcs.py +8 -8
- reconcile/vault_replication.py +1 -1
- tools/cli_commands/cost_report/cost_management_api.py +3 -3
- tools/cli_commands/cost_report/view.py +7 -6
- tools/cli_commands/erv2.py +3 -1
- tools/qontract_cli.py +6 -5
- tools/template_validation.py +3 -1
- {qontract_reconcile-0.10.2.dev394.dist-info → qontract_reconcile-0.10.2.dev414.dist-info}/WHEEL +0 -0
- {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=
|
|
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
|
-
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
model_config = ConfigDict(
|
|
178
|
+
extra='forbid'
|
|
179
|
+
)
|
|
180
180
|
|
|
181
181
|
|
|
182
182
|
class ClusterSpecV1(ConfiguredBaseModel):
|
reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Generated by qenerate plugin=
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
556
|
-
|
|
557
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
model_config = ConfigDict(
|
|
81
|
+
extra='forbid'
|
|
82
|
+
)
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
class ClusterNetworkV1(ConfiguredBaseModel):
|
reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Generated by qenerate plugin=
|
|
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
|
-
|
|
15
|
+
ConfigDict,
|
|
16
16
|
Field,
|
|
17
17
|
Json,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class ConfiguredBaseModel(BaseModel):
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
163
|
-
logging.debug("DESIRED: " + str(desired_fleet.
|
|
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
|
-
{
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
34
|
+
hypershift: bool | None = None
|
|
35
|
+
fips: bool = False
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
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.
|
|
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.
|
|
252
|
-
cspec[ocmmod.SPEC_ATTR_NETWORK] = current_spec.network.
|
|
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.
|
|
257
|
-
dspec[ocmmod.SPEC_ATTR_NETWORK] = desired_spec.network.
|
|
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
|
|