summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Lint/Validate.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Server/Lint/Validate.py')
-rw-r--r--src/lib/Server/Lint/Validate.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/Server/Lint/Validate.py b/src/lib/Server/Lint/Validate.py
index 834608378..8a8406e73 100644
--- a/src/lib/Server/Lint/Validate.py
+++ b/src/lib/Server/Lint/Validate.py
@@ -1,10 +1,12 @@
+import fnmatch
import glob
import lxml.etree
import os
-import fnmatch
+from subprocess import Popen, PIPE, STDOUT
+import sys
+
import Bcfg2.Options
import Bcfg2.Server.Lint
-from subprocess import Popen, PIPE, STDOUT
class Validate(Bcfg2.Server.Lint.ServerlessPlugin):
""" Ensure that the repo validates """
@@ -14,7 +16,8 @@ class Validate(Bcfg2.Server.Lint.ServerlessPlugin):
self.filesets = {"metadata:groups":"%s/metadata.xsd",
"metadata:clients":"%s/clients.xsd",
"info":"%s/info.xsd",
- "%s/Bundler/*.{xml,genshi}":"%s/bundle.xsd",
+ "%s/Bundler/*.xml":"%s/bundle.xsd",
+ "%s/Bundler/*.genshi":"%s/bundle.xsd",
"%s/Pkgmgr/*.xml":"%s/pkglist.xsd",
"%s/Base/*.xml":"%s/base.xsd",
"%s/Rules/*.xml":"%s/rules.xsd",
@@ -33,23 +36,27 @@ class Validate(Bcfg2.Server.Lint.ServerlessPlugin):
@Bcfg2.Server.Lint.returnErrors
def Run(self):
- self.schemadir = self.config['schema']
+ schemadir = self.config['schema']
- for schemaname, path in self.filesets.items():
+ for path, schemaname in self.filesets.items():
try:
filelist = self.filelists[path]
except KeyError:
filelist = []
-
+
if filelist:
# avoid loading schemas for empty file lists
try:
schema = lxml.etree.XMLSchema(lxml.etree.parse(schemaname %
schemadir))
+ except IOError:
+ e = sys.exc_info()[1]
+ self.LintError("input-output-error", e.message)
+ continue
except:
self.LintError("schema-failed-to-parse",
- "Failed to process schema %s",
- schemaname % schemadir)
+ "Failed to process schema %s" %
+ (schemaname % schemadir))
continue
for filename in filelist:
self.validate(filename, schemaname % schemadir,