diff options
author | Endi Sukma Dewata <edewata@redhat.com> | 2011-12-20 19:45:57 -0600 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2011-12-21 13:23:08 -0600 |
commit | 46d3abc450db20c3e4c0854dbf9e711f59db3bff (patch) | |
tree | 2798b4d6123ea840917f5f949b131d9c3bf6c767 | |
parent | edd37d20198ba95ebabdbdbf8030f1ec1ecffb6b (diff) | |
download | freeipa-46d3abc450db20c3e4c0854dbf9e711f59db3bff.tar.gz freeipa-46d3abc450db20c3e4c0854dbf9e711f59db3bff.tar.xz freeipa-46d3abc450db20c3e4c0854dbf9e711f59db3bff.zip |
Reload UI on server upgrade.
The JSON server has been modified to return the version number
in all responses. The UI has been modified to keep the version
obtained during env operation and check the version returned
in subsequent operations. If the version changes the UI will
reload itself.
Ticket #946
-rw-r--r-- | install/ui/ipa.js | 4 | ||||
-rw-r--r-- | ipalib/constants.py | 3 | ||||
-rw-r--r-- | ipaserver/rpcserver.py | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/install/ui/ipa.js b/install/ui/ipa.js index 080f4836d..23a5e4287 100644 --- a/install/ui/ipa.js +++ b/install/ui/ipa.js @@ -128,6 +128,7 @@ var IPA = function() { method: 'env', on_success: function(data, text_status, xhr) { that.env = data.result; + that.version = that.env.version; } })); @@ -420,6 +421,9 @@ IPA.command = function(spec) { message: data ? xhr.statusText : IPA.get_message('errors.no_response', 'No response') }); + } else if (IPA.version && data.version && IPA.version !== data.version) { + window.location.reload(); + } else if (IPA.principal && data.principal && IPA.principal !== data.principal) { window.location.reload(); diff --git a/ipalib/constants.py b/ipalib/constants.py index 96cf3ba60..d984bbc20 100644 --- a/ipalib/constants.py +++ b/ipalib/constants.py @@ -22,6 +22,7 @@ All constants centralised in one file. """ import socket +from ipapython.version import VERSION try: FQDN = socket.getfqdn() except: @@ -63,6 +64,8 @@ CONFIG_SECTION = 'global' # This is a tuple instead of a dict so that it is immutable. # To create a dict with this config, just "d = dict(DEFAULT_CONFIG)". DEFAULT_CONFIG = ( + ('version', VERSION), + # Domain, realm, basedn: ('domain', 'example.com'), ('realm', 'EXAMPLE.COM'), diff --git a/ipaserver/rpcserver.py b/ipaserver/rpcserver.py index 2bfb8ea60..26850db55 100644 --- a/ipaserver/rpcserver.py +++ b/ipaserver/rpcserver.py @@ -33,6 +33,7 @@ from ipalib.rpc import xml_dumps, xml_loads from ipalib.util import make_repr from ipalib.compat import json from wsgiref.util import shift_path_info +from ipapython.version import VERSION import base64 import os import string @@ -470,6 +471,7 @@ class jsonserver(WSGIExecutioner): error=error, id=_id, principal=unicode(context.principal), + version=unicode(VERSION), ) response = json_encode_binary(response) return json.dumps(response, sort_keys=True, indent=4) |