summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2011-12-20 19:45:57 -0600
committerEndi S. Dewata <edewata@redhat.com>2011-12-21 13:23:08 -0600
commit46d3abc450db20c3e4c0854dbf9e711f59db3bff (patch)
tree2798b4d6123ea840917f5f949b131d9c3bf6c767
parentedd37d20198ba95ebabdbdbf8030f1ec1ecffb6b (diff)
downloadfreeipa-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.js4
-rw-r--r--ipalib/constants.py3
-rw-r--r--ipaserver/rpcserver.py2
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)