>From 4813bf7d9052bbf6d1d68771f05329891c1acbc4 Mon Sep 17 00:00:00 2001 From: Fraser Tweedale Date: Tue, 22 Jul 2014 00:03:47 -0400 Subject: [PATCH] add configuration to disable a dynamic subsystem Add the ability to disable a dynamic subsystem by configuring it with `enabled=false' in CS.cfg. Subsystems are enabled by default. This will be used during `pkispawn' to disable the ProfileSubsystem until the database configuration is established. --- .../src/com/netscape/cmscore/apps/CMSEngine.java | 36 +++++++++++++--------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/base/server/cmscore/src/com/netscape/cmscore/apps/CMSEngine.java b/base/server/cmscore/src/com/netscape/cmscore/apps/CMSEngine.java index 68c64824e37bcad282a5bbeabf6b943fabf39481..b6e92bfbdd372d3980c584ba8c9571a4ec52ec8d 100644 --- a/base/server/cmscore/src/com/netscape/cmscore/apps/CMSEngine.java +++ b/base/server/cmscore/src/com/netscape/cmscore/apps/CMSEngine.java @@ -208,25 +208,25 @@ public class CMSEngine implements ICMSEngine { // static subsystems - must be singletons private static SubsystemInfo[] mStaticSubsystems = { new SubsystemInfo( - Debug.ID, Debug.getInstance()), + Debug.ID, Debug.getInstance(), true), new SubsystemInfo(LogSubsystem.ID, - LogSubsystem.getInstance()), + LogSubsystem.getInstance(), true), new SubsystemInfo( - JssSubsystem.ID, JssSubsystem.getInstance()), + JssSubsystem.ID, JssSubsystem.getInstance(), true), new SubsystemInfo( - DBSubsystem.ID, DBSubsystem.getInstance()), + DBSubsystem.ID, DBSubsystem.getInstance(), true), new SubsystemInfo( - UGSubsystem.ID, UGSubsystem.getInstance()), + UGSubsystem.ID, UGSubsystem.getInstance(), true), new SubsystemInfo( - PluginRegistry.ID, new PluginRegistry()), + PluginRegistry.ID, new PluginRegistry(), true), new SubsystemInfo( - OidLoaderSubsystem.ID, OidLoaderSubsystem.getInstance()), + OidLoaderSubsystem.ID, OidLoaderSubsystem.getInstance(), true), new SubsystemInfo( - X500NameSubsystem.ID, X500NameSubsystem.getInstance()), + X500NameSubsystem.ID, X500NameSubsystem.getInstance(), true), // skip TP subsystem; // problem in needing dbsubsystem in constructor. and it's not used. new SubsystemInfo( - RequestSubsystem.ID, RequestSubsystem.getInstance()), + RequestSubsystem.ID, RequestSubsystem.getInstance(), true), }; // dynamic subsystems are loaded at init time, not neccessarily singletons. @@ -235,11 +235,11 @@ public class CMSEngine implements ICMSEngine { // final static subsystems - must be singletons. private static SubsystemInfo[] mFinalSubsystems = { new SubsystemInfo( - AuthSubsystem.ID, AuthSubsystem.getInstance()), + AuthSubsystem.ID, AuthSubsystem.getInstance(), true), new SubsystemInfo( - AuthzSubsystem.ID, AuthzSubsystem.getInstance()), + AuthzSubsystem.ID, AuthzSubsystem.getInstance(), true), new SubsystemInfo( - JobsScheduler.ID, JobsScheduler.getInstance()), + JobsScheduler.ID, JobsScheduler.getInstance(), true), }; private static final int IP = 0; @@ -892,6 +892,7 @@ public class CMSEngine implements ICMSEngine { ssconfig.getSubStore(String.valueOf(i)); String id = config.getString(PROP_ID); String classname = config.getString(PROP_CLASS); + boolean enabled = config.getBoolean("enabled", true); ISubsystem ss = null; try { @@ -906,7 +907,7 @@ public class CMSEngine implements ICMSEngine { throw new EBaseException( CMS.getUserMessage("CMS_BASE_LOAD_FAILED_1", id, e.toString())); } - mDynSubsystems[i] = new SubsystemInfo(id, ss); + mDynSubsystems[i] = new SubsystemInfo(id, ss, enabled); Debug.trace("loaded dyn subsystem " + id); } } @@ -928,6 +929,10 @@ public class CMSEngine implements ICMSEngine { IConfigStore ssConfig = mConfig.getSubStore(id); CMS.debug("CMSEngine: initSubsystem id=" + id); + if (!ssinfo.mEnabled) { + CMS.debug("CMSEngine: subsystem disabled id=" + id); + return; + } if (doSetId) ss.setId(id); CMS.debug("CMSEngine: ready to init id=" + id); @@ -2000,10 +2005,11 @@ class WarningListener implements ILogEventListener { class SubsystemInfo { public final String mId; public final ISubsystem mInstance; + public final boolean mEnabled; - public SubsystemInfo(String id, ISubsystem ssInstance) { + public SubsystemInfo(String id, ISubsystem ssInstance, boolean enabled) { mId = id; mInstance = ssInstance; + mEnabled = enabled; } - } -- 1.9.3