First sorry for have sent the last mail twice, I had some problems with the mail server. Thanks Michael DeHaan and Phil for the help, the verification method is working now :-) I also would like to thank Professor Chris for the help. I had to use an asynchronous call to solve the socket time out problem. This method should be added in the rpms module, after the inventory method. I am sending the modified rpms.py file as an attachment. ----------- def verify(self, flatten=True): """ Returns information of the verification of all installed packages. """ import commands ts = rpm.TransactionSet() mi = ts.dbMatch() results = [] for hdr in mi: checksum = commands.getoutput("rpm -V " + hdr['name']) if flatten: results.append("%s" % (checksum)) else: results.append([checksum]) return results ----------- To call the method, just #func <machine> call -a rpms verify How the RPM api in python does not have any function for verification, I had to use the external command. I think the rpm api in python is not very complete. -- ---------------------------------------------------- [] ' s Milton Paiva Neto milton.paiva@xxxxxxxxx mpaivaneto@xxxxxxxxxxxxxxxxxxx http://miltonpaiva.wordpress.com/ http://zenit.senecac.on.ca/wiki/index.php/Func/Rpms_Module_-_Function_Verify
# Copyright 2007, Red Hat, Inc # Michael DeHaan <mdehaan@xxxxxxxxxx> # # This software may be freely redistributed under the terms of the GNU # general public license. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. import func_module import rpm class RpmModule(func_module.FuncModule): version = "0.0.2" api_version = "0.0.1" description = "RPM related commands." # def test(self): # import commands # return list([ { package.split(" ")[0] : commands.getoutput("rpm -V " + package.split(" ")[0]).split("\n") } for package in self.inventory()[0] ]) def inventory(self, flatten=True): """ Returns information on all installed packages. By default, 'flatten' is passed in as True, which makes printouts very clean in diffs for use by func-inventory. If you are writting another software application, using flatten=False will prevent the need to parse the returns. """ # I have not been able to get flatten=False to work if there # is more than 491 entries in the dict -- ashcrow ts = rpm.TransactionSet() mi = ts.dbMatch() results = [] for hdr in mi: name = hdr['name'] epoch = (hdr['epoch'] or 0) version = hdr['version'] release = hdr['release'] arch = hdr['arch'] if flatten: results.append("%s %s %s %s %s" % (name, epoch, version, release, arch)) else: results.append([name, epoch, version, release, arch]) return results def verify(self, flatten=True): """ Returns information of the verification of all installed packages. """ import commands ts = rpm.TransactionSet() mi = ts.dbMatch() results = [] for hdr in mi: checksum = commands.getoutput("rpm -V " + hdr['name']) if flatten: results.append("%s" % (checksum)) else: results.append([checksum]) return results def glob(self, pattern, flatten=True): """ Return a list of installed packages that match a pattern """ ts = rpm.TransactionSet() mi = ts.dbMatch() results = [] if not mi: return mi.pattern('name', rpm.RPMMIRE_GLOB, pattern) for hdr in mi: name = hdr['name'] epoch = (hdr['epoch'] or 0) version = hdr['version'] release = hdr['release'] # gpg-pubkeys have no arch arch = (hdr['arch'] or "") if flatten: results.append("%s %s %s %s %s" % (name, epoch, version, release, arch)) else: results.append([name, epoch, version, release, arch]) return results def register_method_args(self): """ Implementing the method argument getter """ return { 'inventory':{ 'args':{ 'flatten':{ 'type':'boolean', 'optional':True, 'default':True, 'description':"Print clean in difss" } }, 'description':"Returns information on all installed packages" }, 'glob':{ 'args':{ 'pattern':{ 'type':'string', 'optional':False, 'description':"The glob packet pattern" }, 'flatten':{ 'type':'boolean', 'optional':True, 'default':True, 'description':"Print clean in difss" } }, 'description':"Return a list of installed packages that match a pattern" } }
_______________________________________________ Func-list mailing list Func-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/func-list