You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/07/06 12:33:14 UTC

[2/5] brooklyn-server git commit: Hide bundle catalog.bom loading behind a feature flag

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 <sv...@cloudsoftcorp.com>
Authored: Tue Jul 5 12:36:02 2016 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
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()