diff options
| author | Ade Lee <alee@redhat.com> | 2013-04-12 10:22:14 -0400 |
|---|---|---|
| committer | Ade Lee <alee@redhat.com> | 2013-04-16 12:11:21 -0400 |
| commit | 2fcbc293f6020f22aff0052cce5993d43c6ca2ed (patch) | |
| tree | 2ff7cc816f8a6467d0b3fd993d124a84f7ed4080 /base/server | |
| parent | ae6f1867dfb6e46be208c8c15b00322450bc54a9 (diff) | |
| download | pki-2fcbc293f6020f22aff0052cce5993d43c6ca2ed.tar.gz pki-2fcbc293f6020f22aff0052cce5993d43c6ca2ed.tar.xz pki-2fcbc293f6020f22aff0052cce5993d43c6ca2ed.zip | |
Migration script for cloning changes.
Ticket 546
Diffstat (limited to 'base/server')
| -rwxr-xr-x | base/server/upgrade/10.0.1/02-CloningInterfaceChanges | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/base/server/upgrade/10.0.1/02-CloningInterfaceChanges b/base/server/upgrade/10.0.1/02-CloningInterfaceChanges new file mode 100755 index 000000000..524978d4d --- /dev/null +++ b/base/server/upgrade/10.0.1/02-CloningInterfaceChanges @@ -0,0 +1,138 @@ +#!/usr/bin/python +# Authors: +# Ade Lee <alee@redhat.com> +# +# 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 os +import sys +import xml.etree.ElementTree as ET +import pki.upgrade + +class CloningInterfaceChanges(pki.upgrade.PKIUpgradeScriptlet): + + updateDomainServletData = """ + <servlet> + <servlet-name> caUpdateDomainXML-admin </servlet-name> + <servlet-class> com.netscape.cms.servlet.csadmin.UpdateDomainXML </servlet-class> + <init-param> + <param-name> GetClientCert </param-name> + <param-value> true </param-value> + </init-param> + <init-param> + <param-name> authority </param-name> + <param-value> ca </param-value> + </init-param> + <init-param> + <param-name> ID </param-name> + <param-value> caUpdateDomainXML </param-value> + </init-param> + <init-param> + <param-name> interface </param-name> + <param-value> agent </param-value> + </init-param> + <init-param> + <param-name> AuthMgr </param-name> + <param-value> certUserDBAuthMgr </param-value> + </init-param> + <init-param> + <param-name> AuthzMgr </param-name> + <param-value> BasicAclAuthz </param-value> + </init-param> + <init-param> + <param-name> resourceID </param-name> + <param-value> certServer.securitydomain.domainxml </param-value> + </init-param> + </servlet> """ + + updateDomainMappingData = """ + <servlet-mapping> + <servlet-name> caUpdateDomainXML-admin </servlet-name> + <url-pattern> /admin/ca/updateDomainXML </url-pattern> + </servlet-mapping> """ + + + def __init__(self): + + self.message = 'Change interfaces for cloning' + + def upgrade_subsystem(self, instance, subsystem): + web_xml = os.path.join( + pki.upgrade.INSTANCE_BASE_DIR, + instance, 'webapps', subsystem, + 'WEB-INF', 'web.xml') + + self.doc = ET.parse(web_xml) + self.root = self.doc.find('.') + self.remove_get_token_info(subsystem) + if subsystem == "ca": + self.modify_update_number_range(subsystem) + self.modify_update_domain_xml() + if subsystem == "kra": + self.modify_update_number_range(subsystem) + + self.doc.write(web_xml) + + def modify_update_number_range(self, subsystem): + # change servlet and mapping for caUpdateNumberRange + for servlet in self.doc.findall('.//servlet'): + name = servlet.find('servlet-name').text.strip() + if name == (subsystem + "UpdateNumberRange"): + for param in servlet.findall('.//init-param'): + pname = param.find('param-name').text.strip() + if pname == 'interface': + pvalue = param.find('param-value') + pvalue.text = 'admin' + + for mapping in self.doc.findall('.//servlet-mapping'): + name = mapping.find('servlet-name').text.strip() + if name == (subsystem + "UpdateNumberRange"): + url_pattern = mapping.find('url-pattern') + url_pattern.text = '/admin/' + subsystem + '/updateNumberRange' + + def remove_get_token_info(self, subsystem): + # remove getTokenInfo servlet and servlet mapping + for servlet in self.doc.findall('.//servlet'): + name = servlet.find('servlet-name').text.strip() + if name == (subsystem + "GetTokenInfo"): + self.root.remove(servlet) + + for mapping in self.doc.findall('.//servlet-mapping'): + name = mapping.find('servlet-name').text.strip() + if name == (subsystem + "GetTokenInfo"): + self.root.remove(mapping) + + def modify_update_domain_xml(self): + #add caUpdateDomainXML-admin servlet and mapping + found = False + for servlet in self.doc.findall('.//servlet'): + name = servlet.find('servlet-name').text.strip() + if name == 'caUpdateDomainXML-admin': + found = True + if not found: + servlet = ET.fromstring(self.updateDomainServletData) + self.root.append(servlet) + + found = False + for mapping in self.doc.findall('.//servlet-mapping'): + name = mapping.find('servlet-name').text.strip() + if name == 'caUpdateDomainXML-admin': + found = True + if not found: + mapping = ET.fromstring(self.updateDomainMappingData) + self.root.append(mapping) |
