-
Sub-task
-
Resolution: Done
-
Undefined
-
None
-
None
-
None
-
1
-
False
-
None
-
False
-
-
Approach Outline:
1. I ran the following query to get a mapping of all of the OpenShift sources that were linked to an infrastructure source and their schema:
SELECT array_agg(provider.uuid) as ocp_source_uuids, ac.schema_name FROM public.api_providerinfrastructuremap as provider_map INNER JOIN public.api_provider as provider ON provider_map.id = provider.infrastructure_id INNER JOIN public.api_customer as ac ON provider.customer_id = ac.id WHERE provider.active = TRUE AND provider.paused = FALSE GROUP BY ac.schema_name;
2. I took the response and wrote a python script to convert it to a json file that had schema & ocp source uuids.
3. I then wrote a separate python script that looped through that mapping and populated the following sql:
WITH cte_cost_model_currency as (
SELECT
cost_model_mapping.provider_uuid as ocp_source_uuid,
currency as cost_model_currency
FROM {{schema{}}}.cost_model_map as cost_model_mapping
INNER JOIN schema.cost_model as cost_model
ON cost_model.uuid = cost_model_mapping.cost_model_id
WHERE ((cost_model.distribution_info::jsonb ->> 'worker_cost')::boolean IS TRUE
OR (cost_model.distribution_info::jsonb ->> 'platform_cost')::boolean IS TRUE)
AND cast(cost_model_mapping.provider_uuid as varchar) IN {{cleaned_ocp_sources{}}}
),
cte_currency_match as (
SELECT
raw_currency as infra_currency,
cmc.ocp_source_uuid,
max(cmc.cost_model_currency) as cost_model_currency,
raw_currency = MAX(cmc.cost_model_currency) AS currency_match
FROM {{schema{}}}.reporting_ocpusagelineitem_daily_summary as lids
INNER JOIN cte_cost_model_currency as cmc
ON cmc.ocp_source_uuid = lids.source_uuid
AND usage_start >= '2024-08-01'
GROUP BY cmc.ocp_source_uuid, lids.raw_currency
)
SELECT * FROM cte_currency_match WHERE currency_match = False;
The results will be in a private comment below.