From 24727d1b096cd30f7474ca9c03fa9c1be04be0cd Mon Sep 17 00:00:00 2001 From: Ade Lee Date: Wed, 20 Nov 2013 10:23:15 -0500 Subject: Add migration scripts to fix registry file and ownership Migration scripts have been added to update the registry file for tomcat instances to use PKI_INSTANCE_NAME instead of PKI_INSTANCE_ID. File ownershipof the registry file and log files is also fixed. Also removed unused lock file logic in operations startup script. This is for migration from 10.0 -> 10.1 Ticket 805 --- base/server/upgrade/10.0.99/03-FixRegistryFile | 57 +++++++++++++++++++ base/server/upgrade/10.0.99/04-FixLogFileOwnership | 64 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100755 base/server/upgrade/10.0.99/03-FixRegistryFile create mode 100755 base/server/upgrade/10.0.99/04-FixLogFileOwnership (limited to 'base/server/upgrade') diff --git a/base/server/upgrade/10.0.99/03-FixRegistryFile b/base/server/upgrade/10.0.99/03-FixRegistryFile new file mode 100755 index 000000000..053697f49 --- /dev/null +++ b/base/server/upgrade/10.0.99/03-FixRegistryFile @@ -0,0 +1,57 @@ +#!/usr/bin/python +# Authors: +# Ade Lee +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright (C) 2013 Red Hat, Inc. +# All rights reserved. +# + +import grp +import os +import pwd +import re +import pki.server +import pki.server.upgrade + + +class FixRegistryFile(pki.server.upgrade.PKIServerUpgradeScriptlet): + + def __init__(self): + self.message = 'Replace PKI_INSTANCE_ID and fix registry file ownership' + + def upgrade_instance(self, instance): + registry_file = os.path.join( + pki.server.REGISTRY_DIR, 'tomcat', instance.name, instance.name) + self.backup(registry_file) + + with open(registry_file, "r") as registry: + lines = registry.readlines() + + with open(registry_file, "w") as registry: + for line in lines: + m = re.search('^PKI_USER=(.*)$', line) + if m: + user = m.group(1) + m = re.search('^PKI_GROUP=(.*)$', line) + if m: + group = m.group(1) + + registry.write( + re.sub(r'PKI_INSTANCE_ID', 'PKI_INSTANCE_NAME', line)) + + uid = pwd.getpwnam(user).pw_uid + gid = grp.getgrnam(group).gr_gid + os.chown(registry_file, uid, gid) diff --git a/base/server/upgrade/10.0.99/04-FixLogFileOwnership b/base/server/upgrade/10.0.99/04-FixLogFileOwnership new file mode 100755 index 000000000..d7de7f96f --- /dev/null +++ b/base/server/upgrade/10.0.99/04-FixLogFileOwnership @@ -0,0 +1,64 @@ +#!/usr/bin/python +# Authors: +# Ade Lee +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright (C) 2013 Red Hat, Inc. +# All rights reserved. +# + +import grp +import os +import pwd +import re +import pki.server.upgrade + + +class FixLogFileOwnership(pki.server.upgrade.PKIServerUpgradeScriptlet): + + def __init__(self): + self.message = 'Fix log file ownership' + + def upgrade_instance(self, instance): + registry_file = os.path.join( + pki.server.REGISTRY_DIR, 'tomcat', instance.name, instance.name) + + with open(registry_file, "r") as registry: + lines = registry.readlines() + + for line in lines: + m = re.search('^PKI_USER=(.*)$', line) + if m: + user = m.group(1) + m = re.search('^PKI_GROUP=(.*)$', line) + if m: + group = m.group(1) + + uid = pwd.getpwnam(user).pw_uid + gid = grp.getgrnam(group).gr_gid + + log_dir = os.path.join('/var/log/pki', instance.name) + + self._chown(log_dir, uid, gid) + + + def _chown(self, path, uid, gid): + os.chown(path, uid, gid) + for item in os.listdir(path): + itempath = os.path.join(path, item) + if os.path.isfile(itempath): + os.chown(itempath, uid, gid) + elif os.path.isdir(itempath): + self._chown(itempath, uid, gid) -- cgit