qontract-reconcile 0.10.2.dev226__tar.gz → 0.10.2.dev228__tar.gz
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.dev226 → qontract_reconcile-0.10.2.dev228}/PKG-INFO +1 -1
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_base.py +9 -1
- qontract_reconcile-0.10.2.dev228/reconcile/status_board.py +473 -0
- qontract_reconcile-0.10.2.dev228/reconcile/utils/ocm/status_board.py +138 -0
- qontract_reconcile-0.10.2.dev226/reconcile/status_board.py +0 -275
- qontract_reconcile-0.10.2.dev226/reconcile/utils/ocm/status_board.py +0 -66
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/README.md +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/pyproject.toml +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/acs_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/acs_rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/advanced_upgrade_service.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/aus_label_source.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/cluster_version_data.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/healthchecks.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/node_pool_spec.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/ocm_addons_upgrade_scheduler_org.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/ocm_upgrade_scheduler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/ocm_upgrade_scheduler_org.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/upgrades.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gate_approver.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gates/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gates/handler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gates/ingress_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gates/ocp_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aus/version_gates/sts_version_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/automated_actions/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/automated_actions/config/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/automated_actions/config/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/README.md +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_account_manager/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_ami_cleanup/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_ami_cleanup/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_ami_share.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_cloudwatch_log_retention/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_cloudwatch_log_retention/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_ecr_image_pull_secrets.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_garbage_collector.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_iam_keys.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_iam_password_reset.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_saml_idp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_saml_idp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_saml_roles/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_saml_roles/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_support_cases_sos.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/merge_request_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/merge_request_manager/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/merge_request_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/aws_version_sync/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/blackbox_exporter_endpoint_monitoring.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/README.md +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/approver.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/bundle.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/change_log_tracking.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/change_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/change_types.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/changes.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/decision.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/diff.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/implicit_ownership.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/self_service_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/change_owners/tester.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/checkpoint.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/cli.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/closedbox_endpoint_monitoring_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/cluster_auth_rhidp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/cluster_auth_rhidp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/cluster_deployment_mapper.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dashdotdb_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dashdotdb_cso.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dashdotdb_dora.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dashdotdb_dvo.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dashdotdb_slo.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/database_access_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/deadmanssnitch.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/model.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/dynatrace_token_provider/validate.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/email_sender.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/endpoints_discovery/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/endpoints_discovery/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/endpoints_discovery/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/endpoints_discovery/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/aws.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/factories.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/integration_secrets_sync.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/model.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/secrets_sync.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/external_resources/state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/validate.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/fleet_labeler/vcs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gabi_authorized_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gcp_image_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_org.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_repo_invites.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_repo_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/github_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_fork_compliance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_housekeeping.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_labeler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_members.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_mr_sqs_consumer.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gitlab_projects.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip/README.md +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip_project_alerts/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip_project_alerts/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip_project_dsn/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/glitchtip_project_dsn/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/acs/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/acs/acs_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/acs/acs_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/acs/acs_rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/advanced_upgrade_service/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/app_interface_metrics_exporter/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/app_sre_tekton_access_revalidation/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/app_sre_tekton_access_revalidation/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/app_sre_tekton_access_revalidation/users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/automated_actions/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/automated_actions/instance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_account_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_account_manager/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_ami_cleanup/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_cloudwatch_log_retention/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_cloudwatch_log_retention/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_saml_idp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_saml_roles/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_saml_roles/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_version_sync/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_version_sync/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/aws_version_sync/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/change_owners/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/change_owners/queries/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/change_owners/queries/change_types.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/change_owners/queries/self_service_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cluster_auth_rhidp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/alerting_services_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_code_component_repos.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_interface_custom_messages.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_interface_dms_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_interface_repo_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_interface_state_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_interface_vault_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/aws_vpc_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/aws_vpcs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/clusters_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/clusters_with_dms.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/clusters_with_peering.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/github_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/jira_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/jiralert_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/ldap_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/namespaces_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/ocm_env_telemeter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/ocm_environments.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/pagerduty_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/pgp_reencryption_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/pipeline_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/quay_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/quay_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/reserved_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/rhcs_provider_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/saas_files.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/saas_target_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/saasherder_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/slack_workspaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/smtp_client_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/state_aws_account.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/common/users_with_paths.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cost_report/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cost_report/app_names.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cost_report/cost_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/cost_report/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/dashdotdb_slo/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/dynatrace_token_provider/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/email_sender/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/email_sender/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/email_sender/emails.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/email_sender/users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/endpoints_discovery/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/endpoints_discovery/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/external_resources_modules.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/external_resources_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/external_resources_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/fragments/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fleet_labeler/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fleet_labeler/fleet_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aus_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_account_common.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_account_managed.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_account_sso.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_infra_management_account.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_vpc.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_vpc_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/aws_vpc_request_subnet.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/container_image_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/deploy_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/disable.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/email_service.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/email_user.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/jumphost_common_fields.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/membership_source.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/minimal_ocm_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/oc_connection_cluster.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/ocm_environment.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/pipeline_provider_retention.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/prometheus_instance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/resource_limits_requirements.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/resource_requests_requirements.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/resource_values.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/saas_slo_document.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/saas_target_namespace.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/serviceaccount_token.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/terraform_state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/upgrade_policy.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/user.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/fragments/vault_secret.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gcp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gcp/gcp_docker_repos.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gcp/gcp_projects.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gitlab_members/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gitlab_members/gitlab_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/gitlab_members/permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/glitchtip/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/glitchtip/glitchtip_instance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/glitchtip/glitchtip_project.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/glitchtip_project_alerts/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/integrations/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/integrations/integrations.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/introspection.json +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jenkins_configs/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jira/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jira/jira_servers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jira_permissions_validator/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jumphosts/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/jumphosts/jumphosts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ldap_groups/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ldap_groups/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ldap_groups/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/maintenance/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/maintenance/maintenances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/membershipsources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/membershipsources/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ocm_labels/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ocm_labels/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ocm_labels/organizations.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ocm_oidc_idp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/ocm_subscription_labels/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_cluster_bots/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_cluster_bots/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_groups/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_groups/managed_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_groups/managed_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_serviceaccount_tokens/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/quay_membership/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/quay_membership/quay_membership.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/rhcs/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/rhcs/certs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/rhidp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/rhidp/organizations.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/service_dependencies/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/service_dependencies/service_dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/sharding/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/sharding/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/sharding/ocm_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/skupper_network/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/skupper_network/site_controller_template.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/skupper_network/skupper_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slack_usergroups/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slack_usergroups/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slack_usergroups/permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slack_usergroups/users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slo_documents/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/slo_documents/slo_documents.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/status_board/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/status_board/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/statuspage/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/statuspage/statuspages.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/templating/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/templating/template_collection.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/templating/templates.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_dns/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_users/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_init/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_init/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_repo/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_repo/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_resources/database_access_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_tgw_attachments/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/unleash_feature_toggles/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vault_instances/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vault_instances/vault_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vault_policies/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vault_policies/vault_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vpc_peerings_validator/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/integrations_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins/types.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_job_builder.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_job_builds_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_job_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_webhooks.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_webhooks_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jenkins_worker_fleets.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jira_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/jira_watcher.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ldap_groups/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ldap_groups/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ldap_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/mr_client_gateway.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm/types.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_additional_routers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_addons.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_addons_upgrade_tests_trigger.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_aws_infrastructure_access.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_external_configuration_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_github_idp.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_internal_notifications/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_internal_notifications/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_labels/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_labels/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_machine_pools.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_update_recommended_version.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/ocm_upgrade_scheduler_org_updater.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_cluster_bots.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_clusterrolebindings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_limitranges.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_namespace_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_network_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_prometheus_rules.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_resourcequotas.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_resources_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_rhcs_certs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_rolebindings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_routes.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_change_tester.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_configs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_images.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_moving_commits.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_saas_deploy_trigger_upstream_jobs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_serviceaccount_tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_tekton_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_upgrade_watcher.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/openshift_vault_secrets.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/labelset.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/providers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/oum/standalone.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/prometheus_rules_tester/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/prometheus_rules_tester/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_membership.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_mirror_org.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/quay_repos.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/queries.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/query_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/requests_sender.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/resource_scraper.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/resource_template_tester.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/common.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/ocm_oidc_idp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/ocm_oidc_idp/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/ocm_oidc_idp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/ocm_oidc_idp/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/sso_client/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/sso_client/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/sso_client/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/rhidp/sso_client/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/run_integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/batcher.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/desired_state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request_manager_v2.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/mr_parser.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/open_merge_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/publisher.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/s3_exporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/subscriber.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/utils/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_auto_promotions_manager/utils/saas_files_inventory.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/saas_file_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/sendgrid_teammates.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/service_dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/signalfx_endpoint_monitoring.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/skupper_network/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/skupper_network/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/skupper_network/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/skupper_network/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/skupper_network/site_controller.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/slack_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/slack_usergroups.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/sql_query.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/status.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/atlassian.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/integrations/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/integrations/components.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/integrations/maintenances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/page.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/statuspage/status.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/aws_access_key_email.j2 +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/email.yml.j2 +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/jira-checkpoint-missinginfo.j2 +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/rosa-classic-cluster-creation.sh.j2 +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templates/rosa-hcp-cluster-creation.sh.j2 +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/lib/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/lib/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/lib/model.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/lib/rendering.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/renderer.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/templating/validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_aws_route53.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_cloudflare_dns.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_cloudflare_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_init/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_init/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_init/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_init/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_tgw_attachments.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_vpc_peerings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_vpc_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_vpc_resources/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_vpc_resources/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/terraform_vpc_resources/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/alerting_services_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_custom_messages.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_deadmanssnitch_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_metrics_exporter/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_metrics_exporter/onboarding_status.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_metrics_exporter/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_repo_url.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_state_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_interface_vault_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/app_quay_repos_escalation_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/aws_cloudwatch_log_retention/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/aws_vpc_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/aws_vpcs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/cloudflare.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/clusters_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/clusters_with_dms.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/clusters_with_peering.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/cost_report/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/cost_report/app_names.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/cost_report/cost_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/cost_report/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/dynatrace.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/dynatrace_environments.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/dynatrace_token_provider_token_specs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/external_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/fleet_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/get_state_aws_account.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/github_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/gitlab_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/glitchtip.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/jenkins.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/jira.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/jira_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/jiralert_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/ldap_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/namespaces_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/pagerduty_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/quay.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/repos.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/reserved_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/rhcs_provider_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/saas_files.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/slack.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/slo_documents.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/smtp.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/tekton_pipeline_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/terraform_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/terraform_tgw_attachments/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/terraform_tgw_attachments/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/unleash.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/users.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/users_with_paths.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/typed_queries/vault.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/unleash_feature_toggles/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/unleash_feature_toggles/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/acs/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/acs/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/acs/policies.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/acs/rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aggregated_list.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/amtool.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/account.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/dynamodb.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/iam.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/organization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/s3.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/service_quotas.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/sts.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_api_typed/support.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/aws_helper.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/batches.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/binary.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/cloud_resource_best_practice/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/cloud_resource_best_practice/aws_rds.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/clusterhealth/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/clusterhealth/providerbase.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/clusterhealth/telemeter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/config.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/constants.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/deadmanssnitch_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/defer.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/differ.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/disabled_integrations.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/dnsutils.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/dynatrace/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/dynatrace/client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/early_exit_cache.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/elasticsearch_exceptions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/environ.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/exceptions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/expiration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/extended_early_exit.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/external_resource_spec.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/external_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/filtering.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/git.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/github_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/gitlab_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/glitchtip/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/glitchtip/client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/glitchtip/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/gpg.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/gql.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/grouping.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/helm.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/helpers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/imap_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/instrumented_wrappers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/internal_groups/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/internal_groups/client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/internal_groups/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jenkins_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jinja2/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jinja2/extensions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jinja2/filters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jinja2/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jira_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jjb_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jobcontroller/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jobcontroller/controller.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jobcontroller/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jsonpath.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/jump_host.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/keycloak.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ldap_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/lean_terraform_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/make.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/membershipsources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/membershipsources/app_interface_resolver.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/membershipsources/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/membershipsources/resolver.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/merge_request_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/merge_request_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/merge_request_manager/parser.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/README.md +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/app_interface_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/app_sre_tekton_access_report.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/aws_access.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/clusters_updates.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/glitchtip_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/notificator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/ocm_update_recommended_version.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/promote_qontract.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/update_access_report_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/mr/user_maintenance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/oauth2_backend_application_session.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/oc.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/oc_connection_parameters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/oc_filters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/oc_map.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/addons.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/cluster_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/identity_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/label_sources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/manifests.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/products.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/search_filters.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/service_log.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/sre_capability_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/subscriptions.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/syncsets.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm/upgrades.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ocm_base_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/openshift_resource.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/openssl.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/output.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/pagerduty_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/parse_dhms_duration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/password_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/prometheus.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/promotion_state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/promtool.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/quay_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/quay_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/raw_github_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/repo_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/rest_api_base.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/rhcsv2_certs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/rosa/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/rosa/rosa_cli.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/rosa/session.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/ruamel.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/desired_state_diff.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/environment.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/runner.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/runtime/sharding.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/saasherder/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/saasherder/interfaces.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/saasherder/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/saasherder/saasherder.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/secret_reader.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/semver_helper.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/sharding.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/slack_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/slo_document_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/smtp_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/sqs_gateway.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/structs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/template.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terraform/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terraform/config.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terraform/config_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terraform_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript/cloudflare_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript/cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript/models.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript/resources.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/terrascript_aws_client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/three_way_diff_strategy.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/throughput.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/unleash/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/unleash/client.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/unleash/server.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/vault.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/vaultsecretref.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/utils/vcs.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/vault_replication.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/reconcile/vpc_peerings_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/alert_report.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/app_interface_metrics_exporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/app_interface_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/app_sre_tekton_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/app_sre_tekton_access_revalidation.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/container_images_report.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/aws.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/cost_management_api.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/model.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/openshift.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/openshift_cost_optimization.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/response.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/util.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/cost_report/view.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/erv2.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/gpg_encrypt.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/cli_commands/systems_and_tools.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/glitchtip_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/glitchtip_access_revalidation.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/qontract_cli.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/commit_distance/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/commit_distance/channel.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/commit_distance/commit_distance.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/commit_distance/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_metrics_exporter/main.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_promotion_state/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/saas_promotion_state/saas_promotion_state.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/sre_checkpoints/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/sre_checkpoints/util.py +0 -0
- {qontract_reconcile-0.10.2.dev226 → qontract_reconcile-0.10.2.dev228}/tools/template_validation.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qontract-reconcile
|
3
|
-
Version: 0.10.2.
|
3
|
+
Version: 0.10.2.dev228
|
4
4
|
Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
|
5
5
|
Project-URL: homepage, https://github.com/app-sre/qontract-reconcile
|
6
6
|
Project-URL: repository, https://github.com/app-sre/qontract-reconcile
|
@@ -38,7 +38,7 @@ from reconcile.utils.saasherder import (
|
|
38
38
|
TriggerSpecUnion,
|
39
39
|
)
|
40
40
|
from reconcile.utils.saasherder.interfaces import SaasPipelinesProviderTekton
|
41
|
-
from reconcile.utils.saasherder.models import TriggerTypes
|
41
|
+
from reconcile.utils.saasherder.models import TriggerSpecConfig, TriggerTypes
|
42
42
|
from reconcile.utils.secret_reader import create_secret_reader
|
43
43
|
from reconcile.utils.sharding import is_in_shard
|
44
44
|
from reconcile.utils.state import init_state
|
@@ -267,6 +267,10 @@ def _trigger_tekton(
|
|
267
267
|
)
|
268
268
|
return False
|
269
269
|
|
270
|
+
target_ref = None
|
271
|
+
if isinstance(spec, TriggerSpecConfig):
|
272
|
+
target_ref = spec.target_ref
|
273
|
+
|
270
274
|
tkn_trigger_resource, tkn_name = _construct_tekton_trigger_resource(
|
271
275
|
spec.saas_file_name,
|
272
276
|
spec.env_name,
|
@@ -278,6 +282,7 @@ def _trigger_tekton(
|
|
278
282
|
integration_version,
|
279
283
|
saasherder.include_trigger_trace,
|
280
284
|
spec.reason,
|
285
|
+
target_ref,
|
281
286
|
)
|
282
287
|
|
283
288
|
error = False
|
@@ -334,6 +339,7 @@ def _construct_tekton_trigger_resource(
|
|
334
339
|
integration_version: str,
|
335
340
|
include_trigger_trace: bool,
|
336
341
|
reason: str | None,
|
342
|
+
target_ref: str | None,
|
337
343
|
) -> tuple[OR, str]:
|
338
344
|
"""Construct a resource (PipelineRun) to trigger a deployment via Tekton.
|
339
345
|
|
@@ -348,6 +354,7 @@ def _construct_tekton_trigger_resource(
|
|
348
354
|
integration_version (string): Version of calling integration
|
349
355
|
include_trigger_trace (bool): Should include traces of the triggering integration and reason
|
350
356
|
reason (string): The reason this trigger was created
|
357
|
+
target_ref (string): the SHA ref of the target
|
351
358
|
|
352
359
|
Returns:
|
353
360
|
OpenshiftResource: OpenShift resource to be applied
|
@@ -385,6 +392,7 @@ def _construct_tekton_trigger_resource(
|
|
385
392
|
"labels": {
|
386
393
|
"qontract.saas_file_name": saas_file_name,
|
387
394
|
"qontract.env_name": env_name,
|
395
|
+
"qontract.target_ref": target_ref or "",
|
388
396
|
},
|
389
397
|
},
|
390
398
|
"spec": {
|
@@ -0,0 +1,473 @@
|
|
1
|
+
import logging
|
2
|
+
from abc import (
|
3
|
+
ABC,
|
4
|
+
abstractmethod,
|
5
|
+
)
|
6
|
+
from collections.abc import Iterable, Mapping
|
7
|
+
from enum import Enum
|
8
|
+
from typing import (
|
9
|
+
Optional,
|
10
|
+
)
|
11
|
+
|
12
|
+
from pydantic import BaseModel
|
13
|
+
|
14
|
+
from reconcile.gql_definitions.slo_documents.slo_documents import SLODocumentV1
|
15
|
+
from reconcile.gql_definitions.status_board.status_board import StatusBoardV1
|
16
|
+
from reconcile.typed_queries.slo_documents import get_slo_documents
|
17
|
+
from reconcile.typed_queries.status_board import (
|
18
|
+
get_selected_app_names,
|
19
|
+
get_status_board,
|
20
|
+
)
|
21
|
+
from reconcile.utils.differ import diff_mappings
|
22
|
+
from reconcile.utils.ocm.status_board import (
|
23
|
+
ApplicationOCMSpec,
|
24
|
+
BaseOCMSpec,
|
25
|
+
ServiceMetadataSpec,
|
26
|
+
ServiceOCMSpec,
|
27
|
+
create_application,
|
28
|
+
create_product,
|
29
|
+
create_service,
|
30
|
+
delete_application,
|
31
|
+
delete_product,
|
32
|
+
delete_service,
|
33
|
+
get_application_services,
|
34
|
+
get_managed_products,
|
35
|
+
get_product_applications,
|
36
|
+
update_service,
|
37
|
+
)
|
38
|
+
from reconcile.utils.ocm_base_client import (
|
39
|
+
OCMBaseClient,
|
40
|
+
init_ocm_base_client,
|
41
|
+
)
|
42
|
+
from reconcile.utils.runtime.integration import QontractReconcileIntegration
|
43
|
+
|
44
|
+
QONTRACT_INTEGRATION = "status-board-exporter"
|
45
|
+
|
46
|
+
|
47
|
+
class Action(Enum):
|
48
|
+
create = "create"
|
49
|
+
update = "update"
|
50
|
+
delete = "delete"
|
51
|
+
|
52
|
+
|
53
|
+
class AbstractStatusBoard(ABC, BaseModel):
|
54
|
+
"""Abstract class for upgrade policies
|
55
|
+
Used to create and delete upgrade policies in OCM."""
|
56
|
+
|
57
|
+
id: str | None
|
58
|
+
name: str
|
59
|
+
fullname: str
|
60
|
+
|
61
|
+
@abstractmethod
|
62
|
+
def create(self, ocm: OCMBaseClient) -> None:
|
63
|
+
pass
|
64
|
+
|
65
|
+
@abstractmethod
|
66
|
+
def update(self, ocm: OCMBaseClient) -> None:
|
67
|
+
pass
|
68
|
+
|
69
|
+
@abstractmethod
|
70
|
+
def delete(self, ocm: OCMBaseClient) -> None:
|
71
|
+
pass
|
72
|
+
|
73
|
+
@abstractmethod
|
74
|
+
def summarize(self) -> str:
|
75
|
+
pass
|
76
|
+
|
77
|
+
@staticmethod
|
78
|
+
@abstractmethod
|
79
|
+
def get_priority() -> int:
|
80
|
+
pass
|
81
|
+
|
82
|
+
@abstractmethod
|
83
|
+
def to_ocm_spec(self) -> BaseOCMSpec:
|
84
|
+
pass
|
85
|
+
|
86
|
+
def __eq__(self, other: object) -> bool:
|
87
|
+
if not isinstance(other, AbstractStatusBoard):
|
88
|
+
return NotImplemented
|
89
|
+
return self.name == other.name and self.fullname == other.fullname
|
90
|
+
|
91
|
+
|
92
|
+
class Product(AbstractStatusBoard):
|
93
|
+
applications: list["Application"] | None
|
94
|
+
|
95
|
+
def create(self, ocm: OCMBaseClient) -> None:
|
96
|
+
spec = self.to_ocm_spec()
|
97
|
+
self.id = create_product(ocm, spec)
|
98
|
+
|
99
|
+
def update(self, ocm: OCMBaseClient) -> None:
|
100
|
+
err_msg = "Called update on StatusBoardHandler that doesn't have update method"
|
101
|
+
logging.error(err_msg)
|
102
|
+
raise UpdateNotSupported(err_msg)
|
103
|
+
|
104
|
+
def delete(self, ocm: OCMBaseClient) -> None:
|
105
|
+
if not self.id:
|
106
|
+
logging.error(f'Trying to delete Product "{self.name}" without id')
|
107
|
+
return
|
108
|
+
delete_product(ocm, self.id)
|
109
|
+
|
110
|
+
def summarize(self) -> str:
|
111
|
+
return f'Product: "{self.name}"'
|
112
|
+
|
113
|
+
def to_ocm_spec(self) -> BaseOCMSpec:
|
114
|
+
return {
|
115
|
+
"name": self.name,
|
116
|
+
"fullname": self.fullname,
|
117
|
+
}
|
118
|
+
|
119
|
+
@staticmethod
|
120
|
+
def get_priority() -> int:
|
121
|
+
return 0
|
122
|
+
|
123
|
+
|
124
|
+
class Application(AbstractStatusBoard):
|
125
|
+
product: Optional["Product"]
|
126
|
+
services: list["Service"] | None
|
127
|
+
|
128
|
+
def create(self, ocm: OCMBaseClient) -> None:
|
129
|
+
if self.product and self.product.id:
|
130
|
+
spec = self.to_ocm_spec()
|
131
|
+
self.id = create_application(ocm, spec)
|
132
|
+
else:
|
133
|
+
logging.warning("Missing product id for application")
|
134
|
+
|
135
|
+
def update(self, ocm: OCMBaseClient) -> None:
|
136
|
+
err_msg = "Called update on StatusBoardHandler that doesn't have update method"
|
137
|
+
logging.error(err_msg)
|
138
|
+
raise UpdateNotSupported(err_msg)
|
139
|
+
|
140
|
+
def delete(self, ocm: OCMBaseClient) -> None:
|
141
|
+
if not self.id:
|
142
|
+
logging.error(f'Trying to delete Application "{self.name}" without id')
|
143
|
+
return
|
144
|
+
delete_application(ocm, self.id)
|
145
|
+
|
146
|
+
def summarize(self) -> str:
|
147
|
+
return f'Application: "{self.name}" "{self.fullname}"'
|
148
|
+
|
149
|
+
def to_ocm_spec(self) -> ApplicationOCMSpec:
|
150
|
+
product_id = self.product.id if self.product and self.product.id else ""
|
151
|
+
return {
|
152
|
+
"name": self.name,
|
153
|
+
"fullname": self.fullname,
|
154
|
+
"product_id": product_id,
|
155
|
+
}
|
156
|
+
|
157
|
+
@staticmethod
|
158
|
+
def get_priority() -> int:
|
159
|
+
return 1
|
160
|
+
|
161
|
+
|
162
|
+
class Service(AbstractStatusBoard):
|
163
|
+
# `application` here is used to create a flat map to easily compare state.
|
164
|
+
# This field is optional so we can create the Service object without the
|
165
|
+
# need to create an Application object first.
|
166
|
+
# This filed is needed when we are creating a Service on teh OCM API.
|
167
|
+
# This field is not used when we are mapping the services that belongs to an
|
168
|
+
# application in that case we use the `services` field in Application class.
|
169
|
+
application: Optional["Application"]
|
170
|
+
metadata: ServiceMetadataSpec
|
171
|
+
|
172
|
+
def create(self, ocm: OCMBaseClient) -> None:
|
173
|
+
spec = self.to_ocm_spec()
|
174
|
+
if self.application and self.application.id:
|
175
|
+
self.id = create_service(ocm, spec)
|
176
|
+
else:
|
177
|
+
logging.warning("Missing application id for service")
|
178
|
+
|
179
|
+
def delete(self, ocm: OCMBaseClient) -> None:
|
180
|
+
if not self.id:
|
181
|
+
logging.error(f'Trying to delete Service "{self.name}" without id')
|
182
|
+
return
|
183
|
+
delete_service(ocm, self.id)
|
184
|
+
|
185
|
+
def update(self, ocm: OCMBaseClient) -> None:
|
186
|
+
if not self.id:
|
187
|
+
logging.error(f'Trying to update Service "{self.name}" without id')
|
188
|
+
return
|
189
|
+
spec = self.to_ocm_spec()
|
190
|
+
if self.application and self.application.id:
|
191
|
+
update_service(ocm, self.id, spec)
|
192
|
+
else:
|
193
|
+
logging.warning("Missing application id for service")
|
194
|
+
|
195
|
+
def summarize(self) -> str:
|
196
|
+
return f'Service: "{self.name}" "{self.fullname}"'
|
197
|
+
|
198
|
+
def to_ocm_spec(self) -> ServiceOCMSpec:
|
199
|
+
application_id = (
|
200
|
+
self.application.id if self.application and self.application.id else ""
|
201
|
+
)
|
202
|
+
|
203
|
+
return {
|
204
|
+
"name": self.name,
|
205
|
+
"fullname": self.fullname,
|
206
|
+
"metadata": self.metadata,
|
207
|
+
"status_type": "traffic_light",
|
208
|
+
"service_endpoint": "none",
|
209
|
+
"application_id": application_id,
|
210
|
+
}
|
211
|
+
|
212
|
+
@staticmethod
|
213
|
+
def get_priority() -> int:
|
214
|
+
return 2
|
215
|
+
|
216
|
+
def __eq__(self, other: object) -> bool:
|
217
|
+
if not isinstance(other, Service):
|
218
|
+
return NotImplemented
|
219
|
+
return (
|
220
|
+
self.name == other.name
|
221
|
+
and self.fullname == other.fullname
|
222
|
+
and self.metadata == other.metadata
|
223
|
+
)
|
224
|
+
|
225
|
+
|
226
|
+
# Resolve forward references after class definitions
|
227
|
+
Product.update_forward_refs()
|
228
|
+
Application.update_forward_refs()
|
229
|
+
Service.update_forward_refs()
|
230
|
+
|
231
|
+
|
232
|
+
class UpdateNotSupported(Exception):
|
233
|
+
pass
|
234
|
+
|
235
|
+
|
236
|
+
class StatusBoardHandler(BaseModel):
|
237
|
+
action: Action
|
238
|
+
status_board_object: AbstractStatusBoard
|
239
|
+
|
240
|
+
def act(self, dry_run: bool, ocm: OCMBaseClient) -> None:
|
241
|
+
logging.info(f"{self.action} - {self.status_board_object.summarize()}")
|
242
|
+
|
243
|
+
if dry_run:
|
244
|
+
return
|
245
|
+
|
246
|
+
match self.action:
|
247
|
+
case Action.delete:
|
248
|
+
self.status_board_object.delete(ocm)
|
249
|
+
case Action.create:
|
250
|
+
self.status_board_object.create(ocm)
|
251
|
+
case Action.update:
|
252
|
+
self.status_board_object.update(ocm)
|
253
|
+
|
254
|
+
|
255
|
+
class StatusBoardExporterIntegration(QontractReconcileIntegration):
|
256
|
+
@property
|
257
|
+
def name(self) -> str:
|
258
|
+
return QONTRACT_INTEGRATION
|
259
|
+
|
260
|
+
@staticmethod
|
261
|
+
def get_product_apps(sb: StatusBoardV1) -> dict[str, set[str]]:
|
262
|
+
global_selectors = (
|
263
|
+
sb.global_app_selectors.exclude or [] if sb.global_app_selectors else []
|
264
|
+
)
|
265
|
+
return {
|
266
|
+
p.product_environment.product.name: get_selected_app_names(
|
267
|
+
global_selectors, p
|
268
|
+
)
|
269
|
+
for p in sb.products
|
270
|
+
}
|
271
|
+
|
272
|
+
@staticmethod
|
273
|
+
def get_current_products_applications_services(
|
274
|
+
ocm_api: OCMBaseClient,
|
275
|
+
) -> list[Product]:
|
276
|
+
products_raw = get_managed_products(ocm_api)
|
277
|
+
products = [Product(**p) for p in products_raw]
|
278
|
+
|
279
|
+
for p in products:
|
280
|
+
if not p.id:
|
281
|
+
logging.error(f'Product "{p.name}" has no id')
|
282
|
+
continue
|
283
|
+
p.applications = [
|
284
|
+
Application(**a) for a in get_product_applications(ocm_api, p.id)
|
285
|
+
]
|
286
|
+
for a in p.applications:
|
287
|
+
if not a.id:
|
288
|
+
logging.error(f'Application "{a.name}" has no id')
|
289
|
+
continue
|
290
|
+
a.services = [
|
291
|
+
Service(**s) for s in get_application_services(ocm_api, a.id)
|
292
|
+
]
|
293
|
+
|
294
|
+
return products
|
295
|
+
|
296
|
+
@staticmethod
|
297
|
+
def desired_abstract_status_board_map(
|
298
|
+
desired_product_apps: Mapping[str, set[str]], slodocs: list[SLODocumentV1]
|
299
|
+
) -> dict[str, AbstractStatusBoard]:
|
300
|
+
"""
|
301
|
+
Returns a Mapping of all the AbstractStatusBoard data objects as dictionaries.
|
302
|
+
The key is formed by combining the Product, Application and Service name
|
303
|
+
separeted by a '/' character. This is the same format as the fullname property
|
304
|
+
on Status Board OCM API.
|
305
|
+
"""
|
306
|
+
desired_abstract_status_board_map: dict[str, AbstractStatusBoard] = {}
|
307
|
+
for product, apps in desired_product_apps.items():
|
308
|
+
desired_abstract_status_board_map[product] = Product(
|
309
|
+
name=product, fullname=product, applications=[], metadata={}
|
310
|
+
)
|
311
|
+
for a in apps:
|
312
|
+
key = f"{product}/{a}"
|
313
|
+
desired_abstract_status_board_map[key] = Application(
|
314
|
+
name=a,
|
315
|
+
fullname=key,
|
316
|
+
services=[],
|
317
|
+
product=desired_abstract_status_board_map[product],
|
318
|
+
metadata={},
|
319
|
+
)
|
320
|
+
for slodoc in slodocs:
|
321
|
+
products = [
|
322
|
+
ns.namespace.environment.product.name for ns in slodoc.namespaces
|
323
|
+
]
|
324
|
+
for slo in slodoc.slos or []:
|
325
|
+
for product in products:
|
326
|
+
if slodoc.app.parent_app:
|
327
|
+
app = f"{slodoc.app.parent_app.name}-{slodoc.app.name}"
|
328
|
+
else:
|
329
|
+
app = slodoc.app.name
|
330
|
+
|
331
|
+
# Check if the product or app is excluded from the desired list
|
332
|
+
product_or_app_excluded = (
|
333
|
+
product not in desired_product_apps
|
334
|
+
or app not in desired_product_apps.get(product, set())
|
335
|
+
)
|
336
|
+
|
337
|
+
# Check if statusBoard label exists and is explicitly disabled
|
338
|
+
status_board_enabled = (
|
339
|
+
slodoc.labels is not None
|
340
|
+
and "statusBoard" in slodoc.labels
|
341
|
+
and slodoc.labels["statusBoard"] == "enabled"
|
342
|
+
)
|
343
|
+
|
344
|
+
if product_or_app_excluded or not status_board_enabled:
|
345
|
+
continue
|
346
|
+
|
347
|
+
key = f"{product}/{app}/{slo.name}"
|
348
|
+
metadata = {
|
349
|
+
"sli_type": slo.sli_type,
|
350
|
+
"sli_specification": slo.sli_specification,
|
351
|
+
"slo_details": slo.slo_details,
|
352
|
+
"target": slo.slo_target,
|
353
|
+
"target_unit": slo.slo_target_unit,
|
354
|
+
"window": slo.slo_parameters.window,
|
355
|
+
}
|
356
|
+
desired_abstract_status_board_map[key] = Service(
|
357
|
+
name=slo.name,
|
358
|
+
fullname=key,
|
359
|
+
metadata=metadata,
|
360
|
+
application=desired_abstract_status_board_map[
|
361
|
+
f"{product}/{app}"
|
362
|
+
],
|
363
|
+
)
|
364
|
+
|
365
|
+
return desired_abstract_status_board_map
|
366
|
+
|
367
|
+
@staticmethod
|
368
|
+
def current_abstract_status_board_map(
|
369
|
+
current_products_applications_services: Iterable[Product],
|
370
|
+
) -> dict[str, AbstractStatusBoard]:
|
371
|
+
return_value: dict[str, AbstractStatusBoard] = {}
|
372
|
+
for product in current_products_applications_services:
|
373
|
+
return_value[product.name] = product
|
374
|
+
for app in product.applications or []:
|
375
|
+
return_value[f"{product.name}/{app.name}"] = app
|
376
|
+
for service in app.services or []:
|
377
|
+
return_value[f"{product.name}/{app.name}/{service.name}"] = service
|
378
|
+
|
379
|
+
return return_value
|
380
|
+
|
381
|
+
@staticmethod
|
382
|
+
def get_diff(
|
383
|
+
desired_abstract_status_board_map: Mapping[str, AbstractStatusBoard],
|
384
|
+
current_abstract_status_board_map: Mapping[str, AbstractStatusBoard],
|
385
|
+
current_products: Mapping[str, Product],
|
386
|
+
) -> list[StatusBoardHandler]:
|
387
|
+
return_list: list[StatusBoardHandler] = []
|
388
|
+
|
389
|
+
diff_result = diff_mappings(
|
390
|
+
current_abstract_status_board_map,
|
391
|
+
desired_abstract_status_board_map,
|
392
|
+
)
|
393
|
+
|
394
|
+
return_list.extend(
|
395
|
+
StatusBoardHandler(action=Action.create, status_board_object=o)
|
396
|
+
for o in diff_result.add.values()
|
397
|
+
)
|
398
|
+
|
399
|
+
return_list.extend(
|
400
|
+
StatusBoardHandler(action=Action.delete, status_board_object=o)
|
401
|
+
for o in diff_result.delete.values()
|
402
|
+
)
|
403
|
+
|
404
|
+
services_to_update = [
|
405
|
+
s.desired
|
406
|
+
for _, s in diff_result.change.items()
|
407
|
+
if isinstance(s.desired, Service)
|
408
|
+
]
|
409
|
+
|
410
|
+
return_list.extend(
|
411
|
+
StatusBoardHandler(action=Action.update, status_board_object=s)
|
412
|
+
for s in services_to_update
|
413
|
+
)
|
414
|
+
|
415
|
+
return return_list
|
416
|
+
|
417
|
+
@staticmethod
|
418
|
+
def apply_diff(
|
419
|
+
dry_run: bool, ocm_api: OCMBaseClient, diff: list[StatusBoardHandler]
|
420
|
+
) -> None:
|
421
|
+
creations: list[StatusBoardHandler] = []
|
422
|
+
deletions: list[StatusBoardHandler] = []
|
423
|
+
updates: list[StatusBoardHandler] = []
|
424
|
+
|
425
|
+
for o in diff:
|
426
|
+
match o.action:
|
427
|
+
case Action.create:
|
428
|
+
creations.append(o)
|
429
|
+
case Action.delete:
|
430
|
+
deletions.append(o)
|
431
|
+
case Action.update:
|
432
|
+
updates.append(o)
|
433
|
+
|
434
|
+
# Products need to be created before Applications
|
435
|
+
# Applications need to be created before Services
|
436
|
+
creations.sort(key=lambda x: x.status_board_object.get_priority())
|
437
|
+
|
438
|
+
# Services need to be deleted before Applications
|
439
|
+
# Applications need to be deleted before Products
|
440
|
+
deletions.sort(key=lambda x: x.status_board_object.get_priority(), reverse=True)
|
441
|
+
|
442
|
+
for d in creations + deletions + updates:
|
443
|
+
d.act(dry_run, ocm_api)
|
444
|
+
|
445
|
+
def run(self, dry_run: bool) -> None:
|
446
|
+
slodocs = get_slo_documents()
|
447
|
+
for sb in get_status_board():
|
448
|
+
ocm_api = init_ocm_base_client(sb.ocm, self.secret_reader)
|
449
|
+
|
450
|
+
# Desired state
|
451
|
+
desired_product_apps: dict[str, set[str]] = self.get_product_apps(sb)
|
452
|
+
desired_abstract_status_board_map = self.desired_abstract_status_board_map(
|
453
|
+
desired_product_apps, slodocs
|
454
|
+
)
|
455
|
+
|
456
|
+
# Current state
|
457
|
+
current_products_applications_services = (
|
458
|
+
self.get_current_products_applications_services(ocm_api)
|
459
|
+
)
|
460
|
+
current_abstract_status_board_map = self.current_abstract_status_board_map(
|
461
|
+
current_products_applications_services
|
462
|
+
)
|
463
|
+
|
464
|
+
current_products = {
|
465
|
+
p.name: p for p in current_products_applications_services
|
466
|
+
}
|
467
|
+
diff = self.get_diff(
|
468
|
+
desired_abstract_status_board_map,
|
469
|
+
current_abstract_status_board_map,
|
470
|
+
current_products,
|
471
|
+
)
|
472
|
+
|
473
|
+
self.apply_diff(dry_run, ocm_api, diff)
|
@@ -0,0 +1,138 @@
|
|
1
|
+
from typing import Any, TypedDict
|
2
|
+
|
3
|
+
from reconcile.utils.ocm_base_client import OCMBaseClient
|
4
|
+
|
5
|
+
SERVICE_DESIRED_KEYS = {"id", "name", "fullname", "metadata"}
|
6
|
+
APPLICATION_DESIRED_KEYS = {"id", "name", "fullname", "metadata"}
|
7
|
+
PRODUCTS_DESIRED_KEYS = {"id", "name", "fullname", "metadata"}
|
8
|
+
|
9
|
+
|
10
|
+
METADATA_MANAGED_BY_KEY = "managedBy"
|
11
|
+
METADATA_MANAGED_BY_VALUE = "qontract-reconcile"
|
12
|
+
|
13
|
+
|
14
|
+
class BaseOCMSpec(TypedDict):
|
15
|
+
name: str
|
16
|
+
fullname: str
|
17
|
+
|
18
|
+
|
19
|
+
class ApplicationOCMSpec(BaseOCMSpec):
|
20
|
+
product_id: str
|
21
|
+
|
22
|
+
|
23
|
+
class ServiceMetadataSpec(TypedDict):
|
24
|
+
sli_type: str
|
25
|
+
sli_specification: str
|
26
|
+
slo_details: str
|
27
|
+
target: float
|
28
|
+
target_unit: str
|
29
|
+
window: str
|
30
|
+
|
31
|
+
|
32
|
+
class ServiceOCMSpec(BaseOCMSpec):
|
33
|
+
# The next two fields come from the orignal script at
|
34
|
+
# https://gitlab.cee.redhat.com/service/status-board/-/blob/main/scripts/create-services-from-app-intf.sh?ref_type=heads#L116
|
35
|
+
status_type: str
|
36
|
+
service_endpoint: str
|
37
|
+
application_id: str
|
38
|
+
metadata: ServiceMetadataSpec
|
39
|
+
|
40
|
+
|
41
|
+
def get_product_applications(
|
42
|
+
ocm_api: OCMBaseClient, product_id: str
|
43
|
+
) -> list[dict[str, Any]]:
|
44
|
+
results: list[dict[str, Any]] = []
|
45
|
+
|
46
|
+
for application in ocm_api.get_paginated(
|
47
|
+
f"/api/status-board/v1/products/{product_id}/applications"
|
48
|
+
):
|
49
|
+
if (
|
50
|
+
application.get("metadata", {}).get(METADATA_MANAGED_BY_KEY, "")
|
51
|
+
== METADATA_MANAGED_BY_VALUE
|
52
|
+
):
|
53
|
+
results.append({ # noqa: PERF401
|
54
|
+
k: v for k, v in application.items() if k in APPLICATION_DESIRED_KEYS
|
55
|
+
})
|
56
|
+
|
57
|
+
return results
|
58
|
+
|
59
|
+
|
60
|
+
def get_application_services(
|
61
|
+
ocm_api: OCMBaseClient, app_id: str
|
62
|
+
) -> list[dict[str, Any]]:
|
63
|
+
results: list[dict[str, Any]] = []
|
64
|
+
|
65
|
+
for service in ocm_api.get_paginated(
|
66
|
+
f"/api/status-board/v1/applications/{app_id}/services"
|
67
|
+
):
|
68
|
+
if (
|
69
|
+
service.get("metadata", {}).get(METADATA_MANAGED_BY_KEY, "")
|
70
|
+
== METADATA_MANAGED_BY_VALUE
|
71
|
+
):
|
72
|
+
results.append({ # noqa: PERF401
|
73
|
+
k: v for k, v in service.items() if k in SERVICE_DESIRED_KEYS
|
74
|
+
})
|
75
|
+
|
76
|
+
return results
|
77
|
+
|
78
|
+
|
79
|
+
def get_managed_products(ocm_api: OCMBaseClient) -> list[dict[str, Any]]:
|
80
|
+
results: list[dict[str, Any]] = []
|
81
|
+
for product in ocm_api.get_paginated("/api/status-board/v1/products/"):
|
82
|
+
if (
|
83
|
+
product.get("metadata", {}).get(METADATA_MANAGED_BY_KEY, "")
|
84
|
+
== METADATA_MANAGED_BY_VALUE
|
85
|
+
):
|
86
|
+
results.append({ # noqa: PERF401
|
87
|
+
k: v for k, v in product.items() if k in PRODUCTS_DESIRED_KEYS
|
88
|
+
})
|
89
|
+
return results
|
90
|
+
|
91
|
+
|
92
|
+
def create_product(ocm_api: OCMBaseClient, spec: BaseOCMSpec) -> str:
|
93
|
+
data = spec | {"metadata": {METADATA_MANAGED_BY_KEY: METADATA_MANAGED_BY_VALUE}}
|
94
|
+
|
95
|
+
resp = ocm_api.post("/api/status-board/v1/products/", data=data)
|
96
|
+
return resp["id"]
|
97
|
+
|
98
|
+
|
99
|
+
def create_application(ocm_api: OCMBaseClient, spec: ApplicationOCMSpec) -> str:
|
100
|
+
data = spec | {"metadata": {METADATA_MANAGED_BY_KEY: METADATA_MANAGED_BY_VALUE}}
|
101
|
+
|
102
|
+
resp = ocm_api.post("/api/status-board/v1/applications/", data=data)
|
103
|
+
return resp["id"]
|
104
|
+
|
105
|
+
|
106
|
+
def create_service(ocm_api: OCMBaseClient, spec: ServiceOCMSpec) -> str:
|
107
|
+
data = spec | {
|
108
|
+
"metadata": spec["metadata"]
|
109
|
+
| {METADATA_MANAGED_BY_KEY: METADATA_MANAGED_BY_VALUE}
|
110
|
+
}
|
111
|
+
|
112
|
+
resp = ocm_api.post("/api/status-board/v1/services/", data=data)
|
113
|
+
return resp["id"]
|
114
|
+
|
115
|
+
|
116
|
+
def update_service(
|
117
|
+
ocm_api: OCMBaseClient,
|
118
|
+
service_id: str,
|
119
|
+
spec: ServiceOCMSpec,
|
120
|
+
) -> None:
|
121
|
+
data = spec | {
|
122
|
+
"metadata": spec["metadata"]
|
123
|
+
| {METADATA_MANAGED_BY_KEY: METADATA_MANAGED_BY_VALUE}
|
124
|
+
}
|
125
|
+
|
126
|
+
ocm_api.patch(f"/api/status-board/v1/services/{service_id}", data=data)
|
127
|
+
|
128
|
+
|
129
|
+
def delete_product(ocm_api: OCMBaseClient, product_id: str) -> None:
|
130
|
+
ocm_api.delete(f"/api/status-board/v1/products/{product_id}")
|
131
|
+
|
132
|
+
|
133
|
+
def delete_application(ocm_api: OCMBaseClient, application_id: str) -> None:
|
134
|
+
ocm_api.delete(f"/api/status-board/v1/applications/{application_id}")
|
135
|
+
|
136
|
+
|
137
|
+
def delete_service(ocm_api: OCMBaseClient, service_id: str) -> None:
|
138
|
+
ocm_api.delete(f"/api/status-board/v1/services/{service_id}")
|