diff --git a/commit_queue.py b/commit_queue.py index ec8f51a18..4e624773a 100755 --- a/commit_queue.py +++ b/commit_queue.py @@ -26,7 +26,6 @@ THIRD_PARTY_DIR = os.path.join(os.path.dirname(__file__), 'third_party') sys.path.insert(0, THIRD_PARTY_DIR) from cq_client import cq_pb2 -from cq_client import validate_config from protobuf26 import text_format def usage(more): @@ -188,20 +187,30 @@ CMDbuilders.func_usage_more = '' def CMDvalidate(parser, args): - """Validates a CQ config. + """Validates a CQ config, returns 0 on valid config. - Takes a single argument - path to the CQ config to be validated. Returns 0 on - valid config, non-zero on invalid config. Errors and warnings are printed to - screen. + BUGS: this doesn't do semantic validation, only verifies validity of protobuf. + But don't worry - bad cq.cfg won't cause outages, luci-config service will + not accept them, will send warning email, and continue using previous + version. """ _, args = parser.parse_args(args) if len(args) != 1: parser.error('Expected a single path to CQ config. Got: %s' % ' '.join(args)) - with open(args[0]) as config_file: - cq_config = config_file.read() - return 0 if validate_config.IsValid(cq_config) else 1 + config = cq_pb2.Config() + try: + with open(args[0]) as config_file: + text_config = config_file.read() + text_format.Merge(text_config, config) + # TODO(tandrii): provide an option to actually validate semantics of CQ + # config. + return 0 + except text_format.ParseError as e: + print 'failed to parse cq.cfg: %s' % e + return 1 + CMDvalidate.func_usage_more = ''