qontract-reconcile 0.10.2.dev74__tar.gz → 0.10.2.dev76__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.dev74 → qontract_reconcile-0.10.2.dev76}/PKG-INFO +1 -1
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/integration.py +2 -2
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cli.py +13 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/dependencies.py +79 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/integration.py +190 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/merge_request.py +48 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/meta.py +4 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/metrics.py +23 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/ocm.py +83 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/validate.py +83 -0
- qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler/vcs.py +21 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fleet_labeler/fleet_labels.py +14 -10
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/introspection.json +28 -56
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/fleet_labels.py +4 -4
- qontract_reconcile-0.10.2.dev76/tools/saas_promotion_state/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/README.md +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/pyproject.toml +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/acs_notifiers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/acs_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/acs_rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/advanced_upgrade_service.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/aus_label_source.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/cluster_version_data.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/healthchecks.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/node_pool_spec.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/ocm_addons_upgrade_scheduler_org.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/ocm_upgrade_scheduler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/ocm_upgrade_scheduler_org.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/upgrades.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gate_approver.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gates/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gates/handler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gates/ingress_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gates/ocp_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aus/version_gates/sts_version_gate_handler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/README.md +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_account_manager/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_ami_cleanup/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_ami_cleanup/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_ami_share.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_cloudwatch_log_retention/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_cloudwatch_log_retention/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_ecr_image_pull_secrets.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_garbage_collector.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_iam_keys.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_iam_password_reset.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_saml_idp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_saml_idp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_saml_roles/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_saml_roles/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_support_cases_sos.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/merge_request_manager/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/merge_request_manager/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/merge_request_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/aws_version_sync/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/blackbox_exporter_endpoint_monitoring.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/README.md +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/approver.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/bundle.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/change_log_tracking.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/change_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/change_types.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/changes.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/decision.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/diff.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/implicit_ownership.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/self_service_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/change_owners/tester.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/checkpoint.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/closedbox_endpoint_monitoring_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cluster_auth_rhidp/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cluster_auth_rhidp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cluster_deployment_mapper.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/assets/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/assets/asset.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/assets/asset_factory.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/assets/null.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/cna/state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dashdotdb_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dashdotdb_cso.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dashdotdb_dora.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dashdotdb_dvo.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dashdotdb_slo.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/database_access_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/deadmanssnitch.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/model.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/dynatrace_token_provider/validate.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/email_sender.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/endpoints_discovery/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/endpoints_discovery/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/endpoints_discovery/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/endpoints_discovery/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/aws.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/factories.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/integration_secrets_sync.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/model.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/secrets_sync.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/external_resources/state.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/glitchtip → qontract_reconcile-0.10.2.dev76/reconcile/fleet_labeler}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gabi_authorized_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gcr_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_org.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_repo_invites.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_repo_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/github_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_fork_compliance.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_housekeeping.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_labeler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_members.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_mr_sqs_consumer.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gitlab_projects.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/glitchtip/README.md +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/glitchtip_project_alerts → qontract_reconcile-0.10.2.dev76/reconcile/glitchtip}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/glitchtip/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/glitchtip/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/glitchtip_project_dsn → qontract_reconcile-0.10.2.dev76/reconcile/glitchtip_project_alerts}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/glitchtip_project_alerts/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions → qontract_reconcile-0.10.2.dev76/reconcile/glitchtip_project_dsn}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/glitchtip_project_dsn/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/acs → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/advanced_upgrade_service → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/acs}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/acs/acs_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/acs/acs_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/acs/acs_rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/app_interface_metrics_exporter → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/advanced_upgrade_service}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/app_sre_tekton_access_revalidation → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/app_interface_metrics_exporter}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/aws_account_manager → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/app_sre_tekton_access_revalidation}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/app_sre_tekton_access_revalidation/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/app_sre_tekton_access_revalidation/users.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/aws_ami_cleanup → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/aws_account_manager}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_account_manager/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/aws_saml_idp → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/aws_ami_cleanup}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/aws_saml_roles → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/aws_saml_idp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/aws_version_sync → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/aws_saml_roles}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_saml_roles/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/change_owners → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/aws_version_sync}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_version_sync/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/aws_version_sync/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/change_owners/queries → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/change_owners}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/cluster_auth_rhidp → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/change_owners/queries}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/change_owners/queries/change_types.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/change_owners/queries/self_service_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/cna → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/cluster_auth_rhidp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/cna/queries → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/cna}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/common → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/cna/queries}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cna/queries/cna_provisioners.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cna/queries/cna_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/cost_report → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/common}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/alerting_services_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_code_component_repos.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_interface_custom_messages.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_interface_dms_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_interface_repo_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_interface_state_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_interface_vault_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/aws_vpc_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/aws_vpcs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/clusters_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/clusters_with_dms.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/clusters_with_peering.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/github_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/jira_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/jiralert_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/namespaces_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/ocm_env_telemeter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/ocm_environments.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/pagerduty_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/pgp_reencryption_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/pipeline_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/quay_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/quay_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/reserved_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/saas_files.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/saas_target_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/saasherder_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/slack_workspaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/smtp_client_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/state_aws_account.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/common/users.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/dashdotdb_slo → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/cost_report}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cost_report/app_names.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cost_report/cost_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/cost_report/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/dynatrace_token_provider → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/dashdotdb_slo}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/endpoints_discovery → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/dynatrace_token_provider}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/external_resources → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/endpoints_discovery}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/endpoints_discovery/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/external_resources/fragments → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/external_resources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/external_resources/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/external_resources/external_resources_modules.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/external_resources/external_resources_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/external_resources/external_resources_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/fleet_labeler → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/external_resources/fragments}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/fragments → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/fleet_labeler}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/gitlab_members → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/fragments}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aus_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_account_common.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_account_managed.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_account_sso.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_infra_management_account.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_vpc.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_vpc_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/aws_vpc_request_subnet.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/deplopy_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/disable.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/jumphost_common_fields.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/membership_source.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/minimal_ocm_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/oc_connection_cluster.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/ocm_environment.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/pipeline_provider_retention.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/prometheus_instance.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/resource_limits_requirements.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/resource_requests_requirements.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/resource_values.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/saas_target_namespace.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/serviceaccount_token.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/terraform_state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/upgrade_policy.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/user.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/fragments/vault_secret.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/glitchtip → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/gitlab_members}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/gitlab_members/gitlab_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/gitlab_members/permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/glitchtip_project_alerts → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/glitchtip}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/glitchtip/glitchtip_instance.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/glitchtip/glitchtip_project.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/integrations → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/glitchtip_project_alerts}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/jenkins_configs → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/integrations}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/integrations/integrations.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/jira → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/jenkins_configs}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/jira_permissions_validator → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/jira}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/jira/jira_servers.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/jumphosts → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/jira_permissions_validator}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/ldap_groups → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/jumphosts}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/jumphosts/jumphosts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/maintenance → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/ldap_groups}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/ldap_groups/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/ldap_groups/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/membershipsources → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/maintenance}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/maintenance/maintenances.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/ocm_labels → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/membershipsources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/membershipsources/roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/ocm_oidc_idp → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/ocm_labels}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/ocm_labels/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/ocm_labels/organizations.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/ocm_subscription_labels → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/ocm_oidc_idp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/openshift_cluster_bots → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/ocm_subscription_labels}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/openshift_groups → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/openshift_cluster_bots}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/openshift_cluster_bots/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/openshift_serviceaccount_tokens → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/openshift_groups}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/openshift_groups/managed_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/openshift_groups/managed_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/quay_membership → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/openshift_serviceaccount_tokens}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/rhidp → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/quay_membership}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/quay_membership/quay_membership.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/service_dependencies → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/rhidp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/rhidp/organizations.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/sharding → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/service_dependencies}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/service_dependencies/service_dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/skupper_network → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/sharding}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/sharding/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/sharding/ocm_organization.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/slack_usergroups → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/skupper_network}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/skupper_network/site_controller_template.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/skupper_network/skupper_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/slo_documents → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/slack_usergroups}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/slack_usergroups/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/slack_usergroups/permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/slack_usergroups/users.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/status_board → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/slo_documents}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/slo_documents/slo_documents.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/statuspage → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/status_board}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/status_board/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/templating → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/statuspage}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/statuspage/statuspages.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_cloudflare_dns → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/templating}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/templating/template_collection.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/templating/templates.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_cloudflare_resources → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_cloudflare_dns}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_cloudflare_users → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_cloudflare_resources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_init → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_cloudflare_users}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_repo → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_init}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_init/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_resources → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_repo}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_repo/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/terraform_tgw_attachments → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_resources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_resources/database_access_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/unleash_feature_toggles → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/terraform_tgw_attachments}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/vault_instances → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/unleash_feature_toggles}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/vault_policies → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/vault_instances}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/vault_instances/vault_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/gql_definitions/vpc_peerings_validator → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/vault_policies}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/vault_policies/vault_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/jenkins → qontract_reconcile-0.10.2.dev76/reconcile/gql_definitions/vpc_peerings_validator}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/integrations_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/ldap_groups → qontract_reconcile-0.10.2.dev76/reconcile/jenkins}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins/types.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_job_builder.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_job_builds_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_job_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_roles.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_webhooks.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_webhooks_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jenkins_worker_fleets.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jira_permissions_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/jira_watcher.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/ocm → qontract_reconcile-0.10.2.dev76/reconcile/ldap_groups}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ldap_groups/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ldap_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/mr_client_gateway.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/ocm_internal_notifications → qontract_reconcile-0.10.2.dev76/reconcile/ocm}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm/types.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_additional_routers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_addons.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_addons_upgrade_tests_trigger.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_aws_infrastructure_access.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_external_configuration_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_github_idp.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/ocm_labels → qontract_reconcile-0.10.2.dev76/reconcile/ocm_internal_notifications}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_internal_notifications/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/oum → qontract_reconcile-0.10.2.dev76/reconcile/ocm_labels}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_labels/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_machine_pools.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_update_recommended_version.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/ocm_upgrade_scheduler_org_updater.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_cluster_bots.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_clusterrolebindings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_limitranges.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_namespace_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_network_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_prometheus_rules.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_resourcequotas.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_resources_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_rolebindings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_routes.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_change_tester.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_cleaner.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_configs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_images.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_moving_commits.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_saas_deploy_trigger_upstream_jobs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_serviceaccount_tokens.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_tekton_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_upgrade_watcher.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/openshift_vault_secrets.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/prometheus_rules_tester → qontract_reconcile-0.10.2.dev76/reconcile/oum}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/labelset.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/providers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/oum/standalone.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/rhidp → qontract_reconcile-0.10.2.dev76/reconcile/prometheus_rules_tester}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/prometheus_rules_tester/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_membership.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_mirror.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_mirror_org.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_permissions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/quay_repos.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/queries.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/query_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/requests_sender.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/resource_scraper.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/resource_template_tester.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/rhidp/ocm_oidc_idp → qontract_reconcile-0.10.2.dev76/reconcile/rhidp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/common.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/rhidp/sso_client → qontract_reconcile-0.10.2.dev76/reconcile/rhidp/ocm_oidc_idp}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/ocm_oidc_idp/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/ocm_oidc_idp/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/ocm_oidc_idp/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/saas_auto_promotions_manager → qontract_reconcile-0.10.2.dev76/reconcile/rhidp/sso_client}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/sso_client/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/sso_client/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/rhidp/sso_client/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/run_integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/saas_auto_promotions_manager/merge_request_manager → qontract_reconcile-0.10.2.dev76/reconcile/saas_auto_promotions_manager}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/saas_auto_promotions_manager/utils → qontract_reconcile-0.10.2.dev76/reconcile/saas_auto_promotions_manager/merge_request_manager}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/batcher.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/desired_state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/merge_request_manager_v2.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/mr_parser.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/open_merge_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/publisher.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/s3_exporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/subscriber.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/skupper_network → qontract_reconcile-0.10.2.dev76/reconcile/saas_auto_promotions_manager/utils}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_auto_promotions_manager/utils/saas_files_inventory.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/saas_file_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/sendgrid_teammates.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/service_dependencies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/signalfx_endpoint_monitoring.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/statuspage → qontract_reconcile-0.10.2.dev76/reconcile/skupper_network}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/skupper_network/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/skupper_network/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/skupper_network/reconciler.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/skupper_network/site_controller.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/slack_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/slack_usergroups.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/sql_query.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/status.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/statuspage/integrations → qontract_reconcile-0.10.2.dev76/reconcile/statuspage}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/atlassian.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/templates → qontract_reconcile-0.10.2.dev76/reconcile/statuspage/integrations}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/integrations/components.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/integrations/maintenances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/page.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/statuspage/status.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/templating → qontract_reconcile-0.10.2.dev76/reconcile/templates}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templates/aws_access_key_email.j2 +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templates/email.yml.j2 +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templates/jira-checkpoint-missinginfo.j2 +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templates/rosa-classic-cluster-creation.sh.j2 +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templates/rosa-hcp-cluster-creation.sh.j2 +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/templating/lib → qontract_reconcile-0.10.2.dev76/reconcile/templating}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/terraform_init → qontract_reconcile-0.10.2.dev76/reconcile/templating/lib}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templating/lib/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templating/lib/model.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templating/lib/rendering.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templating/renderer.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/templating/validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_aws_route53.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_cloudflare_dns.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_cloudflare_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/terraform_vpc_resources → qontract_reconcile-0.10.2.dev76/reconcile/terraform_init}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_init/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_init/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_init/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_tgw_attachments.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_vpc_peerings.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/typed_queries/app_interface_metrics_exporter → qontract_reconcile-0.10.2.dev76/reconcile/terraform_vpc_resources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_vpc_resources/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_vpc_resources/merge_request.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/terraform_vpc_resources/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/alerting_services_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_custom_messages.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_deadmanssnitch_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/typed_queries/cost_report → qontract_reconcile-0.10.2.dev76/reconcile/typed_queries/app_interface_metrics_exporter}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_metrics_exporter/onboarding_status.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_metrics_exporter/terraform_repo.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_repo_url.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_state_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_interface_vault_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/app_quay_repos_escalation_policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/apps.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/aws_vpc_requests.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/aws_vpcs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/cloudflare.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/clusters_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/clusters_with_dms.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/clusters_with_peering.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/typed_queries/terraform_tgw_attachments → qontract_reconcile-0.10.2.dev76/reconcile/typed_queries/cost_report}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/cost_report/app_names.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/cost_report/cost_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/cost_report/settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/dynatrace.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/dynatrace_environments.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/dynatrace_token_provider_token_specs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/external_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/get_state_aws_account.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/github_orgs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/gitlab_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/glitchtip.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/jenkins.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/jira.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/jira_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/jiralert_settings.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/namespaces_minimal.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/pagerduty_instances.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/quay.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/repos.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/reserved_networks.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/saas_files.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/slack.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/slo_documents.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/smtp.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/tekton_pipeline_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/terraform_namespaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/unleash_feature_toggles → qontract_reconcile-0.10.2.dev76/reconcile/typed_queries/terraform_tgw_attachments}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/terraform_tgw_attachments/aws_accounts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/unleash.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/users.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/typed_queries/vault.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils → qontract_reconcile-0.10.2.dev76/reconcile/unleash_feature_toggles}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/unleash_feature_toggles/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/acs → qontract_reconcile-0.10.2.dev76/reconcile/utils}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/aws_api_typed → qontract_reconcile-0.10.2.dev76/reconcile/utils/acs}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/acs/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/acs/notifiers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/acs/policies.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/acs/rbac.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aggregated_list.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/amtool.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/cloud_resource_best_practice → qontract_reconcile-0.10.2.dev76/reconcile/utils/aws_api_typed}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/account.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/dynamodb.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/iam.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/organization.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/s3.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/service_quotas.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/sts.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_api_typed/support.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/aws_helper.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/batches.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/binary.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/clusterhealth → qontract_reconcile-0.10.2.dev76/reconcile/utils/cloud_resource_best_practice}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/cloud_resource_best_practice/aws_rds.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/dynatrace → qontract_reconcile-0.10.2.dev76/reconcile/utils/clusterhealth}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/clusterhealth/providerbase.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/clusterhealth/telemeter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/config.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/constants.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/deadmanssnitch_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/defer.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/differ.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/disabled_integrations.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/dnsutils.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/internal_groups → qontract_reconcile-0.10.2.dev76/reconcile/utils/dynatrace}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/dynatrace/client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/early_exit_cache.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/elasticsearch_exceptions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/environ.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/exceptions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/expiration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/extended_early_exit.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/external_resource_spec.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/external_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/filtering.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/git.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/github_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/gitlab_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/glitchtip/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/glitchtip/client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/glitchtip/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/gpg.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/gql.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/grouping.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/helm.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/helpers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/imap_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/instrumented_wrappers.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/jinja2 → qontract_reconcile-0.10.2.dev76/reconcile/utils/internal_groups}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/internal_groups/client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/internal_groups/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jenkins_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/jobcontroller → qontract_reconcile-0.10.2.dev76/reconcile/utils/jinja2}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jinja2/extensions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jinja2/filters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jinja2/utils.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jira_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jjb_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/membershipsources → qontract_reconcile-0.10.2.dev76/reconcile/utils/jobcontroller}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jobcontroller/controller.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jobcontroller/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jsonpath.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/jump_host.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/keycloak.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ldap_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/lean_terraform_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/make.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/merge_request_manager → qontract_reconcile-0.10.2.dev76/reconcile/utils/membershipsources}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/membershipsources/app_interface_resolver.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/membershipsources/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/membershipsources/resolver.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/rosa → qontract_reconcile-0.10.2.dev76/reconcile/utils/merge_request_manager}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/merge_request_manager/merge_request_manager.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/merge_request_manager/parser.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/README.md +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/app_interface_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/app_sre_tekton_access_report.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/aws_access.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/clusters_updates.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/glitchtip_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/labels.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/notificator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/ocm_update_recommended_version.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/promote_qontract.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/update_access_report_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/mr/user_maintenance.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/oauth2_backend_application_session.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/oc.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/oc_connection_parameters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/oc_filters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/oc_map.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/addons.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/base.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/cluster_groups.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/clusters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/identity_providers.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/label_sources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/labels.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/manifests.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/ocm.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/products.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/search_filters.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/service_log.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/sre_capability_labels.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/status_board.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/subscriptions.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/syncsets.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm/upgrades.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ocm_base_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/openshift_resource.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/openssl.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/output.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/pagerduty_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/parse_dhms_duration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/password_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/prometheus.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/promotion_state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/promtool.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/quay_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/raw_github_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/repo_owners.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/rest_api_base.py +0 -0
- {qontract_reconcile-0.10.2.dev74/reconcile/utils/terrascript → qontract_reconcile-0.10.2.dev76/reconcile/utils/rosa}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/rosa/rosa_cli.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/rosa/session.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/ruamel.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/desired_state_diff.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/environment.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/integration.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/meta.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/runner.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/runtime/sharding.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/saasherder/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/saasherder/interfaces.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/saasherder/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/saasherder/saasherder.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/secret_reader.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/semver_helper.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/sharding.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/slack_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/smtp_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/sqs_gateway.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/structs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/template.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terraform/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terraform/config.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terraform/config_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terraform_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools → qontract_reconcile-0.10.2.dev76/reconcile/utils/terrascript}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terrascript/cloudflare_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terrascript/cloudflare_resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terrascript/models.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terrascript/resources.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/terrascript_aws_client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/three_way_diff_strategy.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/throughput.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/unleash/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/unleash/client.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/unleash/server.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/vault.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/vaultsecretref.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/utils/vcs.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/vault_replication.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/reconcile/vpc_peerings_validator.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools/cli_commands → qontract_reconcile-0.10.2.dev76/tools}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/app_interface_metrics_exporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/app_interface_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/app_sre_tekton_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/app_sre_tekton_access_revalidation.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools/cli_commands/cost_report → qontract_reconcile-0.10.2.dev76/tools/cli_commands}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/container_images_report.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools/saas_metrics_exporter → qontract_reconcile-0.10.2.dev76/tools/cli_commands/cost_report}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/aws.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/cost_management_api.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/model.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/openshift.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/openshift_cost_optimization.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/response.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/util.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/cost_report/view.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/erv2.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/gpg_encrypt.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/cli_commands/systems_and_tools.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/glitchtip_access_reporter.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/glitchtip_access_revalidation.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/qontract_cli.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools/saas_metrics_exporter/commit_distance → qontract_reconcile-0.10.2.dev76/tools/saas_metrics_exporter}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74/tools/saas_promotion_state → qontract_reconcile-0.10.2.dev76/tools/saas_metrics_exporter/commit_distance}/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/saas_metrics_exporter/commit_distance/channel.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/saas_metrics_exporter/commit_distance/commit_distance.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/saas_metrics_exporter/commit_distance/metrics.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/saas_metrics_exporter/main.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/saas_promotion_state/saas_promotion_state.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/sd_app_sre_alert_report.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/sre_checkpoints/__init__.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/tools/sre_checkpoints/util.py +0 -0
- {qontract_reconcile-0.10.2.dev74 → qontract_reconcile-0.10.2.dev76}/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.dev76
|
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
|
@@ -359,8 +359,8 @@ class AVSIntegration(QontractReconcileIntegration[AVSIntegrationParams]):
|
|
359
359
|
desired=external_resources_aws,
|
360
360
|
key=lambda r: r.key,
|
361
361
|
equal=lambda external_resources_app_interface,
|
362
|
-
external_resources_aws: external_resources_app_interface.
|
363
|
-
== external_resources_aws.
|
362
|
+
external_resources_aws: external_resources_app_interface.resource_engine_version_string
|
363
|
+
== external_resources_aws.resource_engine_version_string,
|
364
364
|
)
|
365
365
|
for diff_pair in diff.change.values():
|
366
366
|
aws_resource = diff_pair.desired
|
@@ -3106,6 +3106,19 @@ def dynatrace_token_provider(ctx):
|
|
3106
3106
|
)
|
3107
3107
|
|
3108
3108
|
|
3109
|
+
@integration.command(short_help="Manage labels across cluster fleets in OCM")
|
3110
|
+
@click.pass_context
|
3111
|
+
def fleet_labeler(ctx):
|
3112
|
+
from reconcile.fleet_labeler.integration import (
|
3113
|
+
FleetLabelerIntegration,
|
3114
|
+
)
|
3115
|
+
|
3116
|
+
run_class_integration(
|
3117
|
+
integration=FleetLabelerIntegration(),
|
3118
|
+
ctx=ctx.obj,
|
3119
|
+
)
|
3120
|
+
|
3121
|
+
|
3109
3122
|
@integration.command(short_help="Manage additional routers in OCM.")
|
3110
3123
|
@click.pass_context
|
3111
3124
|
def ocm_additional_routers(ctx):
|
@@ -0,0 +1,79 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from collections.abc import Mapping
|
4
|
+
|
5
|
+
from reconcile.fleet_labeler.ocm import OCMClient, OCMClientConfig
|
6
|
+
from reconcile.fleet_labeler.vcs import VCS
|
7
|
+
from reconcile.gql_definitions.fleet_labeler.fleet_labels import FleetLabelsSpecV1
|
8
|
+
from reconcile.typed_queries.app_interface_repo_url import get_app_interface_repo_url
|
9
|
+
from reconcile.typed_queries.fleet_labels import get_fleet_label_specs
|
10
|
+
from reconcile.typed_queries.github_orgs import get_github_orgs
|
11
|
+
from reconcile.typed_queries.gitlab_instances import get_gitlab_instances
|
12
|
+
from reconcile.utils.ocm_base_client import (
|
13
|
+
init_ocm_base_client,
|
14
|
+
)
|
15
|
+
from reconcile.utils.secret_reader import SecretReaderBase
|
16
|
+
from reconcile.utils.vcs import VCS as VCSBase
|
17
|
+
|
18
|
+
|
19
|
+
class Dependencies:
|
20
|
+
"""
|
21
|
+
Depenedencies class to hold all the dependencies (API clients, Specs) for the Fleet Labeler.
|
22
|
+
Dependency inversion simplifies setting up tests.
|
23
|
+
"""
|
24
|
+
|
25
|
+
def __init__(
|
26
|
+
self,
|
27
|
+
label_specs_by_name: Mapping[str, FleetLabelsSpecV1],
|
28
|
+
ocm_clients_by_label_spec_name: Mapping[str, OCMClient],
|
29
|
+
vcs: VCS,
|
30
|
+
):
|
31
|
+
self.label_specs_by_name = label_specs_by_name
|
32
|
+
self.ocm_clients_by_label_spec_name = ocm_clients_by_label_spec_name
|
33
|
+
self.vcs = vcs
|
34
|
+
|
35
|
+
@classmethod
|
36
|
+
def create(
|
37
|
+
cls,
|
38
|
+
secret_reader: SecretReaderBase,
|
39
|
+
dry_run: bool = True,
|
40
|
+
) -> Dependencies:
|
41
|
+
return Dependencies(
|
42
|
+
label_specs_by_name=_label_specs(),
|
43
|
+
ocm_clients_by_label_spec_name=_ocm_clients(secret_reader=secret_reader),
|
44
|
+
vcs=_vcs(secret_reader=secret_reader, dry_run=dry_run),
|
45
|
+
)
|
46
|
+
|
47
|
+
|
48
|
+
def _label_specs() -> dict[str, FleetLabelsSpecV1]:
|
49
|
+
return {spec.name: spec for spec in get_fleet_label_specs()}
|
50
|
+
|
51
|
+
|
52
|
+
def _ocm_clients(secret_reader: SecretReaderBase) -> dict[str, OCMClient]:
|
53
|
+
ocm_clients_by_label_spec_name: dict[str, OCMClient] = {}
|
54
|
+
for spec in get_fleet_label_specs():
|
55
|
+
ocm_base_client = init_ocm_base_client(
|
56
|
+
cfg=OCMClientConfig(
|
57
|
+
url=spec.ocm.environment.url,
|
58
|
+
access_token_client_id=spec.ocm.access_token_client_id,
|
59
|
+
access_token_url=spec.ocm.access_token_url,
|
60
|
+
access_token_client_secret=spec.ocm.access_token_client_secret,
|
61
|
+
),
|
62
|
+
secret_reader=secret_reader,
|
63
|
+
)
|
64
|
+
ocm_clients_by_label_spec_name[spec.name] = OCMClient(ocm_base_client)
|
65
|
+
return ocm_clients_by_label_spec_name
|
66
|
+
|
67
|
+
|
68
|
+
def _vcs(secret_reader: SecretReaderBase, dry_run: bool = True) -> VCS:
|
69
|
+
return VCS(
|
70
|
+
vcs=VCSBase(
|
71
|
+
secret_reader=secret_reader,
|
72
|
+
github_orgs=get_github_orgs(),
|
73
|
+
gitlab_instances=get_gitlab_instances(),
|
74
|
+
app_interface_repo_url=get_app_interface_repo_url(),
|
75
|
+
dry_run=dry_run,
|
76
|
+
allow_deleting_mrs=False,
|
77
|
+
allow_opening_mrs=True,
|
78
|
+
)
|
79
|
+
)
|
@@ -0,0 +1,190 @@
|
|
1
|
+
import logging
|
2
|
+
from collections import defaultdict
|
3
|
+
from collections.abc import Iterable
|
4
|
+
from typing import Any
|
5
|
+
|
6
|
+
import yaml
|
7
|
+
from pydantic import BaseModel
|
8
|
+
from ruamel.yaml.compat import StringIO
|
9
|
+
|
10
|
+
from reconcile.fleet_labeler.dependencies import Dependencies
|
11
|
+
from reconcile.fleet_labeler.merge_request import YamlCluster
|
12
|
+
from reconcile.fleet_labeler.meta import (
|
13
|
+
QONTRACT_INTEGRATION,
|
14
|
+
QONTRACT_INTEGRATION_VERSION,
|
15
|
+
)
|
16
|
+
from reconcile.fleet_labeler.metrics import FleetLabelerDuplicateClusterMatchesGauge
|
17
|
+
from reconcile.fleet_labeler.ocm import OCMClient
|
18
|
+
from reconcile.fleet_labeler.validate import validate_label_specs
|
19
|
+
from reconcile.fleet_labeler.vcs import VCS
|
20
|
+
from reconcile.gql_definitions.fleet_labeler.fleet_labels import (
|
21
|
+
FleetLabelDefaultV1,
|
22
|
+
FleetLabelsSpecV1,
|
23
|
+
FleetSubscriptionLabelTemplateV1,
|
24
|
+
)
|
25
|
+
from reconcile.typed_queries.fleet_labels import get_fleet_label_specs
|
26
|
+
from reconcile.utils import (
|
27
|
+
metrics,
|
28
|
+
)
|
29
|
+
from reconcile.utils.jinja2.utils import process_jinja2_template
|
30
|
+
from reconcile.utils.ruamel import create_ruamel_instance
|
31
|
+
from reconcile.utils.runtime.integration import (
|
32
|
+
NoParams,
|
33
|
+
QontractReconcileIntegration,
|
34
|
+
)
|
35
|
+
|
36
|
+
|
37
|
+
class FleetLabelerIntegration(QontractReconcileIntegration[NoParams]):
|
38
|
+
def __init__(self) -> None:
|
39
|
+
super().__init__(NoParams())
|
40
|
+
|
41
|
+
@property
|
42
|
+
def name(self) -> str:
|
43
|
+
return QONTRACT_INTEGRATION
|
44
|
+
|
45
|
+
def get_early_exit_desired_state(self, *args: Any, **kwargs: Any) -> dict[str, Any]:
|
46
|
+
"""Return the desired state for early exit."""
|
47
|
+
return {
|
48
|
+
"version": QONTRACT_INTEGRATION_VERSION,
|
49
|
+
"specs": {spec.name: spec.dict() for spec in get_fleet_label_specs()},
|
50
|
+
}
|
51
|
+
|
52
|
+
def run(self, dry_run: bool) -> None:
|
53
|
+
dependencies = Dependencies.create(
|
54
|
+
secret_reader=self.secret_reader,
|
55
|
+
dry_run=dry_run,
|
56
|
+
)
|
57
|
+
self.reconcile(dependencies=dependencies)
|
58
|
+
|
59
|
+
def reconcile(self, dependencies: Dependencies) -> None:
|
60
|
+
validate_label_specs(specs=dependencies.label_specs_by_name)
|
61
|
+
for spec_name, ocm in dependencies.ocm_clients_by_label_spec_name.items():
|
62
|
+
self._sync_cluster_inventory(
|
63
|
+
ocm, dependencies.label_specs_by_name[spec_name], dependencies.vcs
|
64
|
+
)
|
65
|
+
|
66
|
+
def _render_default_labels(
|
67
|
+
self,
|
68
|
+
template: FleetSubscriptionLabelTemplateV1,
|
69
|
+
labels: dict[str, str],
|
70
|
+
) -> dict[str, Any]:
|
71
|
+
if not template.path:
|
72
|
+
# Make mypy happy
|
73
|
+
raise ValueError("path is required for subscription label template")
|
74
|
+
body = template.path.content
|
75
|
+
type = template.q_type or "jinja2"
|
76
|
+
extra_curly = type == "extracurlyjinja2"
|
77
|
+
vars = dict(template.variables or {})
|
78
|
+
vars["labels"] = labels
|
79
|
+
rendered = process_jinja2_template(
|
80
|
+
body,
|
81
|
+
vars,
|
82
|
+
extra_curly=extra_curly,
|
83
|
+
)
|
84
|
+
return yaml.safe_load(rendered)
|
85
|
+
|
86
|
+
def _render_yaml_file(
|
87
|
+
self,
|
88
|
+
current_content: str,
|
89
|
+
ids_to_delete: Iterable[str],
|
90
|
+
clusters_to_add: Iterable[YamlCluster],
|
91
|
+
) -> str:
|
92
|
+
yml = create_ruamel_instance(pure=True)
|
93
|
+
content = yml.load(current_content)
|
94
|
+
current_clusters = content.get("clusters", [])
|
95
|
+
desired_clusters = [
|
96
|
+
cluster
|
97
|
+
for cluster in current_clusters
|
98
|
+
if cluster.get("clusterId") not in ids_to_delete
|
99
|
+
]
|
100
|
+
desired_clusters.extend([
|
101
|
+
{
|
102
|
+
"name": cluster.name,
|
103
|
+
"clusterId": cluster.cluster_id,
|
104
|
+
"serverUrl": cluster.server_url,
|
105
|
+
"subscriptionLabels": cluster.subscription_labels_content,
|
106
|
+
}
|
107
|
+
for cluster in clusters_to_add
|
108
|
+
])
|
109
|
+
content["clusters"] = desired_clusters
|
110
|
+
with StringIO() as stream:
|
111
|
+
yml.dump(content, stream)
|
112
|
+
return stream.getvalue()
|
113
|
+
|
114
|
+
def _sync_cluster_inventory(
|
115
|
+
self, ocm: OCMClient, spec: FleetLabelsSpecV1, vcs: VCS
|
116
|
+
) -> None:
|
117
|
+
class ClusterData(BaseModel):
|
118
|
+
"""
|
119
|
+
Helper structure for synching process
|
120
|
+
"""
|
121
|
+
|
122
|
+
name: str
|
123
|
+
server_url: str
|
124
|
+
label_default: FleetLabelDefaultV1
|
125
|
+
|
126
|
+
all_current_cluster_ids = {cluster.cluster_id for cluster in spec.clusters}
|
127
|
+
clusters: dict[str, list[ClusterData]] = defaultdict(list)
|
128
|
+
for label_default in spec.label_defaults:
|
129
|
+
match_subscription_labels = dict(label_default.match_subscription_labels)
|
130
|
+
for cluster in ocm.discover_clusters_by_labels(
|
131
|
+
labels=match_subscription_labels
|
132
|
+
):
|
133
|
+
# TODO: ideally we filter on server side - see TODO in ocm.py
|
134
|
+
if (
|
135
|
+
match_subscription_labels.items()
|
136
|
+
<= cluster.subscription_labels.items()
|
137
|
+
):
|
138
|
+
clusters[cluster.cluster_id].append(
|
139
|
+
ClusterData(
|
140
|
+
label_default=label_default,
|
141
|
+
name=cluster.name,
|
142
|
+
server_url=cluster.server_url,
|
143
|
+
)
|
144
|
+
)
|
145
|
+
|
146
|
+
cluster_with_duplicate_matches = {
|
147
|
+
k: v for k, v in clusters.items() if len(v) > 1
|
148
|
+
}
|
149
|
+
for cluster_id, matches in cluster_with_duplicate_matches.items():
|
150
|
+
label_matches = "\n".join(
|
151
|
+
str(m.label_default.match_subscription_labels) for m in matches
|
152
|
+
)
|
153
|
+
logging.error(
|
154
|
+
f"Spec '{spec.name}': Cluster ID {cluster_id} is matched multiple times by different label matchers:\n{label_matches}"
|
155
|
+
)
|
156
|
+
metrics.set_gauge(
|
157
|
+
FleetLabelerDuplicateClusterMatchesGauge(
|
158
|
+
integration=self.name,
|
159
|
+
ocm_name=spec.ocm.name,
|
160
|
+
),
|
161
|
+
len(cluster_with_duplicate_matches),
|
162
|
+
)
|
163
|
+
|
164
|
+
all_desired_clusters = {k: v[0] for k, v in clusters.items() if len(v) == 1}
|
165
|
+
clusters_to_add = [
|
166
|
+
YamlCluster(
|
167
|
+
cluster_id=cluster_id,
|
168
|
+
name=cluster_info.name,
|
169
|
+
server_url=cluster_info.server_url,
|
170
|
+
subscription_labels_content=self._render_default_labels(
|
171
|
+
template=cluster_info.label_default.subscription_label_template,
|
172
|
+
labels=ocm.get_cluster_labels(cluster_id=cluster_id),
|
173
|
+
),
|
174
|
+
)
|
175
|
+
for cluster_id, cluster_info in all_desired_clusters.items()
|
176
|
+
if cluster_id not in all_current_cluster_ids
|
177
|
+
]
|
178
|
+
cluster_ids_to_delete = all_current_cluster_ids - all_desired_clusters.keys()
|
179
|
+
|
180
|
+
if not (cluster_ids_to_delete or clusters_to_add):
|
181
|
+
return
|
182
|
+
|
183
|
+
current_content = vcs.get_file_content_from_main(path=spec.path)
|
184
|
+
# Lets make sure we are deterministic when adding new clusters
|
185
|
+
# The overhead is neglectable and it makes testing easier
|
186
|
+
sorted_clusters_to_add = sorted(clusters_to_add, key=lambda c: c.name)
|
187
|
+
desired_content = self._render_yaml_file(
|
188
|
+
current_content, cluster_ids_to_delete, sorted_clusters_to_add
|
189
|
+
)
|
190
|
+
vcs.open_merge_request(path=spec.path, content=desired_content)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
from reconcile.utils.gitlab_api import GitLabApi
|
6
|
+
from reconcile.utils.mr.base import MergeRequestBase
|
7
|
+
from reconcile.utils.mr.labels import AUTO_MERGE
|
8
|
+
|
9
|
+
FLEET_LABELER_LABEL = "FleetLabeler"
|
10
|
+
|
11
|
+
|
12
|
+
class YamlCluster(BaseModel):
|
13
|
+
name: str
|
14
|
+
server_url: str
|
15
|
+
cluster_id: str
|
16
|
+
subscription_labels_content: Any
|
17
|
+
|
18
|
+
|
19
|
+
class FleetLabelerUpdates(MergeRequestBase):
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
path: str,
|
23
|
+
content: str,
|
24
|
+
):
|
25
|
+
self._path = path
|
26
|
+
self._content = content
|
27
|
+
self.name = f"[Fleet Labeler] Update cluster inventory for {path}"
|
28
|
+
|
29
|
+
super().__init__()
|
30
|
+
|
31
|
+
self.labels = [AUTO_MERGE, FLEET_LABELER_LABEL]
|
32
|
+
|
33
|
+
@property
|
34
|
+
def title(self) -> str:
|
35
|
+
return self.name
|
36
|
+
|
37
|
+
@property
|
38
|
+
def description(self) -> str:
|
39
|
+
return self.name
|
40
|
+
|
41
|
+
def process(self, gitlab_cli: GitLabApi) -> None:
|
42
|
+
msg = "update cluster inventory"
|
43
|
+
gitlab_cli.update_file(
|
44
|
+
branch_name=self.branch,
|
45
|
+
file_path=self._path,
|
46
|
+
commit_message=msg,
|
47
|
+
content=self._content,
|
48
|
+
)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
from reconcile.utils.metrics import (
|
4
|
+
GaugeMetric,
|
5
|
+
)
|
6
|
+
|
7
|
+
|
8
|
+
class FleetLabelerBaseMetric(BaseModel):
|
9
|
+
integration: str
|
10
|
+
ocm_name: str
|
11
|
+
|
12
|
+
|
13
|
+
class FleetLabelerDuplicateClusterMatchesGauge(FleetLabelerBaseMetric, GaugeMetric):
|
14
|
+
"""
|
15
|
+
Gauge for the number of clusters that have duplicate matches. Clusters with
|
16
|
+
duplicate matches are being ignored by fleet labeler, as it cannot clearly
|
17
|
+
determine which default label to apply for the cluster. Check the logs to
|
18
|
+
identify the clusters with duplicate matches.
|
19
|
+
"""
|
20
|
+
|
21
|
+
@classmethod
|
22
|
+
def name(cls) -> str:
|
23
|
+
return "fleet_labeler_duplicate_cluster_matches"
|
@@ -0,0 +1,83 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from collections.abc import Mapping
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
from reconcile.gql_definitions.fragments.vault_secret import VaultSecret
|
8
|
+
from reconcile.utils.ocm.clusters import (
|
9
|
+
ClusterDetails,
|
10
|
+
discover_clusters_by_labels,
|
11
|
+
)
|
12
|
+
from reconcile.utils.ocm.labels import (
|
13
|
+
get_cluster_labels_for_cluster_id,
|
14
|
+
)
|
15
|
+
from reconcile.utils.ocm.search_filters import Filter, FilterMode
|
16
|
+
from reconcile.utils.ocm_base_client import (
|
17
|
+
OCMBaseClient,
|
18
|
+
)
|
19
|
+
|
20
|
+
"""
|
21
|
+
Thin abstractions of reconcile.ocm module to reduce coupling.
|
22
|
+
"""
|
23
|
+
|
24
|
+
|
25
|
+
class Cluster(BaseModel):
|
26
|
+
cluster_id: str
|
27
|
+
server_url: str
|
28
|
+
name: str
|
29
|
+
subscription_labels: dict[str, str]
|
30
|
+
|
31
|
+
@staticmethod
|
32
|
+
def from_cluster_details(cluster: ClusterDetails) -> Cluster:
|
33
|
+
server_url = (
|
34
|
+
cluster.ocm_cluster.console.url if cluster.ocm_cluster.console else ""
|
35
|
+
)
|
36
|
+
|
37
|
+
return Cluster(
|
38
|
+
cluster_id=cluster.ocm_cluster.id,
|
39
|
+
server_url=server_url,
|
40
|
+
name=cluster.ocm_cluster.name,
|
41
|
+
subscription_labels={
|
42
|
+
label.key: label.value
|
43
|
+
for label in cluster.subscription_labels.labels.values()
|
44
|
+
},
|
45
|
+
)
|
46
|
+
|
47
|
+
|
48
|
+
class OCMClientConfig(BaseModel):
|
49
|
+
"""
|
50
|
+
OCMOrg does not have the required structure to comply with OCMBaseClient Protocol.
|
51
|
+
This class provides a concrete implementation for the required Protocol.
|
52
|
+
"""
|
53
|
+
|
54
|
+
url: str
|
55
|
+
access_token_client_id: str
|
56
|
+
access_token_url: str
|
57
|
+
access_token_client_secret: VaultSecret
|
58
|
+
|
59
|
+
|
60
|
+
class OCMClient:
|
61
|
+
"""
|
62
|
+
Thin OOP wrapper around OCMBaseClient to avoid function mocking in tests and reduce coupling.
|
63
|
+
"""
|
64
|
+
|
65
|
+
def __init__(self, ocm_client: OCMBaseClient):
|
66
|
+
self._ocm_client = ocm_client
|
67
|
+
|
68
|
+
def discover_clusters_by_labels(self, labels: Mapping[str, str]) -> list[Cluster]:
|
69
|
+
label_filter = Filter(mode=FilterMode.AND).eq("type", "Subscription")
|
70
|
+
for key in labels:
|
71
|
+
label_filter = label_filter.eq("Key", key)
|
72
|
+
# TODO: This throws 400 bad request
|
73
|
+
# for k, v in labels.items():
|
74
|
+
# label_filter = label_filter.eq(k, v)
|
75
|
+
return [
|
76
|
+
Cluster.from_cluster_details(cluster)
|
77
|
+
for cluster in discover_clusters_by_labels(
|
78
|
+
ocm_api=self._ocm_client, label_filter=label_filter
|
79
|
+
)
|
80
|
+
]
|
81
|
+
|
82
|
+
def get_cluster_labels(self, cluster_id: str) -> dict[str, str]:
|
83
|
+
return get_cluster_labels_for_cluster_id(self._ocm_client, cluster_id)
|
@@ -0,0 +1,83 @@
|
|
1
|
+
from collections import Counter
|
2
|
+
from collections.abc import Mapping
|
3
|
+
|
4
|
+
from reconcile.gql_definitions.fleet_labeler.fleet_labels import (
|
5
|
+
FleetLabelsSpecV1,
|
6
|
+
OpenShiftClusterManagerV1,
|
7
|
+
)
|
8
|
+
|
9
|
+
|
10
|
+
class OCMAccessTokenClientIdMissing(Exception):
|
11
|
+
pass
|
12
|
+
|
13
|
+
|
14
|
+
class OCMAccessTokenClientSecretMissing(Exception):
|
15
|
+
pass
|
16
|
+
|
17
|
+
|
18
|
+
class OCMAccessTokenUrlMissing(Exception):
|
19
|
+
pass
|
20
|
+
|
21
|
+
|
22
|
+
class MatchLabelsNotUniqueError(Exception):
|
23
|
+
pass
|
24
|
+
|
25
|
+
|
26
|
+
def validate_label_specs(specs: Mapping[str, FleetLabelsSpecV1]) -> None:
|
27
|
+
"""
|
28
|
+
We cannot catch all potential errors through json schema definition.
|
29
|
+
"""
|
30
|
+
for spec in specs.values():
|
31
|
+
_validate_ocm_token_spec(spec.ocm)
|
32
|
+
_validate_match_labels(spec)
|
33
|
+
_validate_unique_ocm_managed_label_combo(spec)
|
34
|
+
|
35
|
+
|
36
|
+
def _validate_unique_ocm_managed_label_combo(spec: FleetLabelsSpecV1) -> None:
|
37
|
+
"""
|
38
|
+
Every fleet labeler spec is pinned to one OCM client and manages a single
|
39
|
+
label prefix. We must be sure, that the label prefixes are not overlapping
|
40
|
+
for the same OCM client, as that would mean to default label specs will be
|
41
|
+
competing.
|
42
|
+
"""
|
43
|
+
# TODO: implement
|
44
|
+
pass
|
45
|
+
|
46
|
+
|
47
|
+
def _validate_match_labels(spec: FleetLabelsSpecV1) -> None:
|
48
|
+
"""
|
49
|
+
Match labels should be unique within the same spec.
|
50
|
+
"""
|
51
|
+
for label_default in spec.label_defaults:
|
52
|
+
keys = (
|
53
|
+
".".join(
|
54
|
+
f"{k}:{v}"
|
55
|
+
for k, v in sorted(
|
56
|
+
dict(label_default.match_subscription_labels).items()
|
57
|
+
)
|
58
|
+
)
|
59
|
+
for label_default in spec.label_defaults
|
60
|
+
)
|
61
|
+
duplicates = [key for key, count in Counter(keys).items() if count > 1]
|
62
|
+
if duplicates:
|
63
|
+
raise MatchLabelsNotUniqueError(
|
64
|
+
f"The 'matchSubscriptionLabels' combinations must be unique within a spec. Found duplicates in spec {spec.name} for matchers: {duplicates}"
|
65
|
+
)
|
66
|
+
|
67
|
+
|
68
|
+
def _validate_ocm_token_spec(ocm: OpenShiftClusterManagerV1) -> None:
|
69
|
+
"""
|
70
|
+
OCM tokens are optional in the schema. Lets verify they exist.
|
71
|
+
"""
|
72
|
+
if not ocm.access_token_client_id:
|
73
|
+
raise OCMAccessTokenClientIdMissing(
|
74
|
+
f"accessTokenClientId missing in ocm spec '{ocm.name}'"
|
75
|
+
)
|
76
|
+
if not ocm.access_token_client_secret:
|
77
|
+
raise OCMAccessTokenClientSecretMissing(
|
78
|
+
f"accessTokenClientSecret missing in ocm spec '{ocm.name}'"
|
79
|
+
)
|
80
|
+
if not ocm.access_token_url:
|
81
|
+
raise OCMAccessTokenUrlMissing(
|
82
|
+
f"accessTokenUrl missing in ocm spec '{ocm.name}'"
|
83
|
+
)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
from reconcile.fleet_labeler.merge_request import FleetLabelerUpdates
|
2
|
+
from reconcile.utils.vcs import VCS as VCSBase
|
3
|
+
|
4
|
+
|
5
|
+
class VCS:
|
6
|
+
"""
|
7
|
+
Thin abstractions of reconcile.utils.vcs module to reduce coupling and simplify tests.
|
8
|
+
"""
|
9
|
+
|
10
|
+
def __init__(self, vcs: VCSBase):
|
11
|
+
self._vcs = vcs
|
12
|
+
|
13
|
+
def get_file_content_from_main(self, path: str) -> str:
|
14
|
+
return self._vcs.get_file_content_from_app_interface_ref(
|
15
|
+
file_path=path, ref="main"
|
16
|
+
)
|
17
|
+
|
18
|
+
def open_merge_request(self, path: str, content: str) -> None:
|
19
|
+
mr = FleetLabelerUpdates(path=path, content=content)
|
20
|
+
# Note, that VCS is initialized with dry-run flag already
|
21
|
+
self._vcs.open_app_interface_merge_request(mr)
|
@@ -28,11 +28,13 @@ fragment VaultSecret on VaultSecret_v1 {
|
|
28
28
|
format
|
29
29
|
}
|
30
30
|
|
31
|
-
query
|
32
|
-
|
31
|
+
query FleetLabelSpecs {
|
32
|
+
fleet_labels_specs: fleet_labels_specs_v1 {
|
33
33
|
name
|
34
|
+
path
|
34
35
|
managedSubscriptionLabelPrefix
|
35
|
-
|
36
|
+
ocm {
|
37
|
+
name
|
36
38
|
environment {
|
37
39
|
url
|
38
40
|
}
|
@@ -75,6 +77,7 @@ class OpenShiftClusterManagerEnvironmentV1(ConfiguredBaseModel):
|
|
75
77
|
|
76
78
|
|
77
79
|
class OpenShiftClusterManagerV1(ConfiguredBaseModel):
|
80
|
+
name: str = Field(..., alias="name")
|
78
81
|
environment: OpenShiftClusterManagerEnvironmentV1 = Field(..., alias="environment")
|
79
82
|
access_token_client_id: Optional[str] = Field(..., alias="accessTokenClientId")
|
80
83
|
access_token_client_secret: Optional[VaultSecret] = Field(..., alias="accessTokenClientSecret")
|
@@ -104,19 +107,20 @@ class FleetClusterV1(ConfiguredBaseModel):
|
|
104
107
|
subscription_labels: Json = Field(..., alias="subscriptionLabels")
|
105
108
|
|
106
109
|
|
107
|
-
class
|
110
|
+
class FleetLabelsSpecV1(ConfiguredBaseModel):
|
108
111
|
name: str = Field(..., alias="name")
|
112
|
+
path: str = Field(..., alias="path")
|
109
113
|
managed_subscription_label_prefix: str = Field(..., alias="managedSubscriptionLabelPrefix")
|
110
|
-
|
114
|
+
ocm: OpenShiftClusterManagerV1 = Field(..., alias="ocm")
|
111
115
|
label_defaults: list[FleetLabelDefaultV1] = Field(..., alias="labelDefaults")
|
112
116
|
clusters: list[FleetClusterV1] = Field(..., alias="clusters")
|
113
117
|
|
114
118
|
|
115
|
-
class
|
116
|
-
|
119
|
+
class FleetLabelSpecsQueryData(ConfiguredBaseModel):
|
120
|
+
fleet_labels_specs: Optional[list[FleetLabelsSpecV1]] = Field(..., alias="fleet_labels_specs")
|
117
121
|
|
118
122
|
|
119
|
-
def query(query_func: Callable, **kwargs: Any) ->
|
123
|
+
def query(query_func: Callable, **kwargs: Any) -> FleetLabelSpecsQueryData:
|
120
124
|
"""
|
121
125
|
This is a convenience function which queries and parses the data into
|
122
126
|
concrete types. It should be compatible with most GQL clients.
|
@@ -129,7 +133,7 @@ def query(query_func: Callable, **kwargs: Any) -> FleetLabelsQueryData:
|
|
129
133
|
kwargs: optional arguments that will be passed to the query function
|
130
134
|
|
131
135
|
Returns:
|
132
|
-
|
136
|
+
FleetLabelSpecsQueryData: queried data parsed into generated classes
|
133
137
|
"""
|
134
138
|
raw_data: dict[Any, Any] = query_func(DEFINITION, **kwargs)
|
135
|
-
return
|
139
|
+
return FleetLabelSpecsQueryData(**raw_data)
|