diff options
-rw-r--r-- | VERSION | 4 | ||||
-rw-r--r-- | ipalib/cli.py | 1 | ||||
-rw-r--r-- | ipalib/constants.py | 4 | ||||
-rw-r--r-- | ipalib/frontend.py | 4 | ||||
-rw-r--r-- | ipalib/plugable.py | 8 |
5 files changed, 15 insertions, 6 deletions
@@ -90,5 +90,5 @@ IPA_DATA_VERSION=20100614120000 # # ######################################################## IPA_API_VERSION_MAJOR=2 -IPA_API_VERSION_MINOR=141 -# Last change: ftweedal: add certprofile-mod --file option +IPA_API_VERSION_MINOR=142 +# Last change: mbabinsk: Add option to skip client API version check diff --git a/ipalib/cli.py b/ipalib/cli.py index 8515b91ed..b260ca651 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -1082,7 +1082,6 @@ class cli(backend.Executioner): else: for callback in callbacks: callback(cmd, kw) - kw['version'] = API_VERSION self.load_files(cmd, kw) return kw diff --git a/ipalib/constants.py b/ipalib/constants.py index fac937b5d..1509151ba 100644 --- a/ipalib/constants.py +++ b/ipalib/constants.py @@ -188,6 +188,10 @@ DEFAULT_CONFIG = ( # Used when verifying that the API hasn't changed. Not for production. ('validate_api', False), + # Skip client vs. server API version checking. Can lead to errors/strange + # behavior when newer clients talk to older servers. Use with caution. + ('skip_version_check', False), + # ******************************************************** # The remaining keys are never set from the values here! # ******************************************************** diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 81bf6d90b..3a59838d7 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -423,7 +423,7 @@ class Command(HasParam): version_provided = 'version' in options if version_provided: self.verify_client_version(unicode(options['version'])) - else: + elif self.api.env.in_server or not self.api.env.skip_version_check: options['version'] = API_VERSION params = self.args_options_2_params(*args, **options) self.debug( @@ -451,7 +451,7 @@ class Command(HasParam): ): ret['summary'] = self.get_summary_default(ret) if self.use_output_validation and (self.output or ret is not None): - self.validate_output(ret, options['version']) + self.validate_output(ret, options.get('version', API_VERSION)) return ret def soft_validate(self, values): diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 2ce7acfd6..269d58092 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -484,6 +484,12 @@ class API(ReadOnly): dest='fallback', help='Only use the server configured in /etc/ipa/default.conf' ) + parser.add_option( + '--skip-version-check', + action='store_true', + dest='skip_version_check', + help=optparse.SUPPRESS_HELP + ) return parser @@ -503,7 +509,7 @@ class API(ReadOnly): pass overrides[str(key.strip())] = value.strip() for key in ('conf', 'debug', 'verbose', 'prompt_all', 'interactive', - 'fallback', 'delegate'): + 'fallback', 'delegate', 'skip_version_check'): value = getattr(options, key, None) if value is not None: overrides[key] = value |