24bca14 Add client capabilities, enable messages

13 files Authored by pviktori 11 years ago, Committed by mkosek 11 years ago,
    Add client capabilities, enable messages
    
    The API version the client sends can now be used to check what the client
    expects or is capable of.
    
    All version tests IPA does will be be named and listed in one module,
    ipalib.capabilities, which includes a function to test a specific capability
    against an API version.
    Similarly to Python's __future__ module, capabilities.py also serves as
    documentation of backwards-incompatible changes to the API.
    
    The first capability to be defined is "messages". Recent enough clients can
    accept a list of warnings or other info under the "messages" key in the
    result dict.
    
    If a JSON client does not send the API version, it is assumed this is a testing
    client (e.g. curl from the command line). Such a client "has" all capabilities,
    but it will always receive a warning mentioning that forward compatibility
    is not guaranteed.
    If a XML client does not send the API version, it is assumed it uses the API
    version before capabilities were introduced. (This is to keep backwards
    compatibility with clients containing bug https://fedorahosted.org/freeipa/ticket/3294)
    
    Whenever a capability is added, the API version must be incremented.
    To ensure that, capabilities are written to API.txt and checked by
    `makeapi --validate`.
    
    Design page: http://freeipa.org/page/V3/Messages
    Ticket: https://fedorahosted.org/freeipa/ticket/2732
    
        
file modified
+1 -0
file modified
+1 -1
file modified
+32 -8
file modified
+6 -0
file modified
+6 -1
file modified
+24 -0