#4739 [RFE] Support API clients newer than server
Closed: Fixed None Opened 4 years ago by pvoborni.

Server can communicate only with clients which send API version lower or equal to the server one. This behavior is not desired because it's more common to have newer client and older server.

Server should be able to communicate with newer client and newer CLI should be able to communicate with older server.

Related discussion: http://www.redhat.com/archives/freeipa-devel/2014-November/msg00272.html


This will require considerable refactoring in the way how frameworks treats the API and commands.

Based on the discussion on the list pulling it in.

This would require thin IPA client first - too much work for 4.2. Postponing.

master:

  • c37aba2 rpc: do not crash when unable to parse JSON
  • 861294c parameters: remove unused ConversionError and ValidationError arguments
  • e0275ab rpc: include structured error information in responses
  • 2f6b333 frontend: re-raise remote RequirementError using CLI name in CLI
  • 13b0106 frontend: remove the unused Command.soft_validate method
  • 278fa29 frontend: perform argument value validation only on server
  • f8cf136 batch: do not crash when no argument is specified
  • 71f9604 ipalib: make optional positional command arguments actually optional
  • 3eaafe4 frontend: do not forward unspecified positional arguments to server
  • 213237c user: do not assume the preserve flags have value in user_del
  • ac2e9e8 frontend: do not forward argument defaults to server
  • 77e27de makeapi: optimize API.txt
  • b08f771 ipalib: remove the unused csv argument of Param
  • 3f5091b makeaci: load additional plugins using API.add_module
  • 0d62968 plugable: replace API.import_plugins with new API.add_package
  • bed546e ipalib, ipaserver: migrate all plugins to Registry-based registration
  • 15a4c0d ipalib, ipaserver: fix incorrect API.register calls in docstrings
  • 88c0b66 plugable: remove the unused deprecated API.register method
  • a30bc8a plugable: switch API to Registry-based plugin discovery
  • 60fa6ed frontend: merge baseldap.CallbackRegistry into Command
  • f28cd62 frontend: move the interactive_prompt callback type to Command
  • 1bcf08a automount: do not inherit automountlocation_import from LDAPQuery
  • b6af621 dns: move code called on client to the module level
  • eb8be95 dns: do not rely on server data structures in code called on client
  • be47169 otptoken: fix import of DN
  • 4a24353 otptoken_yubikey: fix otptoken_add_yubikey arguments
  • b09b928 vault: move client-side code to the module level
  • 4b119e2 vault: copy arguments of client commands from server counterparts
  • 9e3c16e ipalib: use relative imports for cross-plugin imports
  • 2b50fc6 frontend: allow commands to have an argument named name

master:

  • aa4123d fix pylint false positive errors

master:

  • 748a4c3 cli: make optional positional command arguments actually optional
  • 9b0df69 dns: fix dnsrecord interactive mode
  • f1ad3e6 ipaclient: introduce ipaclient.plugins
  • 327d952 ipalib: move client-side plugins to ipaclient
  • 0a984af help, makeapi: allow setting command topic explicitly
  • cd5ecdb help, makeapi: specify module topic by name
  • fe18adb help, makeapi: do not use hardcoded plugin package name
  • ed4c2d9 plugable: turn Plugin attributes into properties
  • 19cf6e9 plugable: simplify API plugin initialization code
  • 1391cd6 plugable: remember overriden plugins in API
  • 60d9462 frontend: turn Method attributes into properties
  • b8988da ipaclient: add client-side command override class
  • 6cfb9d7 dns: move code shared by client and server to separate module
  • 4c7be74 ipalib: split off client-side plugin code into ipaclient
  • 98ede1b parameters: introduce cli_metavar keyword argument
  • 0e989e2 parameters: introduce no_convert keyword argument
  • 3cf5f83 ipalib: replace DeprecatedParam with deprecated Param argument
  • f35beca ipalib: introduce API schema plugins
  • 43dc424 rpc: respect API config in RPCClient.create_connection
  • e056b8d rpc: allow overriding NSS DB directory in API config
  • 56c66f4 rpc: specify connection options in API config
  • 11de396 rpc: optimize JSON-RPC response handling
  • 5a4a29b rpc: do not validate command name in RPCClient.forward
  • 08ff248 client install: finalize API after CA certs are available
  • 875801d ipactl: use server API
  • 2f7df39 ipalib: move File command arguments to ipaclient
  • f5fd2b8 misc: hide the unused --all option of env and plugins in CLI
  • ec841e5 ipaclient: implement thin client
  • 6e44557 ipalib: move server-side plugins to ipaserver
  • 8b7f250 frontend: do not check API minor version of the client

master:

  • 05878f1 test: test_cli: Do not expect defaults in kwargs.

master:

  • bebdce8 plugable: allow plugins to be non-classes
  • 4128c56 plugable: initialize plugins on demand
  • 3ac2215 schema: generate client-side commands on demand
  • e2a8290 batch, schema: use Dict instead of Any
  • 365d973 misc: fix empty CLI output of env and plugins commands
  • 448af06 dns, passwd: fix outputs of dns_resolve and passwd commands
  • f7240c6 frontend: call execute rather than forward in Local
  • a64aba3 schema: exclude local commands
  • d26e42f schema: fix client-side dynamic defaults

master:

  • db13494 makeaci, makeapi: use in-server API
  • f554078 frontend: don't copy command arguments to output params
  • 0b53ae4 frontend: skip value output in output_for_cli
  • b405a12 frontend: do not crash on missing output in output_for_cli
  • ade8d42 automember: add object plugin for automember_rebuild
  • 234270d dns: do not rely on custom param fields in record attributes
  • 5382864 misc: skip count and total output in env.output_for_cli
  • 71de887 passwd: handle sort order of passwd argument on the client
  • 3ec7a52 permission: handle ipapermright deprecated CLI alias on the client
  • ec1b3e7 schema: add object class schema
  • 91faf3e schema: remove output_params
  • d0cfe37 schema: merge command args and options
  • cbe73c6 schema: remove redundant information
  • 8cc8b6f schema: remove no_cli from command schema

master:

  • 91d6d87 replica install: fix thin client regression

master:

  • 894be1b dns: fix dns_update_system_records to work with thin client

master:

  • 034a111 schema: Add fingerprint and TTL
  • 4b97cab schema: Add known_fingerprints option to schema command
  • d0e708c schema: Cache schema in api instance

master:

  • a5f4847 schema: return fingerprint as unicode text

master:

  • ac8e8ec schema: fix param default value handling
  • 055dfaf schema: do not crash in command_defaults if argument is None
  • 61987b6 automember: fix automember to work with thin client
  • f7cc15f schema: client-side code cleanup

master:

  • 65aa2d4 env: Add 'server' variable to api.env
  • a636842 schema: Caching on schema on client

master:

  • 95191e1 test: automember: Fix expected exception message

master:

  • 573819e test: cert: Reflect change in behavior in tests

master:

  • ae5f11b server: define missing virtual attributes
  • 0f578ec user: add object plugin for user_status
  • e4ec479 frontend: do not ignore client-side output params
  • 1a03bd3 cert: fix CLI output of cert_remove_hold
  • 390fd3d plugable: add option to ignore override errors
  • c1d8c71 client: ignore override errors in command overrides
  • 8278da6 client: add placeholders for required remote plugins
  • 2beb72f server: exclude Local commands from RPC

master:

  • e5635f7 schema: Decrease schema TTL to one hour

master:

  • cf713ac client: do not crash when overriding remote command as method
  • 2cf7c7b client: add support for pre-schema servers

master:

  • cea1f33 schema: Perform the check for schema update when force_schema_check is True

Metadata Update from @pvoborni:
- Issue assigned to jcholast
- Issue set to the milestone: FreeIPA 4.4

2 years ago

Login to comment on this ticket.

Metadata