qontract-reconcile 0.10.2.dev361__py3-none-any.whl → 0.10.2.dev474__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.dev361.dist-info → qontract_reconcile-0.10.2.dev474.dist-info}/METADATA +14 -13
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev474.dist-info}/RECORD +371 -364
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev474.dist-info}/WHEEL +1 -1
- reconcile/acs_rbac.py +2 -2
- reconcile/aus/advanced_upgrade_service.py +18 -12
- reconcile/aus/aus_sts_gate_handler.py +59 -0
- reconcile/aus/base.py +137 -34
- reconcile/aus/cluster_version_data.py +15 -5
- reconcile/aus/models.py +3 -1
- reconcile/aus/ocm_addons_upgrade_scheduler_org.py +1 -0
- reconcile/aus/ocm_upgrade_scheduler.py +8 -1
- reconcile/aus/ocm_upgrade_scheduler_org.py +20 -5
- reconcile/aus/version_gate_approver.py +1 -16
- reconcile/aus/version_gates/sts_version_gate_handler.py +5 -72
- reconcile/automated_actions/config/integration.py +16 -4
- reconcile/aws_account_manager/integration.py +21 -9
- reconcile/aws_account_manager/reconciler.py +3 -3
- reconcile/aws_account_manager/utils.py +1 -1
- reconcile/aws_ami_cleanup/integration.py +8 -12
- reconcile/aws_ami_share.py +69 -62
- reconcile/aws_cloudwatch_log_retention/integration.py +155 -126
- reconcile/aws_ecr_image_pull_secrets.py +1 -1
- reconcile/aws_iam_keys.py +1 -0
- reconcile/aws_saml_idp/integration.py +12 -4
- reconcile/aws_saml_roles/integration.py +30 -23
- reconcile/aws_version_sync/integration.py +6 -12
- reconcile/change_owners/README.md +1 -1
- reconcile/change_owners/bundle.py +3 -3
- reconcile/change_owners/change_log_tracking.py +3 -2
- reconcile/change_owners/change_owners.py +108 -42
- reconcile/change_owners/decision.py +1 -1
- reconcile/change_owners/diff.py +0 -2
- reconcile/checkpoint.py +11 -3
- reconcile/cli.py +94 -11
- reconcile/dashdotdb_dora.py +5 -12
- reconcile/dashdotdb_slo.py +1 -1
- reconcile/database_access_manager.py +123 -117
- 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 +8 -8
- reconcile/external_resources/factories.py +4 -6
- reconcile/external_resources/integration.py +1 -1
- reconcile/external_resources/manager.py +8 -6
- reconcile/external_resources/meta.py +0 -1
- reconcile/external_resources/metrics.py +1 -1
- reconcile/external_resources/model.py +19 -15
- reconcile/external_resources/reconciler.py +7 -4
- reconcile/external_resources/secrets_sync.py +6 -10
- reconcile/external_resources/state.py +26 -16
- reconcile/fleet_labeler/integration.py +1 -1
- reconcile/gabi_authorized_users.py +5 -2
- reconcile/gcp_image_mirror.py +2 -2
- reconcile/github_org.py +1 -1
- reconcile/github_owners.py +4 -0
- reconcile/gitlab_housekeeping.py +13 -15
- reconcile/gitlab_members.py +6 -12
- reconcile/gitlab_owners.py +15 -11
- 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 +14 -5
- reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +15 -5
- reconcile/gql_definitions/aws_cloudwatch_log_retention/aws_accounts.py +27 -66
- reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +15 -5
- reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +15 -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 +18 -5
- reconcile/gql_definitions/common/aws_vpcs.py +5 -5
- reconcile/gql_definitions/common/clusters.py +7 -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 +38 -7
- 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 +7 -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 +33 -0
- reconcile/gql_definitions/fragments/aws_vpc.py +5 -5
- reconcile/gql_definitions/fragments/aws_vpc_request.py +12 -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 +775 -136
- 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 +9 -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 +25 -79
- reconcile/gql_definitions/rhcs/openshift_resource_rhcs_cert.py +43 -0
- 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 +19 -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 +37 -7
- reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +15 -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 +8 -5
- reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +6 -5
- reconcile/integrations_manager.py +3 -3
- reconcile/jenkins_worker_fleets.py +10 -8
- reconcile/jira_permissions_validator.py +237 -122
- 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 +33 -27
- reconcile/openshift_base.py +113 -4
- reconcile/openshift_cluster_bots.py +1 -1
- reconcile/openshift_namespace_labels.py +1 -1
- reconcile/openshift_namespaces.py +96 -101
- reconcile/openshift_resources_base.py +6 -2
- reconcile/openshift_rhcs_certs.py +74 -37
- reconcile/openshift_rolebindings.py +7 -11
- reconcile/openshift_saas_deploy.py +4 -5
- reconcile/openshift_saas_deploy_change_tester.py +9 -7
- reconcile/openshift_saas_deploy_trigger_cleaner.py +3 -5
- reconcile/openshift_serviceaccount_tokens.py +2 -2
- reconcile/openshift_upgrade_watcher.py +4 -4
- reconcile/oum/labelset.py +5 -3
- reconcile/oum/models.py +1 -4
- reconcile/prometheus_rules_tester/integration.py +3 -3
- reconcile/quay_base.py +25 -6
- reconcile/quay_membership.py +55 -29
- reconcile/quay_mirror.py +1 -1
- reconcile/quay_mirror_org.py +6 -4
- reconcile/quay_permissions.py +81 -75
- reconcile/quay_repos.py +35 -37
- reconcile/queries.py +132 -1
- reconcile/rhidp/common.py +3 -5
- reconcile/rhidp/sso_client/base.py +16 -5
- reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +1 -1
- reconcile/saas_auto_promotions_manager/subscriber.py +4 -3
- reconcile/skupper_network/integration.py +2 -2
- reconcile/slack_usergroups.py +35 -14
- reconcile/sql_query.py +1 -0
- reconcile/status_board.py +6 -6
- reconcile/statuspage/atlassian.py +7 -7
- reconcile/statuspage/integrations/maintenances.py +4 -3
- reconcile/statuspage/page.py +4 -9
- reconcile/statuspage/status.py +5 -8
- reconcile/templates/rosa-classic-cluster-creation.sh.j2 +1 -1
- reconcile/templates/rosa-hcp-cluster-creation.sh.j2 +1 -1
- reconcile/templating/lib/rendering.py +3 -3
- reconcile/templating/renderer.py +2 -2
- reconcile/templating/validator.py +4 -4
- reconcile/terraform_aws_route53.py +7 -1
- 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 +187 -23
- reconcile/terraform_repo.py +16 -12
- reconcile/terraform_resources.py +6 -6
- reconcile/terraform_tgw_attachments.py +27 -19
- reconcile/terraform_users.py +7 -0
- reconcile/terraform_vpc_peerings.py +14 -3
- reconcile/terraform_vpc_resources/integration.py +20 -8
- reconcile/terraform_vpc_resources/merge_request.py +12 -2
- reconcile/terraform_vpc_resources/merge_request_manager.py +43 -19
- reconcile/typed_queries/aws_account_tags.py +41 -0
- 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 +20 -15
- 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/api.py +38 -9
- reconcile/utils/aws_api_typed/cloudformation.py +149 -0
- reconcile/utils/aws_api_typed/logs.py +73 -0
- reconcile/utils/aws_api_typed/organization.py +4 -2
- reconcile/utils/binary.py +7 -12
- reconcile/utils/datetime_util.py +67 -0
- reconcile/utils/deadmanssnitch_api.py +1 -1
- reconcile/utils/differ.py +2 -3
- reconcile/utils/early_exit_cache.py +11 -12
- reconcile/utils/environ.py +5 -0
- reconcile/utils/expiration.py +7 -3
- reconcile/utils/external_resource_spec.py +2 -0
- reconcile/utils/filtering.py +1 -1
- reconcile/utils/gitlab_api.py +19 -5
- reconcile/utils/glitchtip/client.py +6 -2
- reconcile/utils/glitchtip/models.py +25 -28
- reconcile/utils/gql.py +4 -7
- reconcile/utils/helpers.py +1 -1
- 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 +6 -101
- reconcile/utils/jira_client.py +82 -63
- reconcile/utils/jjb_client.py +26 -13
- reconcile/utils/jobcontroller/controller.py +2 -2
- reconcile/utils/jobcontroller/models.py +17 -1
- reconcile/utils/json.py +43 -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 +4 -4
- reconcile/utils/merge_request_manager/parser.py +6 -6
- reconcile/utils/metrics.py +5 -5
- reconcile/utils/models.py +304 -82
- reconcile/utils/mr/app_interface_reporter.py +2 -2
- reconcile/utils/mr/notificator.py +3 -3
- reconcile/utils/mr/update_access_report_base.py +3 -4
- reconcile/utils/mr/user_maintenance.py +3 -2
- reconcile/utils/oc.py +252 -201
- reconcile/utils/oc_filters.py +3 -3
- 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/search_filters.py +3 -6
- reconcile/utils/ocm/service_log.py +4 -6
- reconcile/utils/ocm/sre_capability_labels.py +20 -13
- reconcile/utils/openshift_resource.py +8 -3
- reconcile/utils/pagerduty_api.py +10 -7
- reconcile/utils/promotion_state.py +6 -11
- reconcile/utils/quay_api.py +74 -87
- reconcile/utils/raw_github_api.py +1 -1
- reconcile/utils/rhcsv2_certs.py +86 -23
- reconcile/utils/rosa/session.py +16 -0
- reconcile/utils/runtime/integration.py +2 -3
- reconcile/utils/runtime/runner.py +2 -2
- reconcile/utils/saasherder/interfaces.py +13 -20
- reconcile/utils/saasherder/models.py +23 -20
- reconcile/utils/saasherder/saasherder.py +50 -27
- reconcile/utils/slack_api.py +2 -2
- reconcile/utils/sloth.py +171 -2
- reconcile/utils/structs.py +1 -1
- reconcile/utils/terraform_client.py +5 -4
- reconcile/utils/terrascript_aws_client.py +274 -124
- reconcile/utils/unleash/server.py +2 -8
- reconcile/utils/vault.py +5 -12
- reconcile/utils/vcs.py +8 -8
- reconcile/vault_replication.py +107 -42
- reconcile/vpc_peerings_validator.py +13 -0
- tools/app_interface_reporter.py +4 -4
- 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 +1 -1
- tools/qontract_cli.py +28 -17
- tools/template_validation.py +3 -1
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev474.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,15 +12,23 @@ 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
|
+
from reconcile.gql_definitions.fragments.aws_organization import AWSOrganization
|
|
20
21
|
from reconcile.gql_definitions.fragments.vault_secret import VaultSecret
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
DEFINITION = """
|
|
25
|
+
fragment AWSOrganization on AWSOrganization_v1 {
|
|
26
|
+
payerAccount {
|
|
27
|
+
organizationAccountTags
|
|
28
|
+
}
|
|
29
|
+
tags
|
|
30
|
+
}
|
|
31
|
+
|
|
24
32
|
fragment VaultSecret on VaultSecret_v1 {
|
|
25
33
|
path
|
|
26
34
|
field
|
|
@@ -33,6 +41,7 @@ query TerraformInitAWSAccounts {
|
|
|
33
41
|
name
|
|
34
42
|
terraformUsername
|
|
35
43
|
terraformState {
|
|
44
|
+
bucket
|
|
36
45
|
region
|
|
37
46
|
}
|
|
38
47
|
resourcesDefaultRegion
|
|
@@ -42,18 +51,22 @@ query TerraformInitAWSAccounts {
|
|
|
42
51
|
disable {
|
|
43
52
|
integrations
|
|
44
53
|
}
|
|
54
|
+
organization {
|
|
55
|
+
...AWSOrganization
|
|
56
|
+
}
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
"""
|
|
48
60
|
|
|
49
61
|
|
|
50
62
|
class ConfiguredBaseModel(BaseModel):
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
63
|
+
model_config = ConfigDict(
|
|
64
|
+
extra='forbid'
|
|
65
|
+
)
|
|
54
66
|
|
|
55
67
|
|
|
56
68
|
class TerraformStateAWSV1(ConfiguredBaseModel):
|
|
69
|
+
bucket: str = Field(..., alias="bucket")
|
|
57
70
|
region: str = Field(..., alias="region")
|
|
58
71
|
|
|
59
72
|
|
|
@@ -68,6 +81,7 @@ class AWSAccountV1(ConfiguredBaseModel):
|
|
|
68
81
|
resources_default_region: str = Field(..., alias="resourcesDefaultRegion")
|
|
69
82
|
automation_token: VaultSecret = Field(..., alias="automationToken")
|
|
70
83
|
disable: Optional[DisableClusterAutomationsV1] = Field(..., alias="disable")
|
|
84
|
+
organization: Optional[AWSOrganization] = Field(..., alias="organization")
|
|
71
85
|
|
|
72
86
|
|
|
73
87
|
class TerraformInitAWSAccountsQueryData(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
|
)
|
|
@@ -108,6 +108,17 @@ query TerraformResourcesNamespaces {
|
|
|
108
108
|
}
|
|
109
109
|
managed_by_erv2
|
|
110
110
|
}
|
|
111
|
+
... on NamespaceTerraformResourceRDSProxy_v1 {
|
|
112
|
+
region
|
|
113
|
+
identifier
|
|
114
|
+
defaults
|
|
115
|
+
overrides
|
|
116
|
+
output_resource_name
|
|
117
|
+
annotations
|
|
118
|
+
tags
|
|
119
|
+
managed_by_erv2
|
|
120
|
+
}
|
|
121
|
+
|
|
111
122
|
... on NamespaceTerraformResourceS3_v1 {
|
|
112
123
|
region
|
|
113
124
|
identifier
|
|
@@ -232,6 +243,7 @@ query TerraformResourcesNamespaces {
|
|
|
232
243
|
defaults
|
|
233
244
|
output_resource_name
|
|
234
245
|
storage_class
|
|
246
|
+
bucket_policy
|
|
235
247
|
annotations
|
|
236
248
|
}
|
|
237
249
|
... on NamespaceTerraformResourceS3SQS_v1 {
|
|
@@ -288,6 +300,7 @@ query TerraformResourcesNamespaces {
|
|
|
288
300
|
identifier
|
|
289
301
|
defaults
|
|
290
302
|
es_identifier
|
|
303
|
+
policy
|
|
291
304
|
output_resource_name
|
|
292
305
|
annotations
|
|
293
306
|
}
|
|
@@ -397,6 +410,7 @@ query TerraformResourcesNamespaces {
|
|
|
397
410
|
}
|
|
398
411
|
output_resource_name
|
|
399
412
|
annotations
|
|
413
|
+
secret_format
|
|
400
414
|
}
|
|
401
415
|
... on NamespaceTerraformResourceASG_v1 {
|
|
402
416
|
region
|
|
@@ -507,6 +521,7 @@ query TerraformResourcesNamespaces {
|
|
|
507
521
|
environment {
|
|
508
522
|
name
|
|
509
523
|
servicePhase
|
|
524
|
+
costCenter
|
|
510
525
|
}
|
|
511
526
|
app {
|
|
512
527
|
name
|
|
@@ -540,9 +555,9 @@ query TerraformResourcesNamespaces {
|
|
|
540
555
|
|
|
541
556
|
|
|
542
557
|
class ConfiguredBaseModel(BaseModel):
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
558
|
+
model_config = ConfigDict(
|
|
559
|
+
extra='forbid'
|
|
560
|
+
)
|
|
546
561
|
|
|
547
562
|
|
|
548
563
|
class ExternalResourcesProvisionerV1(ConfiguredBaseModel):
|
|
@@ -598,6 +613,17 @@ class NamespaceTerraformResourceRDSV1(NamespaceTerraformResourceAWSV1):
|
|
|
598
613
|
managed_by_erv2: Optional[bool] = Field(..., alias="managed_by_erv2")
|
|
599
614
|
|
|
600
615
|
|
|
616
|
+
class NamespaceTerraformResourceRDSProxyV1(NamespaceTerraformResourceAWSV1):
|
|
617
|
+
region: Optional[str] = Field(..., alias="region")
|
|
618
|
+
identifier: str = Field(..., alias="identifier")
|
|
619
|
+
defaults: str = Field(..., alias="defaults")
|
|
620
|
+
overrides: Optional[str] = Field(..., alias="overrides")
|
|
621
|
+
output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
|
|
622
|
+
annotations: Optional[str] = Field(..., alias="annotations")
|
|
623
|
+
tags: Optional[str] = Field(..., alias="tags")
|
|
624
|
+
managed_by_erv2: Optional[bool] = Field(..., alias="managed_by_erv2")
|
|
625
|
+
|
|
626
|
+
|
|
601
627
|
class AWSS3EventNotificationV1(ConfiguredBaseModel):
|
|
602
628
|
destination_type: str = Field(..., alias="destination_type")
|
|
603
629
|
destination: str = Field(..., alias="destination")
|
|
@@ -751,6 +777,7 @@ class NamespaceTerraformResourceS3CloudFrontV1(NamespaceTerraformResourceAWSV1):
|
|
|
751
777
|
defaults: str = Field(..., alias="defaults")
|
|
752
778
|
output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
|
|
753
779
|
storage_class: Optional[str] = Field(..., alias="storage_class")
|
|
780
|
+
bucket_policy: Optional[str] = Field(..., alias="bucket_policy")
|
|
754
781
|
annotations: Optional[str] = Field(..., alias="annotations")
|
|
755
782
|
|
|
756
783
|
|
|
@@ -813,6 +840,7 @@ class NamespaceTerraformResourceKinesisV1(NamespaceTerraformResourceAWSV1):
|
|
|
813
840
|
identifier: str = Field(..., alias="identifier")
|
|
814
841
|
defaults: str = Field(..., alias="defaults")
|
|
815
842
|
es_identifier: Optional[str] = Field(..., alias="es_identifier")
|
|
843
|
+
policy: Optional[str] = Field(..., alias="policy")
|
|
816
844
|
output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
|
|
817
845
|
annotations: Optional[str] = Field(..., alias="annotations")
|
|
818
846
|
|
|
@@ -949,6 +977,7 @@ class NamespaceTerraformResourceSecretsManagerV1(NamespaceTerraformResourceAWSV1
|
|
|
949
977
|
secret: Optional[VaultSecret] = Field(..., alias="secret")
|
|
950
978
|
output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
|
|
951
979
|
annotations: Optional[str] = Field(..., alias="annotations")
|
|
980
|
+
secret_format: Optional[str] = Field(..., alias="secret_format")
|
|
952
981
|
|
|
953
982
|
|
|
954
983
|
class CloudinitConfigV1(ConfiguredBaseModel):
|
|
@@ -1076,18 +1105,19 @@ class NamespaceTerraformResourceMskV1(NamespaceTerraformResourceAWSV1):
|
|
|
1076
1105
|
|
|
1077
1106
|
|
|
1078
1107
|
class NamespaceTerraformProviderResourceAWSV1(NamespaceExternalResourceV1):
|
|
1079
|
-
resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceMskV1,
|
|
1108
|
+
resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceRDSProxyV1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
|
|
1080
1109
|
|
|
1081
1110
|
|
|
1082
1111
|
class EnvironmentV1(ConfiguredBaseModel):
|
|
1083
1112
|
name: str = Field(..., alias="name")
|
|
1084
1113
|
service_phase: str = Field(..., alias="servicePhase")
|
|
1114
|
+
cost_center: Optional[str] = Field(..., alias="costCenter")
|
|
1085
1115
|
|
|
1086
1116
|
|
|
1087
1117
|
class AppV1(ConfiguredBaseModel):
|
|
1088
1118
|
name: str = Field(..., alias="name")
|
|
1089
1119
|
app_code: str = Field(..., alias="appCode")
|
|
1090
|
-
cost_center: str = Field(..., alias="costCenter")
|
|
1120
|
+
cost_center: Optional[str] = Field(..., alias="costCenter")
|
|
1091
1121
|
|
|
1092
1122
|
|
|
1093
1123
|
class ClusterSpecV1(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
|
)
|
|
@@ -51,6 +51,16 @@ fragment AWSAccountCommon on AWSAccount_v1 {
|
|
|
51
51
|
deleteKeys
|
|
52
52
|
premiumSupport
|
|
53
53
|
partition
|
|
54
|
+
organization {
|
|
55
|
+
...AWSOrganization
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fragment AWSOrganization on AWSOrganization_v1 {
|
|
60
|
+
payerAccount {
|
|
61
|
+
organizationAccountTags
|
|
62
|
+
}
|
|
63
|
+
tags
|
|
54
64
|
}
|
|
55
65
|
|
|
56
66
|
fragment TerraformState on TerraformStateAWS_v1 {
|
|
@@ -82,9 +92,9 @@ query AWSAccounts($name: String) {
|
|
|
82
92
|
|
|
83
93
|
|
|
84
94
|
class ConfiguredBaseModel(BaseModel):
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
model_config = ConfigDict(
|
|
96
|
+
extra='forbid'
|
|
97
|
+
)
|
|
88
98
|
|
|
89
99
|
|
|
90
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
|
)
|
|
@@ -23,6 +23,7 @@ from reconcile.gql_definitions.vpc_peerings_validator.vpc_peerings_validator_pee
|
|
|
23
23
|
DEFINITION = """
|
|
24
24
|
fragment VpcPeeringsValidatorPeeredCluster on Cluster_v1 {
|
|
25
25
|
name
|
|
26
|
+
allowedToBypassPublicPeeringRestriction
|
|
26
27
|
network {
|
|
27
28
|
vpc
|
|
28
29
|
}
|
|
@@ -35,6 +36,7 @@ fragment VpcPeeringsValidatorPeeredCluster on Cluster_v1 {
|
|
|
35
36
|
query VpcPeeringsValidator {
|
|
36
37
|
clusters: clusters_v1 {
|
|
37
38
|
name
|
|
39
|
+
allowedToBypassPublicPeeringRestriction
|
|
38
40
|
network {
|
|
39
41
|
vpc
|
|
40
42
|
}
|
|
@@ -77,9 +79,9 @@ query VpcPeeringsValidator {
|
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
class ConfiguredBaseModel(BaseModel):
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
model_config = ConfigDict(
|
|
83
|
+
extra='forbid'
|
|
84
|
+
)
|
|
83
85
|
|
|
84
86
|
|
|
85
87
|
class ClusterNetworkV1(ConfiguredBaseModel):
|
|
@@ -128,6 +130,7 @@ class ClusterPeeringV1(ConfiguredBaseModel):
|
|
|
128
130
|
|
|
129
131
|
class ClusterV1(ConfiguredBaseModel):
|
|
130
132
|
name: str = Field(..., alias="name")
|
|
133
|
+
allowed_to_bypass_public_peering_restriction: Optional[bool] = Field(..., alias="allowedToBypassPublicPeeringRestriction")
|
|
131
134
|
network: Optional[ClusterNetworkV1] = Field(..., alias="network")
|
|
132
135
|
spec: Optional[ClusterSpecV1] = Field(..., alias="spec")
|
|
133
136
|
internal: Optional[bool] = Field(..., alias="internal")
|
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):
|
|
@@ -34,6 +34,7 @@ class ClusterSpecV1(ConfiguredBaseModel):
|
|
|
34
34
|
|
|
35
35
|
class VpcPeeringsValidatorPeeredCluster(ConfiguredBaseModel):
|
|
36
36
|
name: str = Field(..., alias="name")
|
|
37
|
+
allowed_to_bypass_public_peering_restriction: Optional[bool] = Field(..., alias="allowedToBypassPublicPeeringRestriction")
|
|
37
38
|
network: Optional[ClusterNetworkV1] = Field(..., alias="network")
|
|
38
39
|
spec: Optional[ClusterSpecV1] = Field(..., alias="spec")
|
|
39
40
|
internal: Optional[bool] = Field(..., alias="internal")
|
|
@@ -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}}
|
|
@@ -195,6 +196,7 @@ def run(dry_run: bool) -> None:
|
|
|
195
196
|
accounts=[],
|
|
196
197
|
settings=settings,
|
|
197
198
|
prefetch_resources_by_schemas=["/aws/asg-defaults-1.yml"],
|
|
199
|
+
default_tags=None,
|
|
198
200
|
)
|
|
199
201
|
|
|
200
202
|
for instance in jenkins_instances:
|