Hide bundle catalog.bom loading behind a feature flag
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/48abd262 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/48abd262 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/48abd262 Branch: refs/heads/master Commit: 48abd262099548bb246e1f1d9a7838e5b26958dc Parents: 30573a5 Author: Svetoslav Neykov <[email protected]> Authored: Tue Jul 5 12:36:02 2016 +0300 Committer: Svetoslav Neykov <[email protected]> Committed: Wed Jul 6 14:58:48 2016 +0300 ---------------------------------------------------------------------- .../core/BrooklynFeatureEnablement.java | 8 ++++++ .../catalog/internal/CatalogBomScanner.java | 27 +++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/48abd262/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java index 48418a3..f2e8a0a 100644 --- a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java +++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java @@ -112,6 +112,13 @@ public class BrooklynFeatureEnablement { public static final String FEATURE_VALIDATE_LOCATION_SSH_KEYS = "brooklyn.validate.locationSshKeys"; /** + * Whether to scan newly loaded bundles for catalog.bom and load it. + * + * The functionality loads catalog items regardless of the persistence state so best used with persistence disabled. + */ + public static final String FEATURE_LOAD_BUNDLE_CATALOG_BOM = FEATURE_PROPERTY_PREFIX+".osgi.catalog_bom"; + + /** * Values explicitly set by Java calls. */ private static final Map<String, Boolean> FEATURE_ENABLEMENTS = Maps.newLinkedHashMap(); @@ -146,6 +153,7 @@ public class BrooklynFeatureEnablement { setDefault(FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND, false); setDefault(FEATURE_SSH_ASYNC_EXEC, false); setDefault(FEATURE_VALIDATE_LOCATION_SSH_KEYS, true); + setDefault(FEATURE_LOAD_BUNDLE_CATALOG_BOM, false); } static { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/48abd262/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java index ae2885a..b7e0041 100644 --- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java +++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import org.apache.brooklyn.api.catalog.CatalogItem; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.core.BrooklynFeatureEnablement; import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.stream.Streams; @@ -60,21 +61,29 @@ public class CatalogBomScanner { private CatalogPopulator catalogTracker; public void bind(ServiceReference<ManagementContext> managementContext) throws Exception { - LOG.debug("Binding management context with whiteList [{}] and blacklist [{}]", - Strings.join(getWhiteList(), "; "), - Strings.join(getBlackList(), "; ")); - catalogTracker = new CatalogPopulator(managementContext); + if (isEnabled()) { + LOG.debug("Binding management context with whiteList [{}] and blacklist [{}]", + Strings.join(getWhiteList(), "; "), + Strings.join(getBlackList(), "; ")); + catalogTracker = new CatalogPopulator(managementContext); + } } public void unbind(ServiceReference<ManagementContext> managementContext) throws Exception { - LOG.debug("Unbinding management context"); - if (null != catalogTracker) { - CatalogPopulator temp = catalogTracker; - catalogTracker = null; - temp.close(); + if (isEnabled()) { + LOG.debug("Unbinding management context"); + if (null != catalogTracker) { + CatalogPopulator temp = catalogTracker; + catalogTracker = null; + temp.close(); + } } } + private boolean isEnabled() { + return BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_LOAD_BUNDLE_CATALOG_BOM); + } + private String[] bundleIds(Bundle bundle) { return new String[] { String.valueOf(bundle.getBundleId()), bundle.getSymbolicName(), bundle.getVersion().toString()
