Merge ~r00ta/maas:lp-2058377-fix-ha-architectures into maas:master
Status: | Merged |
---|---|
Approved by: | Jacopo Rota |
Approved revision: | fab53ebca4a870a481dc772288823122ddf38a61 |
Merge reported by: | MAAS Lander |
Merged at revision: | not available |
Proposed branch: | ~r00ta/maas:lp-2058377-fix-ha-architectures |
Merge into: | maas:master |
Diff against target: |
181 lines (+110/-5) 3 files modified
src/maasserver/models/bootresource.py (+22/-2) src/maasserver/testing/factory.py (+3/-3) src/maasserver/tests/test_bootresources.py (+85/-0) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
MAAS Lander | Approve | ||
Alexsander de Souza | Approve | ||
Review via email:
|
Commit message
fix: lp-2058377. Fix get_hwe_kernels, get_latest_
Description of the change
Currently, the query
resource_sets = self.sets.
files_
files_
sync_
)
is calculating the wrong sum for the files size because the `Sum("files_
The original query in 3.4 was
>>> print(b.
... files_count=
... files_size=
... files_total_
... ).query)
SELECT
"maasserver_
"maasserver_
"maasserver_
"maasserver_
"maasserver_
"maasserver_
COUNT(
"maasserver
) AS "files_count",
SUM("
SUM(
"maasserver
) AS "files_total_size"
FROM
"maasserver_
LEFT OUTER JOIN "maasserver_
"maasserver
)
LEFT OUTER JOIN "maasserver_
"maasserver
)
WHERE
"maasserver_
GROUP BY
"maasserver_
ORDER BY
"maasserver_
and in the case of multiple resource sets it would have produced (on a 3.4 env)
id | created | updated | resource_id | version | label | files_count | files_size | files_total_size
----+--
21 | 2024-03-20 09:22:53.089051+00 | 2024-03-20 09:22:53.109408+00 | 9 | 20240319 | candidate | 3 | 11563368 | 592121637
15 | 2024-03-20 06:43:25.761506+00 | 2024-03-20 08:58:58.392482+00 | 9 | 20240318 | stable | 3 | 592011128 | 592011128
The proposed query leverages on a subquery to sum the files sizes in the resource set using a subquery. The resulting query is
SELECT
"maasserver_
"maasserver_
"maasserver_
"maasserver_
"maasserver_
"maasserver_
COUNT(
DISTINCT "maasserver_
) AS "files_count",
(
SELECT
SUM(
FROM
"
WHERE
U0.
GROUP BY
U0.
LIMIT
1
) AS "files_size",
SUM(
"maasserver
) AS "sync_size"
FROM
"maasserver_
LEFT OUTER JOIN "maasserver_
"maasserver
)
LEFT OUTER JOIN "maasserver_
"maasserver
)
WHERE
"maasserver_
GROUP BY
"maasserver_
ORDER BY
"maasserver_
and it would produce (on a 3.5 env)
id | created | updated | resource_id | version | label | files_count | files_size | sync_size
----+--
20 | 2024-03-20 09:27:41.751309+00 | 2024-03-20 09:27:41.770736+00 | 8 | 20240318 | stable | 3 | 592105406 | 11528040
14 | 2024-03-20 08:04:51.163702+00 | 2024-03-20 09:27:01.581783+00 | 8 | 20240319 | candidate | 3 | 592215851 | 1184431702
(2 rows)
+1