add option to skip client API version check

This can be either set in IPA config file or specified as
'ipa --skip-version-check [COMMAND]'.

part of https://fedorahosted.org/freeipa/ticket/4768

Reviewed-By: Martin Basti <mbasti@redhat.com>
This commit is contained in:
Martin Babinsky
2015-07-03 12:21:09 +02:00
committed by Tomas Babej
parent 1d9bdb2409
commit ea7f392bb9
5 changed files with 15 additions and 6 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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!
# ********************************************************

View File

@@ -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):

View File

@@ -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