From 76a2e85dbbc8d8b8472bf91fc75e21163672e7f4 Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Thu, 11 Apr 2013 15:27:27 -0400 Subject: Tracking upgrade using existing config files. The upgrade framework has been modified to use pki.conf to track system upgrade, tomcat.conf to track instance upgrade, and CS.cfg to track subsystem upgrade. The preop.product.version in CS.cfg has been renamed into cms.product.version and is now used to track upgrade. Ticket #544 --- base/common/python/pki/upgrade.py | 77 ++++++++++++++-------- base/common/shared/conf/tomcat.conf | 2 + .../netscape/cms/servlet/csadmin/WelcomePanel.java | 2 +- 3 files changed, 51 insertions(+), 30 deletions(-) (limited to 'base/common') diff --git a/base/common/python/pki/upgrade.py b/base/common/python/pki/upgrade.py index 33077df23..fda1f829c 100644 --- a/base/common/python/pki/upgrade.py +++ b/base/common/python/pki/upgrade.py @@ -32,20 +32,17 @@ import pki DEFAULT_VERSION = '10.0.0' -VERSION_KEY = 'Configuration-Version' -INDEX_KEY = 'Scriptlet-Index' - UPGRADE_DIR = pki.SHARE_DIR + '/server/upgrade' VERSION_DIR = UPGRADE_DIR + '/%s' SCRIPTLET_FILE = VERSION_DIR + '/%s' -SYSTEM_VERSION = pki.CONF_DIR + '/' + pki.VERSION_FILE +SYSTEM_TRACKER = pki.CONF_DIR + '/pki.conf' INSTANCE_CONF = pki.CONF_DIR + '/%s' -INSTANCE_VERSION = INSTANCE_CONF + '/' + pki.VERSION_FILE +INSTANCE_TRACKER = INSTANCE_CONF + '/tomcat.conf' SUBSYSTEM_CONF = INSTANCE_CONF + '/%s' -SUBSYSTEM_VERSION = SUBSYSTEM_CONF + '/' + pki.VERSION_FILE +SUBSYSTEM_TRACKER = SUBSYSTEM_CONF + '/CS.cfg' verbose = False @@ -128,10 +125,18 @@ class PKIUpgradeException(Exception): class PKIUpgradeTracker(object): - def __init__(self, name, filename): + def __init__(self, name, filename, + delimiter='=', + version_key='PKI_VERSION', + index_key='PKI_UPGRADE_INDEX'): + self.name = name self.filename = filename + self.delimiter = delimiter + self.version_key = version_key + self.index_key = index_key + self.read() @@ -161,17 +166,17 @@ class PKIUpgradeTracker(object): print 'Removing ' + self.name + ' tracker.' - if os.path.exists(self.filename): - if verbose: print 'Removing ' + self.filename - os.remove(self.filename) + self.remove_version() + self.remove_index() + self.write() def reset(self, version): print 'Resetting ' + self.name + ' tracker.' - self.lines = [] self.set_version(version) + self.remove_index() self.write() @@ -179,8 +184,12 @@ class PKIUpgradeTracker(object): print self.name + ':' - for line in self.lines: - print ' ' + line + version = self.get_version() + print ' Configuration version: ' + str(version) + + index = self.get_index() + if index > 0: + print ' Last completed scriptlet: ' + str(index) print @@ -191,8 +200,8 @@ class PKIUpgradeTracker(object): for line in self.lines: - # parse : - match = re.match('^\s*(\S*)\s*:\s*(.*)\s*$', line) + # parse + match = re.match('^\s*(\S*)\s*%s\s*(.*)\s*$' % self.delimiter, line) if not match: continue @@ -213,8 +222,8 @@ class PKIUpgradeTracker(object): for index, line in enumerate(self.lines): - # parse : - match = re.match('^\s*(\S*)\s*:\s*(.*)\s*$', line) + # parse + match = re.match('^\s*(\S*)\s*%s\s*(.*)\s*$' % self.delimiter, line) if not match: continue @@ -224,20 +233,20 @@ class PKIUpgradeTracker(object): if key.lower() != name.lower(): continue - self.lines[index] = key + ': ' + value + self.lines[index] = key + self.delimiter + value found = True break if not found: - self.lines.append(name + ': ' + value) + self.lines.append(name + self.delimiter + value) def remove_property(self, name): for index, line in enumerate(self.lines): - # parse : - match = re.match('^\s*(\S*)\s*: \s*(.*)\s*$', line) + # parse + match = re.match('^\s*(\S*)\s*%s\s*(.*)\s*$' % self.delimiter, line) if not match: continue @@ -252,7 +261,7 @@ class PKIUpgradeTracker(object): def get_index(self): - index = self.get_property(INDEX_KEY) + index = self.get_property(self.index_key) if index: return int(index) @@ -261,16 +270,16 @@ class PKIUpgradeTracker(object): def set_index(self, index): - self.set_property(INDEX_KEY, str(index)) + self.set_property(self.index_key, str(index)) def remove_index(self): - self.remove_property(INDEX_KEY) + self.remove_property(self.index_key) def get_version(self): - version = self.get_property(VERSION_KEY) + version = self.get_property(self.version_key) if version: return Version(version) @@ -279,7 +288,11 @@ class PKIUpgradeTracker(object): def set_version(self, version): - self.set_property(VERSION_KEY, str(version)) + self.set_property(self.version_key, str(version)) + + + def remove_version(self): + self.remove_property(self.version_key) @functools.total_ordering @@ -602,7 +615,9 @@ class PKIUpgrader(): tracker = self.subsystem_trackers[instance] except KeyError: tracker = PKIUpgradeTracker(name + ' subsystem', - SUBSYSTEM_VERSION % (instance, subsystem)) + SUBSYSTEM_TRACKER % (instance, subsystem), + version_key='cms.product.version', + index_key='cms.upgrade.index') self.subsystem_trackers[name] = tracker elif instance: @@ -610,14 +625,18 @@ class PKIUpgrader(): tracker = self.instance_trackers[instance] except KeyError: tracker = PKIUpgradeTracker(instance + ' instance', - INSTANCE_VERSION % instance) + INSTANCE_TRACKER % instance, + version_key='PKI_VERSION', + index_key='PKI_UPGRADE_INDEX') self.instance_trackers[instance] = tracker else: if self.system_tracker: tracker = self.system_tracker else: - tracker = PKIUpgradeTracker('system', SYSTEM_VERSION) + tracker = PKIUpgradeTracker('system', SYSTEM_TRACKER, + version_key='PKI_VERSION', + index_key='PKI_UPGRADE_INDEX') self.system_tracker = tracker return tracker diff --git a/base/common/shared/conf/tomcat.conf b/base/common/shared/conf/tomcat.conf index 57a3d1509..9457b0ce7 100644 --- a/base/common/shared/conf/tomcat.conf +++ b/base/common/shared/conf/tomcat.conf @@ -62,3 +62,5 @@ TOMCAT_LOG="[TOMCAT_LOG_DIR]/tomcat-initd.log" # If you wish to further customize your tomcat environment, # put your own definitions here # (i.e. LD_LIBRARY_PATH for some jdbc drivers) + +PKI_VERSION=[APPLICATION_VERSION] diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/WelcomePanel.java b/base/common/src/com/netscape/cms/servlet/csadmin/WelcomePanel.java index 4224c4ebf..b5e921822 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/WelcomePanel.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/WelcomePanel.java @@ -90,7 +90,7 @@ public class WelcomePanel extends WizardPanelBase { context.put("productname", cs.getString("preop.product.name")); context.put("productversion", - cs.getString("preop.product.version")); + cs.getString("cms.product.version")); } catch (EBaseException e) { } context.put("panel", "admin/console/config/welcomepanel.vm"); -- cgit