qontract-reconcile 0.10.2.dev361__py3-none-any.whl → 0.10.2.dev430__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev430.dist-info}/METADATA +13 -12
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev430.dist-info}/RECORD +351 -345
- reconcile/acs_rbac.py +2 -2
- reconcile/aus/advanced_upgrade_service.py +18 -12
- reconcile/aus/base.py +134 -32
- reconcile/aus/cluster_version_data.py +15 -5
- reconcile/aus/models.py +3 -1
- reconcile/aus/ocm_addons_upgrade_scheduler_org.py +1 -0
- reconcile/aus/ocm_upgrade_scheduler.py +8 -1
- reconcile/aus/ocm_upgrade_scheduler_org.py +20 -5
- reconcile/aus/version_gates/sts_version_gate_handler.py +54 -1
- reconcile/automated_actions/config/integration.py +16 -4
- reconcile/aws_account_manager/integration.py +8 -8
- reconcile/aws_account_manager/reconciler.py +3 -3
- reconcile/aws_ami_cleanup/integration.py +8 -12
- reconcile/aws_ami_share.py +69 -62
- reconcile/aws_cloudwatch_log_retention/integration.py +155 -126
- reconcile/aws_iam_keys.py +1 -0
- reconcile/aws_saml_idp/integration.py +12 -4
- reconcile/aws_saml_roles/integration.py +30 -23
- reconcile/aws_version_sync/integration.py +6 -12
- reconcile/change_owners/bundle.py +3 -3
- reconcile/change_owners/change_log_tracking.py +3 -2
- reconcile/change_owners/change_owners.py +1 -1
- reconcile/change_owners/diff.py +0 -2
- reconcile/checkpoint.py +11 -3
- reconcile/cli.py +93 -10
- reconcile/dashdotdb_dora.py +5 -12
- reconcile/dashdotdb_slo.py +1 -1
- reconcile/database_access_manager.py +123 -117
- reconcile/dynatrace_token_provider/integration.py +1 -1
- reconcile/endpoints_discovery/integration.py +4 -1
- reconcile/endpoints_discovery/merge_request.py +1 -1
- reconcile/endpoints_discovery/merge_request_manager.py +8 -8
- reconcile/external_resources/factories.py +4 -6
- reconcile/external_resources/integration.py +1 -1
- reconcile/external_resources/manager.py +8 -6
- reconcile/external_resources/meta.py +0 -1
- reconcile/external_resources/metrics.py +1 -1
- reconcile/external_resources/model.py +19 -15
- reconcile/external_resources/reconciler.py +7 -4
- reconcile/external_resources/secrets_sync.py +4 -7
- reconcile/external_resources/state.py +26 -16
- reconcile/fleet_labeler/integration.py +1 -1
- reconcile/gabi_authorized_users.py +5 -2
- reconcile/gcp_image_mirror.py +2 -2
- reconcile/github_org.py +1 -1
- reconcile/github_owners.py +4 -0
- reconcile/gitlab_housekeeping.py +13 -15
- reconcile/gitlab_members.py +6 -12
- reconcile/gitlab_owners.py +15 -11
- reconcile/gitlab_permissions.py +8 -12
- reconcile/glitchtip_project_alerts/integration.py +3 -1
- reconcile/gql_definitions/acs/acs_instances.py +5 -5
- reconcile/gql_definitions/acs/acs_policies.py +5 -5
- reconcile/gql_definitions/acs/acs_rbac.py +5 -5
- reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py +5 -5
- reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py +5 -5
- reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py +5 -5
- reconcile/gql_definitions/app_sre_tekton_access_revalidation/roles.py +5 -5
- reconcile/gql_definitions/app_sre_tekton_access_revalidation/users.py +5 -5
- reconcile/gql_definitions/automated_actions/instance.py +46 -7
- reconcile/gql_definitions/aws_account_manager/aws_accounts.py +5 -5
- reconcile/gql_definitions/aws_ami_cleanup/aws_accounts.py +15 -5
- reconcile/gql_definitions/aws_cloudwatch_log_retention/aws_accounts.py +27 -66
- reconcile/gql_definitions/aws_saml_idp/aws_accounts.py +15 -5
- reconcile/gql_definitions/aws_saml_roles/aws_accounts.py +15 -5
- reconcile/gql_definitions/aws_saml_roles/roles.py +5 -5
- reconcile/gql_definitions/aws_version_sync/clusters.py +5 -5
- reconcile/gql_definitions/aws_version_sync/namespaces.py +5 -5
- reconcile/gql_definitions/change_owners/queries/change_types.py +5 -5
- reconcile/gql_definitions/change_owners/queries/self_service_roles.py +5 -5
- reconcile/gql_definitions/cluster_auth_rhidp/clusters.py +5 -5
- reconcile/gql_definitions/common/alerting_services_settings.py +5 -5
- reconcile/gql_definitions/common/app_code_component_repos.py +5 -5
- reconcile/gql_definitions/common/app_interface_custom_messages.py +5 -5
- reconcile/gql_definitions/common/app_interface_dms_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_repo_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_roles.py +5 -5
- reconcile/gql_definitions/common/app_interface_state_settings.py +5 -5
- reconcile/gql_definitions/common/app_interface_vault_settings.py +5 -5
- reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py +5 -5
- reconcile/gql_definitions/common/apps.py +5 -5
- reconcile/gql_definitions/common/aws_vpc_requests.py +15 -5
- reconcile/gql_definitions/common/aws_vpcs.py +5 -5
- reconcile/gql_definitions/common/clusters.py +5 -5
- reconcile/gql_definitions/common/clusters_minimal.py +5 -5
- reconcile/gql_definitions/common/clusters_with_dms.py +5 -5
- reconcile/gql_definitions/common/clusters_with_peering.py +5 -5
- reconcile/gql_definitions/common/github_orgs.py +5 -5
- reconcile/gql_definitions/common/jira_settings.py +5 -5
- reconcile/gql_definitions/common/jiralert_settings.py +5 -5
- reconcile/gql_definitions/common/ldap_settings.py +5 -5
- reconcile/gql_definitions/common/namespaces.py +5 -5
- reconcile/gql_definitions/common/namespaces_minimal.py +7 -5
- reconcile/gql_definitions/common/ocm_env_telemeter.py +5 -5
- reconcile/gql_definitions/common/ocm_environments.py +5 -5
- reconcile/gql_definitions/common/pagerduty_instances.py +5 -5
- reconcile/gql_definitions/common/pgp_reencryption_settings.py +5 -5
- reconcile/gql_definitions/common/pipeline_providers.py +5 -5
- reconcile/gql_definitions/common/quay_instances.py +5 -5
- reconcile/gql_definitions/common/quay_orgs.py +5 -5
- reconcile/gql_definitions/common/reserved_networks.py +5 -5
- reconcile/gql_definitions/common/rhcs_provider_settings.py +5 -5
- reconcile/gql_definitions/common/saas_files.py +5 -5
- reconcile/gql_definitions/common/saas_target_namespaces.py +5 -5
- reconcile/gql_definitions/common/saasherder_settings.py +5 -5
- reconcile/gql_definitions/common/slack_workspaces.py +5 -5
- reconcile/gql_definitions/common/smtp_client_settings.py +5 -5
- reconcile/gql_definitions/common/state_aws_account.py +5 -5
- reconcile/gql_definitions/common/users.py +5 -5
- reconcile/gql_definitions/common/users_with_paths.py +5 -5
- reconcile/gql_definitions/cost_report/app_names.py +5 -5
- reconcile/gql_definitions/cost_report/cost_namespaces.py +5 -5
- reconcile/gql_definitions/cost_report/settings.py +5 -5
- reconcile/gql_definitions/dashdotdb_slo/slo_documents_query.py +5 -5
- reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py +5 -5
- reconcile/gql_definitions/dynatrace_token_provider/token_specs.py +5 -5
- reconcile/gql_definitions/email_sender/apps.py +5 -5
- reconcile/gql_definitions/email_sender/emails.py +5 -5
- reconcile/gql_definitions/email_sender/users.py +5 -5
- reconcile/gql_definitions/endpoints_discovery/apps.py +5 -5
- reconcile/gql_definitions/external_resources/aws_accounts.py +5 -5
- reconcile/gql_definitions/external_resources/external_resources_modules.py +5 -5
- reconcile/gql_definitions/external_resources/external_resources_namespaces.py +33 -6
- reconcile/gql_definitions/external_resources/external_resources_settings.py +5 -5
- reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py +5 -5
- reconcile/gql_definitions/fleet_labeler/fleet_labels.py +5 -5
- reconcile/gql_definitions/fragments/aus_organization.py +5 -5
- reconcile/gql_definitions/fragments/aws_account_common.py +7 -5
- reconcile/gql_definitions/fragments/aws_account_managed.py +5 -5
- reconcile/gql_definitions/fragments/aws_account_sso.py +5 -5
- reconcile/gql_definitions/fragments/aws_infra_management_account.py +5 -5
- reconcile/gql_definitions/fragments/aws_organization.py +33 -0
- reconcile/gql_definitions/fragments/aws_vpc.py +5 -5
- reconcile/gql_definitions/fragments/aws_vpc_request.py +7 -5
- reconcile/gql_definitions/fragments/container_image_mirror.py +5 -5
- reconcile/gql_definitions/fragments/deploy_resources.py +5 -5
- reconcile/gql_definitions/fragments/disable.py +5 -5
- reconcile/gql_definitions/fragments/email_service.py +5 -5
- reconcile/gql_definitions/fragments/email_user.py +5 -5
- reconcile/gql_definitions/fragments/jumphost_common_fields.py +5 -5
- reconcile/gql_definitions/fragments/membership_source.py +5 -5
- reconcile/gql_definitions/fragments/minimal_ocm_organization.py +5 -5
- reconcile/gql_definitions/fragments/oc_connection_cluster.py +5 -5
- reconcile/gql_definitions/fragments/ocm_environment.py +5 -5
- reconcile/gql_definitions/fragments/pipeline_provider_retention.py +5 -5
- reconcile/gql_definitions/fragments/prometheus_instance.py +5 -5
- reconcile/gql_definitions/fragments/resource_limits_requirements.py +5 -5
- reconcile/gql_definitions/fragments/resource_requests_requirements.py +5 -5
- reconcile/gql_definitions/fragments/resource_values.py +5 -5
- reconcile/gql_definitions/fragments/saas_slo_document.py +5 -5
- reconcile/gql_definitions/fragments/saas_target_namespace.py +5 -5
- reconcile/gql_definitions/fragments/serviceaccount_token.py +5 -5
- reconcile/gql_definitions/fragments/terraform_state.py +5 -5
- reconcile/gql_definitions/fragments/upgrade_policy.py +5 -5
- reconcile/gql_definitions/fragments/user.py +5 -5
- reconcile/gql_definitions/fragments/vault_secret.py +5 -5
- reconcile/gql_definitions/gcp/gcp_docker_repos.py +5 -5
- reconcile/gql_definitions/gcp/gcp_projects.py +5 -5
- reconcile/gql_definitions/gitlab_members/gitlab_instances.py +5 -5
- reconcile/gql_definitions/gitlab_members/permissions.py +5 -5
- reconcile/gql_definitions/glitchtip/glitchtip_instance.py +5 -5
- reconcile/gql_definitions/glitchtip/glitchtip_project.py +5 -5
- reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py +5 -5
- reconcile/gql_definitions/integrations/integrations.py +5 -5
- reconcile/gql_definitions/introspection.json +724 -129
- reconcile/gql_definitions/jenkins_configs/jenkins_configs.py +5 -5
- reconcile/gql_definitions/jenkins_configs/jenkins_instances.py +5 -5
- reconcile/gql_definitions/jira/jira_servers.py +5 -5
- reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py +9 -5
- reconcile/gql_definitions/jumphosts/jumphosts.py +5 -5
- reconcile/gql_definitions/ldap_groups/roles.py +5 -5
- reconcile/gql_definitions/ldap_groups/settings.py +5 -5
- reconcile/gql_definitions/maintenance/maintenances.py +5 -5
- reconcile/gql_definitions/membershipsources/roles.py +5 -5
- reconcile/gql_definitions/ocm_labels/clusters.py +5 -5
- reconcile/gql_definitions/ocm_labels/organizations.py +5 -5
- reconcile/gql_definitions/openshift_cluster_bots/clusters.py +5 -5
- reconcile/gql_definitions/openshift_groups/managed_groups.py +5 -5
- reconcile/gql_definitions/openshift_groups/managed_roles.py +5 -5
- reconcile/gql_definitions/openshift_serviceaccount_tokens/tokens.py +5 -5
- reconcile/gql_definitions/quay_membership/quay_membership.py +5 -5
- reconcile/gql_definitions/rhcs/certs.py +25 -79
- reconcile/gql_definitions/rhcs/openshift_resource_rhcs_cert.py +43 -0
- reconcile/gql_definitions/rhidp/organizations.py +5 -5
- reconcile/gql_definitions/service_dependencies/jenkins_instance_fragment.py +5 -5
- reconcile/gql_definitions/service_dependencies/service_dependencies.py +5 -5
- reconcile/gql_definitions/sharding/aws_accounts.py +5 -5
- reconcile/gql_definitions/sharding/ocm_organization.py +5 -5
- reconcile/gql_definitions/skupper_network/site_controller_template.py +5 -5
- reconcile/gql_definitions/skupper_network/skupper_networks.py +5 -5
- reconcile/gql_definitions/slack_usergroups/clusters.py +5 -5
- reconcile/gql_definitions/slack_usergroups/permissions.py +5 -5
- reconcile/gql_definitions/slack_usergroups/users.py +5 -5
- reconcile/gql_definitions/slo_documents/slo_documents.py +5 -5
- reconcile/gql_definitions/status_board/status_board.py +5 -5
- reconcile/gql_definitions/statuspage/statuspages.py +5 -5
- reconcile/gql_definitions/templating/template_collection.py +5 -5
- reconcile/gql_definitions/templating/templates.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_dns/app_interface_cloudflare_dns_settings.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_dns/terraform_cloudflare_zones.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_accounts.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_resources/terraform_cloudflare_resources.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_users/app_interface_setting_cloudflare_and_vault.py +5 -5
- reconcile/gql_definitions/terraform_cloudflare_users/terraform_cloudflare_roles.py +5 -5
- reconcile/gql_definitions/terraform_init/aws_accounts.py +19 -5
- reconcile/gql_definitions/terraform_repo/terraform_repo.py +5 -5
- reconcile/gql_definitions/terraform_resources/database_access_manager.py +5 -5
- reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py +30 -6
- reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py +15 -5
- reconcile/gql_definitions/unleash_feature_toggles/feature_toggles.py +5 -5
- reconcile/gql_definitions/vault_instances/vault_instances.py +5 -5
- reconcile/gql_definitions/vault_policies/vault_policies.py +5 -5
- reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator.py +5 -5
- reconcile/gql_definitions/vpc_peerings_validator/vpc_peerings_validator_peered_cluster_fragment.py +5 -5
- reconcile/integrations_manager.py +3 -3
- reconcile/jenkins_worker_fleets.py +10 -8
- reconcile/jira_permissions_validator.py +237 -122
- reconcile/ldap_groups/integration.py +1 -1
- reconcile/ocm/types.py +35 -57
- reconcile/ocm_aws_infrastructure_access.py +1 -1
- reconcile/ocm_clusters.py +4 -4
- reconcile/ocm_labels/integration.py +3 -2
- reconcile/ocm_machine_pools.py +33 -27
- reconcile/openshift_base.py +113 -4
- reconcile/openshift_cluster_bots.py +1 -1
- reconcile/openshift_namespace_labels.py +1 -1
- reconcile/openshift_namespaces.py +97 -101
- reconcile/openshift_resources_base.py +6 -2
- reconcile/openshift_rhcs_certs.py +74 -37
- reconcile/openshift_rolebindings.py +7 -11
- reconcile/openshift_saas_deploy.py +4 -5
- reconcile/openshift_saas_deploy_change_tester.py +9 -7
- reconcile/openshift_saas_deploy_trigger_cleaner.py +3 -5
- reconcile/openshift_serviceaccount_tokens.py +2 -2
- reconcile/openshift_upgrade_watcher.py +4 -4
- reconcile/oum/labelset.py +5 -3
- reconcile/oum/models.py +1 -4
- reconcile/prometheus_rules_tester/integration.py +3 -3
- reconcile/quay_mirror.py +1 -1
- reconcile/queries.py +131 -0
- reconcile/rhidp/common.py +3 -5
- reconcile/rhidp/sso_client/base.py +16 -5
- reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py +1 -1
- reconcile/saas_auto_promotions_manager/subscriber.py +4 -3
- reconcile/skupper_network/integration.py +2 -2
- reconcile/slack_usergroups.py +35 -14
- reconcile/sql_query.py +1 -0
- reconcile/status_board.py +6 -6
- reconcile/statuspage/atlassian.py +7 -7
- reconcile/statuspage/integrations/maintenances.py +4 -3
- reconcile/statuspage/page.py +4 -9
- reconcile/statuspage/status.py +5 -8
- reconcile/templating/lib/rendering.py +3 -3
- reconcile/templating/renderer.py +2 -2
- reconcile/terraform_aws_route53.py +7 -1
- reconcile/terraform_cloudflare_dns.py +3 -3
- reconcile/terraform_cloudflare_resources.py +5 -5
- reconcile/terraform_cloudflare_users.py +3 -2
- reconcile/terraform_init/integration.py +187 -23
- reconcile/terraform_repo.py +16 -12
- reconcile/terraform_resources.py +6 -6
- reconcile/terraform_tgw_attachments.py +27 -19
- reconcile/terraform_users.py +7 -0
- reconcile/terraform_vpc_peerings.py +14 -3
- reconcile/terraform_vpc_resources/integration.py +10 -1
- reconcile/typed_queries/aws_account_tags.py +41 -0
- reconcile/typed_queries/cost_report/app_names.py +1 -1
- reconcile/typed_queries/cost_report/cost_namespaces.py +2 -2
- reconcile/typed_queries/saas_files.py +11 -11
- reconcile/typed_queries/status_board.py +2 -2
- reconcile/unleash_feature_toggles/integration.py +4 -2
- reconcile/utils/acs/base.py +6 -3
- reconcile/utils/acs/policies.py +2 -2
- reconcile/utils/aws_api.py +51 -20
- reconcile/utils/aws_api_typed/api.py +38 -9
- reconcile/utils/aws_api_typed/cloudformation.py +149 -0
- reconcile/utils/aws_api_typed/logs.py +73 -0
- reconcile/utils/aws_api_typed/organization.py +4 -2
- reconcile/utils/binary.py +7 -12
- reconcile/utils/datetime_util.py +67 -0
- reconcile/utils/deadmanssnitch_api.py +1 -1
- reconcile/utils/differ.py +2 -3
- reconcile/utils/early_exit_cache.py +11 -12
- reconcile/utils/expiration.py +7 -3
- reconcile/utils/filtering.py +1 -1
- reconcile/utils/gitlab_api.py +7 -5
- reconcile/utils/glitchtip/client.py +6 -2
- reconcile/utils/glitchtip/models.py +25 -28
- reconcile/utils/gql.py +4 -7
- reconcile/utils/helpers.py +1 -1
- reconcile/utils/instrumented_wrappers.py +1 -1
- reconcile/utils/internal_groups/client.py +2 -2
- reconcile/utils/internal_groups/models.py +8 -17
- reconcile/utils/jinja2/utils.py +6 -101
- reconcile/utils/jira_client.py +82 -63
- reconcile/utils/jjb_client.py +7 -10
- reconcile/utils/jobcontroller/controller.py +2 -2
- reconcile/utils/jobcontroller/models.py +17 -1
- reconcile/utils/json.py +43 -1
- reconcile/utils/membershipsources/app_interface_resolver.py +4 -2
- reconcile/utils/membershipsources/models.py +16 -23
- reconcile/utils/membershipsources/resolver.py +4 -2
- reconcile/utils/merge_request_manager/merge_request_manager.py +4 -4
- reconcile/utils/merge_request_manager/parser.py +6 -6
- reconcile/utils/metrics.py +5 -5
- reconcile/utils/models.py +304 -82
- reconcile/utils/mr/app_interface_reporter.py +2 -2
- reconcile/utils/mr/notificator.py +3 -3
- reconcile/utils/mr/update_access_report_base.py +3 -4
- reconcile/utils/mr/user_maintenance.py +3 -2
- reconcile/utils/oc.py +246 -201
- reconcile/utils/oc_filters.py +3 -3
- reconcile/utils/ocm/addons.py +0 -1
- reconcile/utils/ocm/base.py +17 -20
- reconcile/utils/ocm/cluster_groups.py +1 -1
- reconcile/utils/ocm/identity_providers.py +2 -2
- reconcile/utils/ocm/labels.py +1 -1
- reconcile/utils/ocm/products.py +8 -8
- reconcile/utils/ocm/search_filters.py +3 -6
- reconcile/utils/ocm/service_log.py +4 -6
- reconcile/utils/ocm/sre_capability_labels.py +20 -13
- reconcile/utils/openshift_resource.py +8 -3
- reconcile/utils/pagerduty_api.py +10 -7
- reconcile/utils/promotion_state.py +6 -11
- reconcile/utils/raw_github_api.py +1 -1
- reconcile/utils/rhcsv2_certs.py +86 -23
- reconcile/utils/rosa/session.py +16 -0
- reconcile/utils/runtime/integration.py +2 -3
- reconcile/utils/runtime/runner.py +2 -2
- reconcile/utils/saasherder/interfaces.py +13 -20
- reconcile/utils/saasherder/models.py +23 -20
- reconcile/utils/saasherder/saasherder.py +50 -27
- reconcile/utils/slack_api.py +2 -2
- reconcile/utils/sloth.py +171 -2
- reconcile/utils/structs.py +1 -1
- reconcile/utils/terraform_client.py +5 -4
- reconcile/utils/terrascript_aws_client.py +134 -74
- reconcile/utils/unleash/server.py +2 -8
- reconcile/utils/vault.py +5 -12
- reconcile/utils/vcs.py +8 -8
- reconcile/vault_replication.py +107 -42
- tools/app_interface_reporter.py +4 -4
- tools/cli_commands/cost_report/cost_management_api.py +3 -3
- tools/cli_commands/cost_report/view.py +7 -6
- tools/cli_commands/erv2.py +1 -1
- tools/qontract_cli.py +28 -17
- tools/template_validation.py +3 -1
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev430.dist-info}/WHEEL +0 -0
- {qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev430.dist-info}/entry_points.txt +0 -0
|
@@ -74,7 +74,7 @@ class CostManagementApi(ApiBase):
|
|
|
74
74
|
timeout=self.read_timeout,
|
|
75
75
|
)
|
|
76
76
|
response.raise_for_status()
|
|
77
|
-
return AwsReportCostResponse.
|
|
77
|
+
return AwsReportCostResponse.model_validate(response.json())
|
|
78
78
|
|
|
79
79
|
def get_openshift_costs_report(
|
|
80
80
|
self,
|
|
@@ -97,7 +97,7 @@ class CostManagementApi(ApiBase):
|
|
|
97
97
|
timeout=self.read_timeout,
|
|
98
98
|
)
|
|
99
99
|
response.raise_for_status()
|
|
100
|
-
return OpenShiftReportCostResponse.
|
|
100
|
+
return OpenShiftReportCostResponse.model_validate(response.json())
|
|
101
101
|
|
|
102
102
|
def get_openshift_cost_optimization_report(
|
|
103
103
|
self,
|
|
@@ -120,7 +120,7 @@ class CostManagementApi(ApiBase):
|
|
|
120
120
|
response.raise_for_status()
|
|
121
121
|
|
|
122
122
|
data = self._get_paginated(response)
|
|
123
|
-
return OpenShiftCostOptimizationReportResponse.
|
|
123
|
+
return OpenShiftCostOptimizationReportResponse.model_validate(data)
|
|
124
124
|
|
|
125
125
|
def _get_paginated(
|
|
126
126
|
self,
|
|
@@ -4,6 +4,7 @@ from typing import Any
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel
|
|
6
6
|
|
|
7
|
+
from reconcile.utils.json import json_dumps
|
|
7
8
|
from tools.cli_commands.cost_report.model import OptimizationReport, Report
|
|
8
9
|
|
|
9
10
|
LAYOUT = """\
|
|
@@ -244,7 +245,7 @@ def render_summary(
|
|
|
244
245
|
return template.format(
|
|
245
246
|
date=get_date(reports),
|
|
246
247
|
total_cost=format_cost_value(total_cost),
|
|
247
|
-
json_table=json_table
|
|
248
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
248
249
|
)
|
|
249
250
|
|
|
250
251
|
|
|
@@ -274,7 +275,7 @@ def render_month_over_month_change(reports: Mapping[str, Report]) -> str:
|
|
|
274
275
|
)
|
|
275
276
|
return MONTH_OVER_MONTH_CHANGE.format(
|
|
276
277
|
date=get_date(reports),
|
|
277
|
-
json_table=json_table
|
|
278
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
278
279
|
)
|
|
279
280
|
|
|
280
281
|
|
|
@@ -304,7 +305,7 @@ def render_aws_services_cost(
|
|
|
304
305
|
items_total=format_cost_value(report.items_total),
|
|
305
306
|
items_delta_value=format_delta_value(report.items_delta_value),
|
|
306
307
|
items_delta_percent=format_delta_percent(report.items_delta_percent),
|
|
307
|
-
json_table=json_table
|
|
308
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
308
309
|
)
|
|
309
310
|
|
|
310
311
|
|
|
@@ -316,7 +317,7 @@ def render_openshift_workloads_cost(
|
|
|
316
317
|
items_total=format_cost_value(report.items_total),
|
|
317
318
|
items_delta_value=format_delta_value(report.items_delta_value),
|
|
318
319
|
items_delta_percent=format_delta_percent(report.items_delta_percent),
|
|
319
|
-
json_table=json_table
|
|
320
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
320
321
|
)
|
|
321
322
|
|
|
322
323
|
|
|
@@ -362,7 +363,7 @@ def render_child_apps_cost(report: Report) -> str:
|
|
|
362
363
|
)
|
|
363
364
|
return CHILD_APPS_COST.format(
|
|
364
365
|
child_apps_total=format_cost_value(report.child_apps_total),
|
|
365
|
-
json_table=json_table
|
|
366
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
366
367
|
)
|
|
367
368
|
|
|
368
369
|
|
|
@@ -509,7 +510,7 @@ def render_optimization(
|
|
|
509
510
|
)
|
|
510
511
|
return OPTIMIZATION.format(
|
|
511
512
|
app_name=report.app_name,
|
|
512
|
-
json_table=json_table
|
|
513
|
+
json_table=json_dumps(json_table, indent=2, mode="python"),
|
|
513
514
|
)
|
|
514
515
|
|
|
515
516
|
|
tools/cli_commands/erv2.py
CHANGED
|
@@ -133,7 +133,7 @@ class Erv2Cli:
|
|
|
133
133
|
|
|
134
134
|
@property
|
|
135
135
|
def input_data(self) -> str:
|
|
136
|
-
return self._resource.
|
|
136
|
+
return self._resource.export(exclude={"data": {FLAG_RESOURCE_MANAGED_BY_ERV2}})
|
|
137
137
|
|
|
138
138
|
@property
|
|
139
139
|
def image(self) -> str:
|
tools/qontract_cli.py
CHANGED
|
@@ -13,7 +13,6 @@ import tempfile
|
|
|
13
13
|
import textwrap
|
|
14
14
|
from collections import defaultdict
|
|
15
15
|
from datetime import (
|
|
16
|
-
UTC,
|
|
17
16
|
datetime,
|
|
18
17
|
timedelta,
|
|
19
18
|
)
|
|
@@ -122,6 +121,7 @@ from reconcile.utils.binary import (
|
|
|
122
121
|
binary,
|
|
123
122
|
binary_version,
|
|
124
123
|
)
|
|
124
|
+
from reconcile.utils.datetime_util import from_utc_iso_format, utc_now
|
|
125
125
|
from reconcile.utils.early_exit_cache import (
|
|
126
126
|
CacheKey,
|
|
127
127
|
CacheKeyWithDigest,
|
|
@@ -141,6 +141,7 @@ from reconcile.utils.gitlab_api import (
|
|
|
141
141
|
)
|
|
142
142
|
from reconcile.utils.glitchtip.client import GlitchtipClient
|
|
143
143
|
from reconcile.utils.gql import GqlApiSingleton
|
|
144
|
+
from reconcile.utils.json import json_dumps
|
|
144
145
|
from reconcile.utils.keycloak import (
|
|
145
146
|
KeycloakAPI,
|
|
146
147
|
SSOClient,
|
|
@@ -417,8 +418,8 @@ def get_upgrade_policies_data(
|
|
|
417
418
|
upgrade_next_run = None
|
|
418
419
|
upgrade_emoji = "💫"
|
|
419
420
|
if upgrade_next_run:
|
|
420
|
-
dt =
|
|
421
|
-
now =
|
|
421
|
+
dt = from_utc_iso_format(upgrade_next_run)
|
|
422
|
+
now = utc_now()
|
|
422
423
|
if dt > now:
|
|
423
424
|
upgrade_emoji = "⏰"
|
|
424
425
|
hours_ago = (now - dt).total_seconds() / 3600
|
|
@@ -841,7 +842,7 @@ def alert_report(
|
|
|
841
842
|
)
|
|
842
843
|
sys.exit(1)
|
|
843
844
|
|
|
844
|
-
now =
|
|
845
|
+
now = utc_now()
|
|
845
846
|
from_timestamp = int((now - timedelta(days=days)).timestamp())
|
|
846
847
|
to_timestamp = int(now.timestamp())
|
|
847
848
|
|
|
@@ -1566,7 +1567,7 @@ def rosa_create_cluster_command(ctx: click.Context, cluster_name: str) -> None:
|
|
|
1566
1567
|
billing_account = account.billing_account.uid
|
|
1567
1568
|
else:
|
|
1568
1569
|
with AWSApi(
|
|
1569
|
-
1, [account.
|
|
1570
|
+
1, [account.model_dump(by_alias=True)], settings=settings, init_users=False
|
|
1570
1571
|
) as aws_api:
|
|
1571
1572
|
billing_account = aws_api.get_organization_billing_account(account.name)
|
|
1572
1573
|
|
|
@@ -1750,7 +1751,7 @@ def aws_terraform_resources(ctx: click.Context) -> None:
|
|
|
1750
1751
|
for ns_info in namespaces:
|
|
1751
1752
|
specs = (
|
|
1752
1753
|
get_external_resource_specs(
|
|
1753
|
-
ns_info.
|
|
1754
|
+
ns_info.model_dump(by_alias=True), provision_provider=PROVIDER_AWS
|
|
1754
1755
|
)
|
|
1755
1756
|
or []
|
|
1756
1757
|
)
|
|
@@ -1808,7 +1809,7 @@ def rds(ctx: click.Context) -> None:
|
|
|
1808
1809
|
specs = [
|
|
1809
1810
|
s
|
|
1810
1811
|
for s in get_external_resource_specs(
|
|
1811
|
-
namespace.
|
|
1812
|
+
namespace.model_dump(by_alias=True), provision_provider=PROVIDER_AWS
|
|
1812
1813
|
)
|
|
1813
1814
|
if s.provider == "rds"
|
|
1814
1815
|
]
|
|
@@ -2274,7 +2275,7 @@ def app_interface_merge_queue(ctx: click.Context) -> None:
|
|
|
2274
2275
|
"labels",
|
|
2275
2276
|
]
|
|
2276
2277
|
merge_queue_data = []
|
|
2277
|
-
now =
|
|
2278
|
+
now = utc_now()
|
|
2278
2279
|
for mr in merge_requests:
|
|
2279
2280
|
item = {
|
|
2280
2281
|
"id": f"[{mr['mr'].iid}]({mr['mr'].web_url})",
|
|
@@ -2283,7 +2284,7 @@ def app_interface_merge_queue(ctx: click.Context) -> None:
|
|
|
2283
2284
|
+ 1, # adding 1 for human readability
|
|
2284
2285
|
"approved_at": mr["approved_at"],
|
|
2285
2286
|
"approved_span_minutes": (
|
|
2286
|
-
now -
|
|
2287
|
+
now - from_utc_iso_format(mr["approved_at"])
|
|
2287
2288
|
).total_seconds()
|
|
2288
2289
|
/ 60,
|
|
2289
2290
|
"approved_by": mr["approved_by"],
|
|
@@ -2697,7 +2698,7 @@ def ec2_jenkins_workers(
|
|
|
2697
2698
|
client = boto3.client("autoscaling")
|
|
2698
2699
|
ec2 = boto3.resource("ec2")
|
|
2699
2700
|
results = []
|
|
2700
|
-
now =
|
|
2701
|
+
now = utc_now()
|
|
2701
2702
|
columns = [
|
|
2702
2703
|
"type",
|
|
2703
2704
|
"id",
|
|
@@ -2957,11 +2958,11 @@ def osd_component_versions(ctx: click.Context) -> None:
|
|
|
2957
2958
|
@get.command()
|
|
2958
2959
|
@click.pass_context
|
|
2959
2960
|
def maintenances(ctx: click.Context) -> None:
|
|
2960
|
-
now =
|
|
2961
|
+
now = utc_now()
|
|
2961
2962
|
maintenances = maintenances_gql.query(gql.get_api().query).maintenances or []
|
|
2962
2963
|
data = [
|
|
2963
2964
|
{
|
|
2964
|
-
**m.
|
|
2965
|
+
**m.model_dump(),
|
|
2965
2966
|
"services": ", ".join(a.name for a in m.affected_services),
|
|
2966
2967
|
}
|
|
2967
2968
|
for m in maintenances
|
|
@@ -4099,7 +4100,9 @@ def sre_checkpoint_metadata(
|
|
|
4099
4100
|
) -> None:
|
|
4100
4101
|
"""Check an app path for checkpoint-related metadata."""
|
|
4101
4102
|
data = queries.get_app_metadata(app_path)
|
|
4102
|
-
|
|
4103
|
+
vault_settings = get_app_interface_vault_settings()
|
|
4104
|
+
secret_reader = create_secret_reader(use_vault=vault_settings.vault)
|
|
4105
|
+
|
|
4103
4106
|
app = data[0]
|
|
4104
4107
|
|
|
4105
4108
|
if jiradef:
|
|
@@ -4112,7 +4115,14 @@ def sre_checkpoint_metadata(
|
|
|
4112
4115
|
# Overrides for easier testing
|
|
4113
4116
|
if jiraboard:
|
|
4114
4117
|
board["name"] = jiraboard
|
|
4115
|
-
report_invalid_metadata(
|
|
4118
|
+
report_invalid_metadata(
|
|
4119
|
+
app=app,
|
|
4120
|
+
path=app_path,
|
|
4121
|
+
board=board,
|
|
4122
|
+
secret_reader=secret_reader,
|
|
4123
|
+
parent=parent_ticket,
|
|
4124
|
+
dry_run=dry_run,
|
|
4125
|
+
)
|
|
4116
4126
|
|
|
4117
4127
|
|
|
4118
4128
|
@root.command()
|
|
@@ -4289,7 +4299,7 @@ def create(
|
|
|
4289
4299
|
bg="red",
|
|
4290
4300
|
fg="white",
|
|
4291
4301
|
)
|
|
4292
|
-
print(sso_client
|
|
4302
|
+
print(json_dumps(sso_client, indent=2))
|
|
4293
4303
|
|
|
4294
4304
|
|
|
4295
4305
|
@sso_client.command()
|
|
@@ -4841,11 +4851,12 @@ def top_talkers(ctx: click.Context, top: int) -> None:
|
|
|
4841
4851
|
assert project.organization # make mypy happy
|
|
4842
4852
|
assert project.pk # make mypy happy
|
|
4843
4853
|
|
|
4854
|
+
now = utc_now()
|
|
4844
4855
|
stat = client.project_statistics(
|
|
4845
4856
|
organization_slug=project.organization.slug,
|
|
4846
4857
|
project_pk=project.pk,
|
|
4847
|
-
start=
|
|
4848
|
-
end=
|
|
4858
|
+
start=now - timedelta(hours=24),
|
|
4859
|
+
end=now,
|
|
4849
4860
|
)
|
|
4850
4861
|
stats.append((project, stat))
|
|
4851
4862
|
|
tools/template_validation.py
CHANGED
|
@@ -67,7 +67,9 @@ def main(templates: tuple[str]) -> None:
|
|
|
67
67
|
tests.append(test_yaml)
|
|
68
68
|
|
|
69
69
|
template_raw["templateTest"] = tests
|
|
70
|
-
|
|
70
|
+
data = data_default_none(TemplateV1, template_raw)
|
|
71
|
+
assert isinstance(data, dict)
|
|
72
|
+
template: TemplateV1 = TemplateV1(**data)
|
|
71
73
|
|
|
72
74
|
# templates_to_validate = {}
|
|
73
75
|
for test in template.template_test:
|
{qontract_reconcile-0.10.2.dev361.dist-info → qontract_reconcile-0.10.2.dev430.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|