[yum-cvs] yum/yum Errors.py,1.6,1.7 __init__.py,1.153,1.154

Seth Vidal skvidal at login.linux.duke.edu
Mon Nov 21 06:16:08 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv23432/yum

Modified Files:
	Errors.py __init__.py 
Log Message:

clean up some duplicated code
initial stab at YumBase.remove()


Index: Errors.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/Errors.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Errors.py	19 Nov 2005 22:09:09 -0000	1.6
+++ Errors.py	21 Nov 2005 06:16:05 -0000	1.7
@@ -65,3 +65,7 @@
         YumBaseError.__init__(self)
         self.args = args
 
+class RemoveError(YumBaseError):
+    def __init__(self, args=None):
+        YumBaseError.__init__(self)
+        self.args = args

Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -r1.153 -r1.154
--- __init__.py	21 Nov 2005 05:10:43 -0000	1.153
+++ __init__.py	21 Nov 2005 06:16:05 -0000	1.154
@@ -255,7 +255,10 @@
         """populates the package sacks for information from our repositories,
            takes optional archlist for archs to include"""
            
-        
+        if hasattr(self, 'pkgSack') and thisrepo is None:
+            self.log(7, 'skipping reposetup, pkgsack exists')
+            return
+            
         if thisrepo is None:
             repos = self.repos.listEnabled()
         else:
@@ -1542,42 +1545,24 @@
         if po:
             pkgs.append(po)
         else:
-            if not hasattr(self, 'pkgSack'):
-                self.doRepoSetup()
-                self.doSackSetup()
-            # keys we care about:
-            name = epoch = arch = version = release = None
-            try: name = kwargs['name']
-            except KeyError: pass
-            try: epoch = kwargs['epoch']
-            except KeyError: pass
-            try: arch = kwargs['arch']
-            except KeyError: pass
-            
-            # get them as ver, version and rel, release - if someone
-            # specifies one of each then that's kinda silly.
-            try: version = kwargs['version']
-            except KeyError: pass
-            try: version = kwargs['ver']
-            except KeyError: pass
-            try: release = kwargs['release']
-            except KeyError: pass
-            try: release = kwargs['rel']
-            except KeyError: pass
+            if not kwargs.keys():
+                raise Errors.InstallError, 'Nothing specified to install'
 
-            pkgs = self.pkgSack.searchNevra(name=name, epoch=epoch, arch=arch,
-                    ver=version, rel=release)
+            nevra_dict = self._nevra_kwarg_parse(kwargs)
+
+            pkgs = self.pkgSack.searchNevra(name=nevra_dict['name'],
+                 epoch=nevra_dict['epoch'], arch=nevra_dict['arch'],
+                 ver=nevra_dict['version'], rel=nevra_dict['release'])
             
             if pkgs:
                 pkgs = self.bestPackagesFromList(pkgs)
 
         if len(pkgs) == 0:
-            raise Errors.InstallError, 'No package available to install'
+            raise Errors.InstallError, 'No package(s) available to install'
         
         # FIXME - lots more checking here
-        #  - update instead
         #  - install instead of erase
-        #  - better exceptions
+        #  - better error handling/reporting
         
         tx_return = []
         for po in pkgs:
@@ -1645,10 +1630,6 @@
                     txmbr = self.tsInfo.addUpdate(updating_pkg, updated_pkg)
                     tx_return.append(txmbr)
             
-            # make sure we have more than nothing, maybe we shouldn't be raising here
-            if len(tx_return) == 0:
-                raise Errors.UpdateError, 'No packages to update'
-            
             return tx_return
 
         else:
@@ -1661,31 +1642,17 @@
                     availpkgs.append(po)
                 
             else: # we have kwargs, sort them out.
-                name = epoch = arch = version = release = None
-                try: name = kwargs['name']
-                except KeyError: pass
-                try: epoch = kwargs['epoch']
-                except KeyError: pass
-                try: arch = kwargs['arch']
-                except KeyError: pass
-                
-                # get them as ver, version and rel, release - if someone
-                # specifies one of each then that's kinda silly.
-                try: version = kwargs['version']
-                except KeyError: pass
-                try: version = kwargs['ver']
-                except KeyError: pass
-                try: release = kwargs['release']
-                except KeyError: pass
-                try: release = kwargs['rel']
-                except KeyError: pass
-    
-                availpkgs = self.pkgSack.searchNevra(name=name, epoch=epoch, arch=arch,
-                        ver=version, rel=release)
+                nevra_dict = self._nevra_kwarg_parse(kwargs)
+
+                availpkgs = self.pkgSack.searchNevra(name=nevra_dict['name'],
+                          epoch=nevra_dict['epoch'], arch=nevra_dict['arch'],
+                        ver=nevra_dict['version'], rel=nevra_dict['release'])
                 
-                installed_tuples = self.rpmdb.returnTupleByKeyword(name=name,
-                                                epoch=epoch, arch=arch,
-                                                ver=version, rel=release)
+                installed_tuples = self.rpmdb.returnTupleByKeyword(
+                                name=nevra_dict['name'], epoch=nevra_dict['epoch'],
+                                arch=nevra_dict['arch'], ver=nevra_dict['version'],
+                                rel=nevra_dict['release'])
+            
                 for tup in installed_tuples:
                     hdr = self.rpmdb.returnHeaderByTuple(tup)[0]
                     installed_pkg =  YumInstalledPackage(hdr)
@@ -1736,10 +1703,67 @@
         return tx_return
         
         
-    def remove(self, input):
-        """try to find and mark for remove the input -
-           - input can be a pkg object or string"""
-        pass
+    def remove(self, po=None, **kwargs):
+        """try to find and mark for remove the specified package(s) -
+            if po is specified then that package object (if it is installed) 
+            will be marked for removal.
+            if no po then look at kwargs, if neither then raise an exception"""
+
+        if not po and not kwargs.keys():
+            raise Errors.RemoveError, 'Nothing specified to remove'
+        
+        self.doRpmDBSetup()
+        tx_return = []
+        pkgs = []
+        
+        if po:
+            pkgs = [po]
+        else:
+            nevra_dict = self._nevra_kwarg_parse(kwargs)
+
+            installed_tuples = self.rpmdb.returnTupleByKeyword(
+                            name=nevra_dict['name'], epoch=nevra_dict['epoch'],
+                            arch=nevra_dict['arch'], ver=nevra_dict['version'],
+                            rel=nevra_dict['release'])
+
+            for tup in installed_tuples:
+                hdr = self.rpmdb.returnHeaderByTuple(tup)[0]
+                installed_pkg =  YumInstalledPackage(hdr)
+                pkgs.append(installed_pkg)
+
+        
+        for po in pkgs:
+            txmbr = self.tsInfo.addErase(po)
+            tx_return.append(txmbr)
+        
+        return tx_return
+
+    def _nevra_kwarg_parse(self, kwargs):
+            
+        returndict = {}
+        
+        try: returndict['name'] = kwargs['name']
+        except KeyError:  returndict['name'] = None
+
+        try: returndict['epoch'] = kwargs['epoch']
+        except KeyError: returndict['epoch'] = None
+
+        try: returndict['arch'] = kwargs['arch']
+        except KeyError: returndict['arch'] = None
+        
+        # get them as ver, version and rel, release - if someone
+        # specifies one of each then that's kinda silly.
+        try: returndict['version'] = kwargs['version']
+        except KeyError: returndict['version'] = None
+        if returndict['version'] is None:
+            try: returndict['version'] = kwargs['ver']
+            except KeyError: returndict['version'] = None
+
+        try: returndict['release'] = kwargs['release']
+        except KeyError: returndict['release'] = None
+        if returndict['release'] is None:
+            try: release = kwargs['rel']
+            except KeyError: returndict['release'] = None
         
-         
-         
+        return returndict
+




More information about the Yum-cvs-commits mailing list