[master 03/10] Add enable flag to RepoData object

Brian C. Lane bcl at redhat.com
Tue Mar 12 00:13:30 UTC 2013


From: "Brian C. Lane" <bcl at redhat.com>

In order for the UI to keep track of which repos have been added by the
user, kickstart or addons we need to know if it is enabled.

User and ks repos are enabled by default. Addons are disabled by
default.
---
 pyanaconda/kickstart.py            | 12 ++++++++++++
 pyanaconda/packaging/__init__.py   | 14 +++++++++++---
 pyanaconda/packaging/yumpayload.py |  2 +-
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index b41d198..114d342 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -1139,6 +1139,17 @@ class RaidData(commands.raid.F18_RaidData):
                                      parents=request)
             storage.createDevice(luksdev)
 
+class RepoData(commands.repo.F15_RepoData):
+    def __init__(self, *args, **kwargs):
+        """ Add enabled kwarg
+
+            :param enabled: The repo has been enabled
+            :type enabled: bool
+        """
+        self.enabled = kwargs.pop("enabled", True)
+
+        commands.repo.F15_RepoData.__init__(self, *args, **kwargs)
+
 class RootPw(commands.rootpw.F18_RootPw):
     def execute(self, storage, ksdata, instClass, users):
         algo = getPassAlgo(ksdata.authconfig.authconfig)
@@ -1402,6 +1413,7 @@ dataMap = {
         "LogVolData": LogVolData,
         "PartData": PartitionData,
         "RaidData": RaidData,
+        "RepoData": RepoData,
         "VolGroupData": VolGroupData,
 }
 
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index 6fe79d2..aacb84f 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -152,7 +152,11 @@ class Payload(object):
 
     def isRepoEnabled(self, repo_id):
         """ Return True if repo is enabled. """
-        raise NotImplementedError()
+        repo = self.getAddOnRepo(repo_id)
+        if repo:
+            return repo.enabled
+        else:
+            return False
 
     def getAddOnRepo(self, repo_id):
         """ Return a ksdata Repo instance matching the specified repo id. """
@@ -223,10 +227,14 @@ class Payload(object):
             repos.pop(idx)
 
     def enableRepo(self, repo_id):
-        raise NotImplementedError()
+        repo = self.getAddOnRepo(repo_id)
+        if repo:
+            repo.enabled = True
 
     def disableRepo(self, repo_id):
-        raise NotImplementedError()
+        repo = self.getAddOnRepo(repo_id)
+        if repo:
+            repo.enabled = False
 
     ###
     ### METHODS FOR WORKING WITH ENVIRONMENTS
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index be0e730..342f2c3 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -422,7 +422,7 @@ reposdir=%s
         try:
             return self.getRepo(repo_id).enabled
         except Exception:
-            return False
+            return super(YumPayload, self).isRepoEnabled(repo_id)
 
     def updateBaseRepo(self, fallback=True, root=None, checkmount=True):
         """ Update the base repo based on self.data.method.
-- 
1.8.1.2



More information about the anaconda-patches mailing list