#!/usr/bin/env python from glob import glob from sys import argv, exit from validate import validate, ValidationException if __name__ == '__main__': try: repo = argv[1] if len(argv) == 3: schemadir = argv[2] else: schemadir = '/usr/share/bcfg2/schemas' except: print "Usage: validate_repo " exit(1) # add more validation as more schemas get written filesets = {'metadata':("%s/etc/metadata.xml", "%s/metadata.xsd"), 'bundle':("%s/bundler/*.xml", "%s/bundle.xsd"), 'pkglist':("%s/pkgmgr/*.xml", "%s/pkglist.xsd"), 'base':("%s/etc/base.xml", "%s/base.xsd"), 'imageinfo':("%s/etc/imageinfo.xml", "%s/translation.xsd"), 'services':("%s/etc/services.xml", "%s/services.xsd")} for k, (spec, schema) in filesets.iteritems(): for filename in glob(spec%(repo)): try: validate(open(filename).read(), schema%(schemadir)) print "%s checks out"%(filename) except ValidationException, v: print "file %s fails to verify:\n%s"%(filename, v) except IOError: print "failed to open file %s"%(filename)