diff options
Diffstat (limited to 'makeapi')
-rwxr-xr-x | makeapi | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -32,6 +32,7 @@ from ipalib import api from ipalib.parameters import Param from ipalib.output import Output from ipalib.text import Gettext, NGettext +from ipalib.capabilities import capabilities API_FILE='API.txt' @@ -211,6 +212,9 @@ def make_api(): fd.write('option: %s\n' % param_repr(o)) for o in sorted(cmd.output(), key=operator.attrgetter('name')): fd.write('output: %s\n' % param_repr(o)) + for name, version in sorted( + capabilities.items(), key=lambda (k, v): (v, k)): + fd.write('capability: %s %s\n' % (name, version)) fd.close() return 0 @@ -288,6 +292,7 @@ def validate_api(): # First run through the file and compare it to the API existing_cmds = [] + existing_capabilities = set() cmd = None for line in lines: line = line.strip() @@ -370,6 +375,20 @@ def validate_api(): output = find_name(line) print "Option '%s' in command '%s' in API file not found" % (output, name) rval |= API_FILE_DIFFERENCE + if line.startswith('capability:'): + cap, version = line.replace('capability: ', '').split(' ', 1) + existing_capabilities.add(cap) + try: + expected_version = str(capabilities[cap]) + except KeyError: + print "Capability '%s' in API file not found" % cap + rval |= API_FILE_DIFFERENCE + else: + if version != expected_version: + print ( + "Capability '%s' in API file doesn't match. Got %s, " + "expected %s.") % (cap, version, expected_version) + rval |= API_FILE_DIFFERENCE if cmd: if not _finalize_command_validation(cmd, found_args, expected_args, @@ -383,6 +402,11 @@ def validate_api(): print "Command %s in ipalib, not in API" % cmd.name rval |= API_NEW_COMMAND + for cap in capabilities: + if cap not in existing_capabilities: + print "Capability %s in ipalib, not in API" % cap + rval |= API_FILE_DIFFERENCE + return rval def main(): |