[et-mgmt-tools] [PATCH] 'cobbler reposync foo' now updates repo 'foo' whether marked to keep updated or not.

Ben Riggs rigg0022 at umn.edu
Thu Sep 6 15:54:45 UTC 2007


---
 cobbler/action_reposync.py |   35 +++++++++++++++++------------------
 cobbler/api.py             |    4 ++--
 cobbler/cobbler.py         |    2 +-
 3 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/cobbler/action_reposync.py b/cobbler/action_reposync.py
index 8c7e242..c8446c5 100644
--- a/cobbler/action_reposync.py
+++ b/cobbler/action_reposync.py
@@ -38,25 +38,34 @@ class RepoSync:
         """
         Constructor
         """
-        self.verbose  = True
-        self.config   = config
-        self.distros  = config.distros()
-        self.profiles = config.profiles()
-        self.systems  = config.systems()
-        self.settings = config.settings()
-        self.repos    = config.repos()
+        self.verbose   = True
+        self.config    = config
+        self.distros   = config.distros()
+        self.profiles  = config.profiles()
+        self.systems   = config.systems()
+        self.settings  = config.settings()
+        self.repos     = config.repos()
+
 
     # ==================================================================================
 
-    def run(self,verbose=True):
+    def run(self, args=[], verbose=True):
         """
         Syncs the current repo configuration file with the filesystem.
         """
 
         self.verbose = verbose
         for repo in self.repos:
+
+            if args != [] and repo.name not in args:
+                continue
+            elif args == [] and not repo.keep_updated:
+                print _("- %s is set to not be updated") % repo.name
+                continue
+
             repo_path = os.path.join(self.settings.webdir, "repo_mirror", repo.name)
             mirror = repo.mirror
+
             if not os.path.isdir(repo_path) and not repo.mirror.lower().startswith("rhn://"):
                 os.makedirs(repo_path)
             
@@ -92,13 +101,6 @@ class RepoSync:
         if repo.rpm_list != "":
             has_rpm_list = True
 
-        # user might have disabled repo updates in the config file for whatever reason.
-        # if so, don't update this one.
-
-        if not repo.keep_updated:
-            print _("- %s is set to not be updated") % repo.name
-            return True
-
         # create yum config file for use by reposync
         store_path = os.path.join(self.settings.webdir, "repo_mirror")
         dest_path = os.path.join(store_path, repo.name)
@@ -188,9 +190,6 @@ class RepoSync:
         Handle copying of rsync:// and rsync-over-ssh repos.
         """
 
-        if not repo.keep_updated:
-            print _("- %s is set to not be updated") % repo.name
-            return True
         if repo.rpm_list != "":
             print _("- warning: --rpm-list is not supported for rsync'd repositories")
         dest_path = os.path.join(self.settings.webdir, "repo_mirror", repo.name)
diff --git a/cobbler/api.py b/cobbler/api.py
index f5d3322..304eddb 100644
--- a/cobbler/api.py
+++ b/cobbler/api.py
@@ -188,13 +188,13 @@ class BootAPI:
         sync = action_sync.BootSync(self._config)
         return sync.run()
 
-    def reposync(self):
+    def reposync(self, args=[]):
         """
         Take the contents of /var/lib/cobbler/repos and update them --
         or create the initial copy if no contents exist yet.
         """
         reposync = action_reposync.RepoSync(self._config)
-        return reposync.run()
+        return reposync.run(args)
 
     def status(self,mode):
         statusifier = action_status.BootStatusReport(self._config, mode)
diff --git a/cobbler/cobbler.py b/cobbler/cobbler.py
index 7ecb2d6..9d166e3 100755
--- a/cobbler/cobbler.py
+++ b/cobbler/cobbler.py
@@ -581,7 +581,7 @@ class BootCLI:
         Sync the repo-specific portions of the config with the filesystem.
         'cobbler reposync'.  Intended to be run on cron.
         """
-        self.api.reposync()
+        self.api.reposync(args)
         return True
 
     def validateks(self,args):
-- 
1.5.2.4


--------------000401020305000101040708--




More information about the et-mgmt-tools mailing list