diff options
| author | Endi Sukma Dewata <edewata@redhat.com> | 2013-04-11 15:27:27 -0400 |
|---|---|---|
| committer | Endi Sukma Dewata <edewata@redhat.com> | 2013-04-17 11:36:28 -0400 |
| commit | 76a2e85dbbc8d8b8472bf91fc75e21163672e7f4 (patch) | |
| tree | e3bc2782df9654af8bbd1ae24cb78d0c4d906905 /base/common | |
| parent | aea976ad646037d3122113790175d7e2edb4b33a (diff) | |
| download | pki-76a2e85dbbc8d8b8472bf91fc75e21163672e7f4.tar.gz pki-76a2e85dbbc8d8b8472bf91fc75e21163672e7f4.tar.xz pki-76a2e85dbbc8d8b8472bf91fc75e21163672e7f4.zip | |
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
Diffstat (limited to 'base/common')
| -rw-r--r-- | base/common/python/pki/upgrade.py | 77 | ||||
| -rw-r--r-- | base/common/shared/conf/tomcat.conf | 2 | ||||
| -rw-r--r-- | base/common/src/com/netscape/cms/servlet/csadmin/WelcomePanel.java | 2 |
3 files changed, 51 insertions, 30 deletions
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 <key>: <value> - match = re.match('^\s*(\S*)\s*:\s*(.*)\s*$', line) + # parse <key> <delimiter> <value> + 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 <key>: <value> - match = re.match('^\s*(\S*)\s*:\s*(.*)\s*$', line) + # parse <key> <delimiter> <value> + 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 <key>: <value> - match = re.match('^\s*(\S*)\s*: \s*(.*)\s*$', line) + # parse <key> <delimiter> <value> + 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"); |
