From 46d3abc450db20c3e4c0854dbf9e711f59db3bff Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Dec 21 2011 19:23:08 +0000 Subject: 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 --- diff --git a/install/ui/ipa.js b/install/ui/ipa.js index 080f483..23a5e42 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 96cf3ba..d984bbc 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 2bfb8ea..26850db 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)