-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
0026-Compute-template-RPMs-needed-spaces.patch
93 lines (83 loc) · 3.8 KB
/
0026-Compute-template-RPMs-needed-spaces.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
From ebb7b214ced9d96e7bcef782ac05df5cb4ac74b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Pierret=20=28fepitre=29?=
<frederic.pierret@qubes-os.org>
Date: Mon, 20 Apr 2020 14:57:50 +0200
Subject: [PATCH] Compute template RPMs needed spaces
---
.../modules/payloads/payload/dnf/dnf_interface.py | 4 ++++
.../modules/payloads/payload/dnf/dnf_manager.py | 12 ++++++++++++
pyanaconda/payload/dnf/payload.py | 6 ++++++
pyanaconda/ui/lib/space.py | 7 ++++++-
4 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/pyanaconda/modules/payloads/payload/dnf/dnf_interface.py b/pyanaconda/modules/payloads/payload/dnf/dnf_interface.py
index 2d8be4fb56..948ec6ae68 100644
--- a/pyanaconda/modules/payloads/payload/dnf/dnf_interface.py
+++ b/pyanaconda/modules/payloads/payload/dnf/dnf_interface.py
@@ -125,6 +125,10 @@ class DNFInterface(PayloadBaseInterface):
"""
return self.implementation.packages_kickstarted
+ @property
+ def QubesTemplatesSize(self) -> UInt64:
+ return self.implementation._dnf_manager.get_qubes_templates_size()
+
def GetAvailableRepositories(self) -> List[Str]:
"""Get a list of available repositories.
diff --git a/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py b/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
index 79122ef0fa..c9948a6216 100644
--- a/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
+++ b/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py
@@ -1045,3 +1045,15 @@ class DNFManager(object):
continue
return ""
+
+ def get_qubes_templates_size(self):
+ # get all available Qubes templates in repos
+ available_templates = self._base.sack.query().available() \
+ .filter(name__glob="qubes-template-*")
+ templates_size = 0
+ for template in available_templates:
+ templates_size += template.downloadsize
+ log.debug("[Qubes OS]: Size of %s: %s", (template.name, template.downloadsize))
+
+ log.debug("[Qubes OS]: Total templates RPMs size: %s", templates_size)
+ return templates_size
diff --git a/pyanaconda/payload/dnf/payload.py b/pyanaconda/payload/dnf/payload.py
index 0d55a69fd2..68f16685d0 100644
--- a/pyanaconda/payload/dnf/payload.py
+++ b/pyanaconda/payload/dnf/payload.py
@@ -312,6 +312,12 @@ class DNFPayload(MigratedDBusPayload):
log.debug("Payload won't be restarted, repositories are still available.")
return True
+ @property
+ def qubes_templates_size(self):
+ """Return all templates size via dbus proxy"""
+ from blivet.size import Size
+ return Size(self.proxy.QubesTemplatesSize)
+
@property
def software_validation_required(self):
"""Is it necessary to validate the software selection?"""
diff --git a/pyanaconda/ui/lib/space.py b/pyanaconda/ui/lib/space.py
index 227ab1aebf..01d4a84eaf 100644
--- a/pyanaconda/ui/lib/space.py
+++ b/pyanaconda/ui/lib/space.py
@@ -56,6 +56,10 @@ class FileSystemSpaceChecker(object):
"""Calculate the needed space."""
return self.payload.space_required
+ def _calculate_needed_space_templates(self):
+ """Calculate the needed space for Qubes templates RPM."""
+ return self.payload.qubes_templates_size
+
def _calculate_deficit(self, needed):
"""Calculate the deficit.
@@ -89,7 +93,8 @@ class FileSystemSpaceChecker(object):
in the info bar at the bottom of a Hub.
"""
free = self._calculate_free_space()
- needed = self._calculate_needed_space()
+ qubes = self._calculate_needed_space_templates()
+ needed = self._calculate_needed_space() + qubes
log.info("fs space: %s needed: %s", free, needed)
if free > needed:
--
2.45.2