[PATCH 1/2] Payloads: make DEFAULT_REPOS a part of the interface.

Ales Kozumplik akozumpl at redhat.com
Tue Mar 11 14:44:18 UTC 2014


From: Ales Kozumplik <ales at redhat.com>

Source spoke knows about its existence since 069cb536. The change makes
the DNFPayload work with the spoke too.
---
 pyanaconda/packaging/__init__.py   | 2 ++
 pyanaconda/packaging/dnfpayload.py | 3 +--
 pyanaconda/packaging/yumpayload.py | 7 ++-----
 pyanaconda/ui/gui/spokes/source.py | 5 ++++-
 4 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index c85bbd1..c6ed3d4 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -637,6 +637,8 @@ class ArchivePayload(ImagePayload):
 class PackagePayload(Payload):
     """ A PackagePayload installs a set of packages onto the target system. """
 
+    DEFAULT_REPOS = [productName.lower(), "rawhide"]
+
     def __init__(self, data):
         if self.__class__ is PackagePayload:
             raise TypeError("PackagePayload is an abstract class")
diff --git a/pyanaconda/packaging/dnfpayload.py b/pyanaconda/packaging/dnfpayload.py
index 25b8dbc..50d9df2 100644
--- a/pyanaconda/packaging/dnfpayload.py
+++ b/pyanaconda/packaging/dnfpayload.py
@@ -50,7 +50,6 @@ except ImportError as e:
     dnf = None
     rpm = None
 
-DEFAULT_REPOS = [constants.productName.lower(), "rawhide"]
 DNF_CACHE_DIR = '/tmp/dnf.cache'
 DNF_PACKAGE_CACHE_DIR_SUFFIX = 'dnf.package.cache'
 DOWNLOAD_MPOINTS = {'/tmp',
@@ -335,7 +334,7 @@ class DNFPayload(packaging.PackagePayload):
     @property
     def baseRepo(self):
         # is any locking needed here as in the yumpayload?
-        repo_names = [constants.BASE_REPO_NAME] + DEFAULT_REPOS
+        repo_names = [constants.BASE_REPO_NAME] + self.DEFAULT_REPOS
         for repo in self._base.repos.iter_enabled():
             if repo.id in repo_names:
                 return repo.id
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index b864f12..b13edba 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -70,7 +70,7 @@ from pyanaconda import iutil
 from pyanaconda.iutil import ProxyString, ProxyStringError
 from pyanaconda.i18n import _
 from pyanaconda.nm import nm_is_connected
-from pyanaconda.product import productName, isFinal
+from pyanaconda.product import isFinal
 from blivet.size import Size
 import blivet.util
 import blivet.arch
@@ -86,8 +86,7 @@ from pyanaconda.localization import langcode_matches_locale
 from pykickstart.constants import GROUP_ALL, GROUP_DEFAULT, KS_MISSING_IGNORE
 
 YUM_PLUGINS = ["fastestmirror", "langpacks"]
-DEFAULT_REPOS = [productName.lower(), "rawhide"]
-BASE_REPO_NAMES = [BASE_REPO_NAME] + DEFAULT_REPOS
+BASE_REPO_NAMES = [BASE_REPO_NAME] + PackagePayload.DEFAULT_REPOS
 
 import inspect
 import threading
@@ -166,8 +165,6 @@ class YumPayload(PackagePayload):
 
         PackagePayload.__init__(self, data)
 
-        self.default_repos = [productName.lower(), "rawhide"]
-
         self._root_dir = "/tmp/yum.root"
         self._repos_dir = "/etc/yum.repos.d,/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anaconda.repos.d"
         self._yum = None
diff --git a/pyanaconda/ui/gui/spokes/source.py b/pyanaconda/ui/gui/spokes/source.py
index 477013d..1790439 100644
--- a/pyanaconda/ui/gui/spokes/source.py
+++ b/pyanaconda/ui/gui/spokes/source.py
@@ -1072,7 +1072,10 @@ class SourceSpoke(NormalSpoke):
         if [c for c in name if c not in allowed_chars]:
             return N_("Invalid repository name.")
 
-        if name in [r for r in self.payload.repos if r not in self.payload.addOns] + [constants.BASE_REPO_NAME] + self.payload.default_repos:
+        cnames = [constants.BASE_REPO_NAME] + \
+                 self.payload.DEFAULT_REPOS + \
+                 [r for r in self.payload.repos if r not in self.payload.addOns]
+        if name in cnames:
             return N_("Repository name conflicts with internal repository name.")
         return None
 
-- 
1.8.5.3



More information about the anaconda-patches mailing list