Changeset 5178
- Timestamp:
- 04/24/09 17:35:03 (7 months ago)
- Location:
- trunk/bcfg2/src/lib/Client
- Files:
-
- 9 modified
-
Frame.py (modified) (12 diffs)
-
Tools/Encap.py (modified) (2 diffs)
-
Tools/POSIX.py (modified) (17 diffs)
-
Tools/RPMng.py (modified) (14 diffs)
-
Tools/RcUpdate.py (modified) (3 diffs)
-
Tools/YUMng.py (modified) (2 diffs)
-
Tools/__init__.py (modified) (4 diffs)
-
Tools/rpmtools.py (modified) (10 diffs)
-
XML.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bcfg2/src/lib/Client/Frame.py
r4999 r5178 5 5 __revision__ = '$Revision$' 6 6 7 import logging, time, types 7 import logging 8 import time 8 9 import Bcfg2.Client.Tools 9 10 … … 28 29 ret.append(entry) 29 30 except: 31 print("Error while reading input") 30 32 continue 31 33 return ret … … 57 59 for driver in drivers[:]: 58 60 if driver not in Bcfg2.Client.Tools.drivers and \ 59 isinstance(driver, types.StringType):61 isinstance(driver, str): 60 62 self.logger.error("Tool driver %s is not available" % driver) 61 63 drivers.remove(driver) … … 63 65 tclass = {} 64 66 for tool in drivers: 65 if not isinstance(tool, types.StringType):67 if not isinstance(tool, str): 66 68 tclass[time.time()] = tool 67 69 tool_class = "Bcfg2.Client.Tools.%s" % tool … … 76 78 exc_info=1) 77 79 78 for tool in tclass.values():80 for tool in list(tclass.values()): 79 81 try: 80 82 self.tools.append(tool(self.logger, setup, config)) … … 136 138 elif name in self.__dict__: 137 139 return self.__dict__[name] 138 raise AttributeError , name140 raise AttributeError(name) 139 141 140 142 def Inventory(self): 141 '''Verify all entries, find extra entries, and build up workqueues''' 143 ''' 144 Verify all entries, 145 find extra entries, 146 and build up workqueues 147 ''' 142 148 # initialize all states 143 149 for struct in self.config.getchildren(): … … 158 164 self.removal = self.extra 159 165 elif self.setup['remove'] == 'services': 160 self.removal = [entry for entry in self.extra if entry.tag == 'Service'] 166 self.removal = [entry for entry in self.extra \ 167 if entry.tag == 'Service'] 161 168 elif self.setup['remove'] == 'packages': 162 self.removal = [entry for entry in self.extra if entry.tag == 'Package'] 163 164 candidates = [entry for entry in self.states if not self.states[entry]] 165 self.whitelist = [entry for entry in self.states if not self.states[entry]] 166 # Need to process decision stuff early, so that dryrun mode works with it 169 self.removal = [entry for entry in self.extra \ 170 if entry.tag == 'Package'] 171 172 candidates = [entry for entry in self.states \ 173 if not self.states[entry]] 174 self.whitelist = [entry for entry in self.states \ 175 if not self.states[entry]] 176 # Need to process decision stuff early so that dryrun mode works with it 167 177 if self.setup['decision'] == 'whitelist': 168 178 dwl = self.setup['decision_list'] … … 172 182 self.logger.info("In whitelist mode: suppressing installation of:") 173 183 self.logger.info(["%s:%s" % (e.tag, e.get('name')) for e in w_to_rem]) 174 self.whitelist = [x for x in self.whitelist if x not in w_to_rem] 184 self.whitelist = [x for x in self.whitelist \ 185 if x not in w_to_rem] 175 186 176 187 elif self.setup['decision'] == 'blacklist': … … 305 316 '''Conditionally print tracing information''' 306 317 self.logger.info('\nPhase: %s' % phase) 307 self.logger.info('Correct entries:\t%d' % self.states.values().count(True))308 self.logger.info('Incorrect entries:\t%d' % self.states.values().count(False))309 if phase == 'final' and self.states.values().count(False):318 self.logger.info('Correct entries:\t%d' % list(self.states.values()).count(True)) 319 self.logger.info('Incorrect entries:\t%d' % list(self.states.values()).count(False)) 320 if phase == 'final' and list(self.states.values()).count(False): 310 321 self.logger.info(["%s:%s" % (entry.tag, entry.get('name')) for \ 311 322 entry in self.states if not self.states[entry]]) 312 self.logger.info('Total managed entries:\t%d' % len( self.states.values()))323 self.logger.info('Total managed entries:\t%d' % len(list(self.states.values()))) 313 324 self.logger.info('Unmanaged entries:\t%d' % len(self.extra)) 314 325 if phase == 'final' and self.setup['extra']: … … 318 329 self.logger.info("") 319 330 320 if (( self.states.values().count(False) == 0) and not self.extra):331 if ((list(self.states.values()).count(False) == 0) and not self.extra): 321 332 self.logger.info('All entries correct.') 322 333 … … 346 357 '''Generate XML summary of execution statistics''' 347 358 feedback = Bcfg2.Client.XML.Element("upload-statistics") 348 stats = Bcfg2.Client.XML.SubElement(feedback, \ 349 'Statistics', total=str(len(self.states)), 350 client_version=__revision__, version='2.0', 359 stats = Bcfg2.Client.XML.SubElement(feedback, 360 'Statistics', 361 total=str(len(self.states)), 362 client_version=__revision__, 363 version='2.0', 351 364 revision=self.config.get('revision', '-1')) 352 good = len([key for key, val in self.states.iteritems() if val])365 good = len([key for key, val in list(self.states.items()) if val]) 353 366 stats.set('good', str(good)) 354 if len([key for key, val in self.states.iteritems() if not val]) == 0:367 if len([key for key, val in list(self.states.items()) if not val]) == 0: 355 368 stats.set('state', 'clean') 356 369 else: … … 369 382 timeinfo = Bcfg2.Client.XML.Element("OpStamps") 370 383 feedback.append(stats) 371 for (event, timestamp) in self.times.iteritems():384 for (event, timestamp) in list(self.times.items()): 372 385 timeinfo.set(event, str(timestamp)) 373 386 stats.append(timeinfo) -
trunk/bcfg2/src/lib/Client/Tools/Encap.py
r4991 r5178 3 3 __revision__ = '$Revision$' 4 4 5 import Bcfg2.Client.Tools, glob, re 5 import glob 6 import re 7 import Bcfg2.Client.Tools 6 8 7 9 class Encap(Bcfg2.Client.Tools.PkgTool): … … 26 28 self.installed[match.group('name')] = match.group('version') 27 29 else: 28 print "Failed to split name %s" % pkg30 print("Failed to split name %s" % pkg) 29 31 self.logger.debug("Encap.py: RefreshPackages: self.installed.keys() are:") 30 self.logger.debug("%s" % self.installed.keys())32 self.logger.debug("%s" % list(self.installed.keys())) 31 33 32 34 def VerifyPackage(self, entry, _): -
trunk/bcfg2/src/lib/Client/Tools/POSIX.py
r4991 r5178 5 5 from stat import S_IWGRP, S_IRGRP, S_IXOTH, S_IWOTH, S_IROTH, ST_MODE, S_ISDIR 6 6 from stat import S_IFREG, ST_UID, ST_GID, S_ISREG, S_IFDIR, S_ISLNK, ST_MTIME 7 8 import binascii, difflib, grp, os, pwd, string, logging, time 7 import binascii 8 import difflib 9 import grp 10 import logging 11 import os 12 import pwd 13 import string 14 import time 9 15 import Bcfg2.Client.Tools 10 16 11 17 def calcPerms(initial, perms): 12 18 '''This compares ondisk permissions with specified ones''' 13 pdisp = [{1:S_ISVTX, 2:S_ISGID, 4:S_ISUID}, {1:S_IXUSR, 2:S_IWUSR, 4:S_IRUSR}, 14 {1:S_IXGRP, 2:S_IWGRP, 4:S_IRGRP}, {1:S_IXOTH, 2:S_IWOTH, 4:S_IROTH}] 19 pdisp = [{1:S_ISVTX, 2:S_ISGID, 4:S_ISUID}, 20 {1:S_IXUSR, 2:S_IWUSR, 4:S_IRUSR}, 21 {1:S_IXGRP, 2:S_IWGRP, 4:S_IRGRP}, 22 {1:S_IXOTH, 2:S_IWOTH, 4:S_IROTH}] 15 23 tempperms = initial 16 24 if len(perms) == 3: … … 18 26 pdigits = [int(perms[digit]) for digit in range(4)] 19 27 for index in range(4): 20 for (num, perm) in pdisp[index].iteritems():28 for (num, perm) in list(pdisp[index].items()): 21 29 if pdigits[index] & num: 22 30 tempperms |= perm … … 26 34 27 35 def normUid(entry): 28 '''This takes a user name or uid and returns the corresponding uid or False''' 36 ''' 37 This takes a user name or uid and 38 returns the corresponding uid or False 39 ''' 29 40 try: 30 41 try: … … 37 48 38 49 def normGid(entry): 39 '''This takes a group name or gid and returns the corresponding gid or False''' 50 ''' 51 This takes a group name or gid and 52 returns the corresponding gid or False 53 ''' 40 54 try: 41 55 try: … … 63 77 '''POSIX File support code''' 64 78 name = 'POSIX' 65 __handles__ = [('ConfigFile', None), ('Directory', None), ('Permissions', None), \66 (' SymLink', None)]79 __handles__ = [('ConfigFile', None), ('Directory', None), 80 ('Permissions', None), ('SymLink', None)] 67 81 __req__ = {'ConfigFile': ['name', 'owner', 'group', 'perms'], 68 82 'Directory': ['name', 'owner', 'group', 'perms'], … … 135 149 group = str(ondisk[ST_GID]) 136 150 except (OSError, KeyError): 137 self.logger.error('User/Group resolution failed for path %s' % (entry.get('name'))) 151 self.logger.error('User/Group resolution failed for path %s' % \ 152 entry.get('name')) 138 153 owner = 'root' 139 154 group = '0' … … 159 174 if ex_ents: 160 175 pruneTrue = False 161 self.logger.debug("Directory %s contains extra entries:" % entry.get('name')) 176 self.logger.debug("Directory %s contains extra entries:" % \ 177 entry.get('name')) 162 178 self.logger.debug(ex_ents) 163 179 nqtext = entry.get('qtext', '') + '\n' … … 172 188 if owner != str(normUid(entry)): 173 189 entry.set('current_owner', owner) 174 self.logger.debug("%s %s ownership wrong" % (entry.tag, entry.get('name'))) 190 self.logger.debug("%s %s ownership wrong" % \ 191 (entry.tag, entry.get('name'))) 175 192 nqtext = entry.get('qtext', '') + '\n' 176 193 nqtext += "%s owner wrong. is %s should be %s" % \ … … 214 231 fmode = os.lstat(entry.get('name')) 215 232 if not S_ISDIR(fmode[ST_MODE]): 216 self.logger.debug("Found a non-directory entry at %s" % (entry.get('name'))) 233 self.logger.debug("Found a non-directory entry at %s" % \ 234 (entry.get('name'))) 217 235 try: 218 236 os.unlink(entry.get('name')) … … 222 240 return False 223 241 else: 224 self.logger.debug("Found a pre-existing directory at %s" % (entry.get('name'))) 242 self.logger.debug("Found a pre-existing directory at %s" % \ 243 (entry.get('name'))) 225 244 exists = True 226 245 except OSError: … … 235 254 except: 236 255 self.logger.debug('Creating parent path for directory %s' % (entry.get('name'))) 237 for idx in xrange(len(parent.split('/')[:-1])):256 for idx in range(len(parent.split('/')[:-1])): 238 257 current = '/'+'/'.join(parent.split('/')[1:2+idx]) 239 258 try: … … 255 274 os.mkdir(entry.get('name')) 256 275 except OSError: 257 self.logger.error('Failed to create directory %s' % (entry.get('name'))) 276 self.logger.error('Failed to create directory %s' % \ 277 (entry.get('name'))) 258 278 return False 259 279 if entry.get('prune', 'false') == 'true' and entry.get("qtest"): … … 281 301 return True 282 302 except (OSError, KeyError): 283 self.logger.error('Permission fixup failed for %s' % (entry.get('name'))) 303 self.logger.error('Permission fixup failed for %s' % \ 304 (entry.get('name'))) 284 305 return False 285 306 … … 317 338 else: 318 339 if entry.text == None: 319 self.logger.error("Cannot verify incomplete ConfigFile %s" % (entry.get('name'))) 340 self.logger.error("Cannot verify incomplete ConfigFile %s" % \ 341 (entry.get('name'))) 320 342 return False 321 343 tempdata = entry.text … … 325 347 content = open(entry.get('name')).read() 326 348 except IOError, error: 327 self.logger.error("Failed to read %s: %s" % (error.filename, error.strerror)) 328 return False 329 # comparison should be done with fingerprints or md5sum so it would be faster 330 # for big binary files 349 self.logger.error("Failed to read %s: %s" % \ 350 (error.filename, error.strerror)) 351 return False 352 # comparison should be done with fingerprints or 353 # md5sum so it would be faster for big binary files 331 354 contentStatus = content == tempdata 332 355 if not contentStatus: … … 344 367 rawdiff.append(x) 345 368 if now - start > 5 and not longtime: 346 self.logger.info("Diff of %s taking a long time" % (entry.get('name'))) 369 self.logger.info("Diff of %s taking a long time" % \ 370 (entry.get('name'))) 347 371 longtime = True 348 372 elif now - start > 30: 349 self.logger.error("Diff of %s took too long; giving up" % (entry.get('name'))) 373 self.logger.error("Diff of %s took too long; giving up" % \ 374 (entry.get('name'))) 350 375 do_diff = False 351 376 break … … 451 476 self.logger.info("Failed to open %s for writing" % (entry.get('name'))) 452 477 else: 453 print err454 return False 478 print(err) 479 return False -
trunk/bcfg2/src/lib/Client/Tools/RPMng.py
r5168 r5178 8 8 import rpmtools 9 9 import Bcfg2.Client.Tools 10 11 try:12 set13 except NameError:14 from sets import Set as set15 10 16 11 class RPMng(Bcfg2.Client.Tools.PkgTool): … … 60 55 'kernel-modules', 'kernel-debug', 'kernel-unsupported', 61 56 'kernel-source', 'kernel-devel', 'kernel-default', 62 'kernel-largesmp-devel', 'kernel-largesmp', 'kernel-xen', 57 'kernel-largesmp-devel', 'kernel-largesmp', 'kernel-xen', 63 58 'gpg-pubkey'] 64 59 if 'gpg-pubkey' not in self.installOnlyPkgs: … … 132 127 e.g. 133 128 134 self.installed['foo'] = [ {'name':'foo', 'epoch':None, 135 'version':'1', 'release':2, 129 self.installed['foo'] = [ {'name':'foo', 'epoch':None, 130 'version':'1', 'release':2, 136 131 'arch':'i386'}, 137 {'name':'foo', 'epoch':None, 138 'version':'1', 'release':2, 132 {'name':'foo', 'epoch':None, 133 'version':'1', 'release':2, 139 134 'arch':'x86_64'} ] 140 135 ''' … … 147 142 self.installed.setdefault(nevra['name'], []).append(nevra) 148 143 if self.setup['debug']: 149 print "The following package instances are installed:"150 for name, instances in self.installed.iteritems():144 print("The following package instances are installed:") 145 for name, instances in list(self.installed.items()): 151 146 self.logger.debug(" " + name) 152 147 for inst in instances: … … 172 167 'pkg': <Package Element Object>, 173 168 'modlist': [ <filename>, ... ], 174 'verify' : [ <rpm --verify results> ] 169 'verify' : [ <rpm --verify results> ] 175 170 }, ...... 176 171 } … … 185 180 # We have an old style no Instance entry. Convert it to new style. 186 181 instance = Bcfg2.Client.XML.SubElement(entry, 'Package') 187 for attrib in entry.attrib.keys():182 for attrib in list(entry.attrib.keys()): 188 183 instance.attrib[attrib] = entry.attrib[attrib] 189 184 if self.pkg_checks == 'true' and entry.get('pkg_checks', 'true') == 'true': … … 217 212 if inst.tag == 'Package' and len(self.installed[entry.get('name')]) > 1: 218 213 self.logger.error("WARNING: Multiple instances of package %s are installed." % \ 219 (entry.get('name')))214 (entry.get('name'))) 220 215 for pkg in self.installed[entry.get('name')]: 221 216 if inst.get('version') == 'any' or self.pkg_vr_equal(inst, pkg) \ … … 359 354 if instance_fail == True: 360 355 self.logger.debug("*** Instance %s failed RPM verification ***" % \ 361 self.str_evra(inst))356 self.str_evra(inst)) 362 357 qtext_versions = qtext_versions + 'R(%s) ' % self.str_evra(inst) 363 358 self.modlists[entry] = modlist … … 418 413 entry.set('version', bcfg2_versions) 419 414 entry.set('qtext', "Install Package %s Instance(s) %s? (y/N) " % \ 420 (entry.get('name'), qtext_versions))415 (entry.get('name'), qtext_versions)) 421 416 422 417 return False … … 509 504 else: 510 505 self.logger.debug('Installed Action for %s %s is to not install' % \ 511 (inst_status.get('pkg').get('name'),512 self.str_evra(instance)))506 (inst_status.get('pkg').get('name'), 507 self.str_evra(instance))) 513 508 514 509 elif inst_status.get('version_fail', False) == True: … … 518 513 else: 519 514 self.logger.debug('Version Fail Action for %s %s is to not upgrade' % \ 520 (inst_status.get('pkg').get('name'),521 self.str_evra(instance)))515 (inst_status.get('pkg').get('name'), 516 self.str_evra(instance))) 522 517 523 518 elif inst_status.get('verify_fail', False) == True and self.name == "RPMng": … … 859 854 extras = [] 860 855 861 for (name, instances) in self.installed.iteritems():856 for (name, instances) in list(self.installed.items()): 862 857 if name not in packages: 863 858 extra_entry = Bcfg2.Client.XML.Element('Package', name=name, type=self.pkgtype) … … 897 892 # Extra package. 898 893 self.logger.info("Extra InstallOnlyPackage %s %s." % \ 899 (name, self.str_evra(installed_inst)))894 (name, self.str_evra(installed_inst))) 900 895 tmp_entry = Bcfg2.Client.XML.SubElement(extra_entry, 'Instance', \ 901 896 version = installed_inst.get('version'), \ … … 916 911 if not_found: 917 912 self.logger.info("Extra Normal Package Instance %s %s" % \ 918 (name, self.str_evra(installed_inst)))913 (name, self.str_evra(installed_inst))) 919 914 tmp_entry = Bcfg2.Client.XML.SubElement(extra_entry, 'Instance', \ 920 915 version = installed_inst.get('version'), \ -
trunk/bcfg2/src/lib/Client/Tools/RcUpdate.py
r5148 r5178 1 1 '''This is rc-update support''' 2 __revision__ = '$Revision $'2 __revision__ = '$Revision: 4991 $' 3 3 4 import Bcfg2.Client.Tools, Bcfg2.Client.XML, commands, os 4 import os 5 import Bcfg2.Client.Tools 6 import Bcfg2.Client.XML 5 7 6 8 class RcUpdate(Bcfg2.Client.Tools.SvcTool): … … 16 18 Assumes we run in the "default" runlevel. 17 19 ''' 18 # mrj - i think this should be: 19 # rc = self.cmd.run('/bin/rc-status | \ 20 # grep %s | \ 21 # grep started"' % entry.attrib['name']) 22 # 23 # ...but as i can't figure out a way to 24 # test that right now, i'll do the one 25 # that works in python's interactive interpreter. 26 rc = commands.getoutput('/bin/rc-status -s | grep %s | grep started' % \ 27 entry.get('name')) 28 status = len(rc) > 0 20 rc, output = self.cmd.run('/bin/rc-status | grep %s | grep started' % \ 21 entry.attrib['name']) 22 status = rc > 0 29 23 30 24 if not status: … … 60 54 '''Locate extra rc-update Services''' 61 55 allsrv = [line.split()[0] for line in \ 62 self.cmd.run("/bin/rc-status -s| grep started")[1]]56 self.cmd.run("/bin/rc-status | grep started")[1]] 63 57 self.logger.debug('Found active services:') 64 58 self.logger.debug(allsrv) -
trunk/bcfg2/src/lib/Client/Tools/YUMng.py
r5159 r5178 2 2 __revision__ = '$Revision: $' 3 3 4 import ConfigParser 5 import copy 6 import os.path 7 import sys 8 import yum 4 9 import Bcfg2.Client.XML 5 10 import Bcfg2.Client.Tools.RPMng 6 import ConfigParser, sys, os.path, copy7 8 import yum9 10 try:11 set12 except NameError:13 from sets import Set as set14 11 15 12 YAD = True … … 82 79 # installed but out of date 83 80 data.update(self.yum_avail[entry.get('name')]) 84 for (arch, (epoch, vers, rel)) in data.iteritems():81 for (arch, (epoch, vers, rel)) in list(data.items()): 85 82 Bcfg2.Client.XML.SubElement(entry, "Instance", 86 83 name=entry.get('name'), -
trunk/bcfg2/src/lib/Client/Tools/__init__.py
r5167 r5178 184 184 185 185 class PkgTool(Tool): 186 '''PkgTool provides a one-pass install with fallback for use with packaging systems''' 186 ''' 187 PkgTool provides a one-pass install with 188 fallback for use with packaging systems 189 ''' 187 190 pkgtool = ('echo %s', ('%s', ['name'])) 188 191 pkgtype = 'echo' … … 201 204 202 205 def Install(self, packages, states): 203 '''Run a one-pass install, followed by single pkg installs in case of failure''' 206 ''' 207 Run a one-pass install, followed by 208 single pkg installs in case of failure 209 ''' 204 210 self.logger.info("Trying single pass package install for pkgtype %s" % \ 205 211 self.pkgtype) … … 216 222 # set all package states to true and flush workqueues 217 223 pkgnames = [pkg.get('name') for pkg in packages] 218 for entry in [entry for entry in states.keys()224 for entry in [entry for entry in list(states.keys()) 219 225 if entry.tag == 'Package' 220 226 and entry.get('type') == self.pkgtype … … 257 263 '''Find extra packages''' 258 264 packages = [entry.get('name') for entry in self.getSupportedEntries()] 259 extras = [data for data in self.installed.iteritems() \265 extras = [data for data in list(self.installed.items()) \ 260 266 if data[0] not in packages] 261 267 return [Bcfg2.Client.XML.Element('Package', name=name, \ -
trunk/bcfg2/src/lib/Client/Tools/rpmtools.py
r4999 r5178 21 21 __revision__ = '$Revision$' 22 22 23 import rpm, optparse, pwd, grp 24 import sys, os, md5, stat 23 import grp 24 import md5 25 import optparse 26 import os 27 import pwd 28 import rpm 29 import stat 30 import sys 25 31 26 32 # Determine what prelink tools we have available. … … 191 197 del(kwargs['epoch']) 192 198 193 keywords = [ key for key in kwargs.keys() \199 keywords = [ key for key in list(kwargs.keys()) \ 194 200 if key in ('name', 'epoch', 'version', 'release', 'arch')] 195 201 keywords_len = len(keywords) … … 229 235 del(kwargs['epoch']) 230 236 231 keywords = [ key for key in kwargs.keys() \237 keywords = [ key for key in list(kwargs.keys()) \ 232 238 if key in ('name', 'epoch', 'version', 'release', 'arch')] 233 239 keywords_len = len(keywords) … … 341 347 """ 342 348 if vflags & RPMVERIFY_MD5: 343 print 'RPMVERIFY_MD5'349 print('RPMVERIFY_MD5') 344 350 if vflags & RPMVERIFY_FILESIZE: 345 print 'RPMVERIFY_FILESIZE'351 print('RPMVERIFY_FILESIZE') 346 352 if vflags & RPMVERIFY_LINKTO: 347 print 'RPMVERIFY_LINKTO'353 print('RPMVERIFY_LINKTO') 348 354 if vflags & RPMVERIFY_USER: 349 print 'RPMVERIFY_USER'355 print('RPMVERIFY_USER') 350 356 if vflags & RPMVERIFY_GROUP: 351 print 'RPMVERIFY_GROUP'357 print('RPMVERIFY_GROUP') 352 358 if vflags & RPMVERIFY_MTIME: 353 print 'RPMVERIFY_MTIME'359 print('RPMVERIFY_MTIME') 354 360 if vflags & RPMVERIFY_MODE: 355 print 'RPMVERIFY_MODE'361 print('RPMVERIFY_MODE') 356 362 if vflags & RPMVERIFY_RDEV: 357 print 'RPMVERIFY_RDEV'363 print('RPMVERIFY_RDEV') 358 364 if vflags & RPMVERIFY_CONTEXTS: 359 print 'RPMVERIFY_CONTEXTS'365 print('RPMVERIFY_CONTEXTS') 360 366 if vflags & RPMVERIFY_READLINKFAIL: 361 print 'RPMVERIFY_READLINKFAIL'367 print('RPMVERIFY_READLINKFAIL') 362 368 if vflags & RPMVERIFY_READFAIL: 363 print 'RPMVERIFY_READFAIL'369 print('RPMVERIFY_READFAIL') 364 370 if vflags & RPMVERIFY_LSTATFAIL: 365 print 'RPMVERIFY_LSTATFAIL'371 print('RPMVERIFY_LSTATFAIL') 366 372 if vflags & RPMVERIFY_LGETFILECONFAIL: 367 print 'RPMVERIFY_LGETFILECONFAIL'373 print('RPMVERIFY_LGETFILECONFAIL') 368 374 369 375 def debug_file_flags(fflags): … … 372 378 """ 373 379 if fflags & rpm.RPMFILE_CONFIG: 374 print 'rpm.RPMFILE_CONFIG'380 print('rpm.RPMFILE_CONFIG') 375 381 376 382 if fflags & rpm.RPMFILE_DOC: 377 print 'rpm.RPMFILE_DOC'383 print('rpm.RPMFILE_DOC') 378 384 379 385 if fflags & rpm.RPMFILE_ICON: 380 print 'rpm.RPMFILE_ICON'386 print('rpm.RPMFILE_ICON') 381 387 382 388 if fflags & rpm.RPMFILE_MISSINGOK: 383 print 'rpm.RPMFILE_MISSINGOK'389 print('rpm.RPMFILE_MISSINGOK') 384 390 385 391 if fflags & rpm.RPMFILE_NOREPLACE: 386 print 'rpm.RPMFILE_NOREPLACE'392 print('rpm.RPMFILE_NOREPLACE') 387 393 388 394 if fflags & rpm.RPMFILE_GHOST: 389 print 'rpm.RPMFILE_GHOST'395 print('rpm.RPMFILE_GHOST') 390 396 391 397 if fflags & rpm.RPMFILE_LICENSE: 392 print 'rpm.RPMFILE_LICENSE'398 print('rpm.RPMFILE_LICENSE') 393 399 394 400 if fflags & rpm.RPMFILE_README: 395 print 'rpm.RPMFILE_README'401 print('rpm.RPMFILE_README') 396 402 397 403 if fflags & rpm.RPMFILE_EXCLUDE: 398 print 'rpm.RPMFILE_EXLUDE'404 print('rpm.RPMFILE_EXLUDE') 399 405 400 406 if fflags & rpm.RPMFILE_UNPATCHED: 401 print 'rpm.RPMFILE_UNPATCHED'407 print('rpm.RPMFILE_UNPATCHED') 402 408 403 409 if fflags & rpm.RPMFILE_PUBKEY: 404 print 'rpm.RPMFILE_PUBKEY'410 print('rpm.RPMFILE_PUBKEY') 405 411 406 412 def rpm_verify_file(fileinfo, rpmlinktos, omitmask): … … 790 796 #print 'rpm.RPMCALLBACK_UNKNOWN' 791 797 else: 792 print 'ERROR - Fell through callBack'798 print('ERROR - Fell through callBack') 793 799 794 800 #print reason, amount, total, key, client_data … … 817 823 if len(idx_list) > 1 and not 'allmatches' in erase_flags: 818 824 #pass 819 print 'ERROR - Multiple package match for erase', pkgspec825 print('ERROR - Multiple package match for erase', pkgspec) 820 826 else: 821 827 for idx in idx_list: … … 899 905 result_string = result_string + '.' 900 906 901 print result_string + ' ' + filetype + ' ' + filename907 print(result_string + ' ' + filetype + ' ' + filename) 902 908 sys.stdout.flush() 903 909 … … 1092 1098 elif options.list: 1093 1099 for p in rpmpackagelist(main_ts): 1094 print p1100 print(p) 1095 1101 1096 1102 elif options.erase: … … 1098 1104 rpm_erase([cmdline_pkgspec], rpm_options) 1099 1105 else: 1100 print 'You must specify the "--name" option'1106 print('You must specify the "--name" option') -
trunk/bcfg2/src/lib/Client/XML.py
r4835 r5178 31 31 32 32 except ImportError: 33 print "Failed to load lxml, xml.etree and elementtree.ElementTree"34 print "Cannot continue"35 raise SystemExit , 133 print("Failed to load lxml, xml.etree and elementtree.ElementTree") 34 print("Cannot continue") 35 raise SystemExit(1) 36 36 37 37 len([Element, SubElement, XML, tostring, ParseError])