remove CatalogBomScanner

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/5868124a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/5868124a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/5868124a

Branch: refs/heads/master
Commit: 5868124a4eba5e02847479178bfa7415340ffc0a
Parents: d0183c2
Author: Alex Heneveld <[email protected]>
Authored: Wed Jul 12 09:23:37 2017 +0100
Committer: Alex Heneveld <[email protected]>
Committed: Wed Jul 12 09:27:44 2017 +0100

----------------------------------------------------------------------
 .../catalog/CatalogMakeOsgiBundleTest.java      |  20 ---
 .../core/BrooklynFeatureEnablement.java         |  12 --
 .../catalog/internal/BasicBrooklynCatalog.java  |   2 +-
 .../catalog/internal/CatalogBomScanner.java     | 136 -------------------
 .../catalog/internal/CatalogBundleTracker.java  |  71 ----------
 .../brooklyn/core/mgmt/ha/OsgiManager.java      |  40 +++---
 6 files changed, 18 insertions(+), 263 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5868124a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
index 397bcf7..290c9e8 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogMakeOsgiBundleTest.java
@@ -29,12 +29,10 @@ import java.util.zip.ZipEntry;
 
 import org.apache.brooklyn.api.entity.Application;
 import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.camp.brooklyn.AbstractYamlTest;
 import org.apache.brooklyn.core.BrooklynFeatureEnablement;
-import org.apache.brooklyn.core.catalog.internal.CatalogBomScanner;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.EntityAsserts;
 import org.apache.brooklyn.core.mgmt.ha.OsgiBundleInstallationResult;
@@ -53,8 +51,6 @@ import org.apache.brooklyn.util.osgi.VersionedName;
 import org.apache.brooklyn.util.text.Identifiers;
 import org.apache.brooklyn.util.text.Strings;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterMethod;
@@ -80,7 +76,6 @@ public class CatalogMakeOsgiBundleTest extends 
AbstractYamlTest {
     @BeforeClass(alwaysRun = true)
     public void setUp() throws Exception {
         super.setUp();
-        manuallyEnableBomScanner(mgmt());
         bm = new BundleMaker( 
((LocalManagementContext)mgmt()).getOsgiManager().get().getFramework(), 
ResourceUtils.create(this) );
     }
     
@@ -102,21 +97,6 @@ public class CatalogMakeOsgiBundleTest extends 
AbstractYamlTest {
         super.tearDown();
     }
     
-    public static void manuallyEnableBomScanner(ManagementContext mgmt) {
-        
BrooklynFeatureEnablement.enable(BrooklynFeatureEnablement.FEATURE_LOAD_BUNDLE_CATALOG_BOM);
-        
-        CatalogBomScanner scanner = new CatalogBomScanner();
-        BundleContext context = 
((LocalManagementContext)mgmt).getOsgiManager().get().getFramework().getBundleContext();
-        
-        context.registerService(ManagementContext.class.getName(), mgmt, null);
-        ServiceReference<ManagementContext> ref = 
context.getServiceReference(ManagementContext.class);
-        try {
-            scanner.bind(ref);
-        } catch (Exception e) {
-            throw Exceptions.propagate(e);
-        }
-    }
-    
     @AfterMethod(alwaysRun=true)
     public void clearFeatureEnablement() throws Exception {
         BrooklynFeatureEnablement.clearCache();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5868124a/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 2776d9b..8bbe2a4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
+++ b/core/src/main/java/org/apache/brooklyn/core/BrooklynFeatureEnablement.java
@@ -115,17 +115,6 @@ 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.
-     * If a bundle is uploaded its BOM is scanned regardless of this property 
(this only applies to bundles
-     * installed through a non-brooklyn method, eg karaf.)
-     * 
-     * This installs legacy items and so should be deprecated in favour of 
uploading BOMs which Brooklyn manages.
-     */
-    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();
@@ -161,7 +150,6 @@ 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/5868124a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index 046543b..739f225 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -1416,7 +1416,7 @@ public class BasicBrooklynCatalog implements 
BrooklynCatalog {
         log.debug("Adding catalog item to "+mgmt+": "+yaml);
         checkNotNull(yaml, "yaml");
         List<CatalogItemDtoAbstract<?, ?>> result = MutableList.of();
-        collectCatalogItemsFromCatalogBomRoot(yaml, bundle, result, true, 
ImmutableMap.of(), 0, false);
+        collectCatalogItemsFromCatalogBomRoot(yaml, bundle, result, true, 
ImmutableMap.of(), 0, forceUpdate);
 
         // do this at the end for atomic updates; if there are intra-yaml 
references, we handle them specially
         for (CatalogItemDtoAbstract<?, ?> item: result) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5868124a/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
deleted file mode 100644
index 90efaa2..0000000
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBomScanner.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.BrooklynFeatureEnablement;
-import org.apache.brooklyn.util.text.Strings;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-
-/** Scans bundles being added to add their catalog.bom to Brooklyn, 
- * filtering which bundles are allowed add _applications_ through a whitelist 
and blacklist.
- * (All bundles are allowed to add other types.) 
- * See karaf blueprint.xml for configuration, and tests in dist project. */
-// TODO AH: i wonder if we can remove this or generalize it; disallowing just 
app/templates seems a little weird
-// (makes sense as those appear more prominently in some displays, but feels 
like there'd be a better way
-// to customize; intercepting at this particular point is surprising)
-@Beta
-public class CatalogBomScanner {
-
-    private final String ACCEPT_ALL_BY_DEFAULT = ".*";
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(CatalogBomScanner.class);
-
-    // configured by `brooklyn.catalog.osgi.application.{white,black}list`
-    private List<String> bundlesAllowedToAddAppsWhitelist = 
ImmutableList.of(ACCEPT_ALL_BY_DEFAULT);
-    private List<String> bundlesAllowedToAddAppsBlacklist = ImmutableList.of();
-
-    private CatalogBundleTracker catalogBundleTracker;
-
-    public void bind(ServiceReference<ManagementContext> mgmtContextReference) 
throws Exception {
-        if (isEnabled()) {
-            LOG.debug("Binding management context with whiteList [{}] and 
blacklist [{}]",
-                Strings.join(getWhiteList(), "; "),
-                Strings.join(getBlackList(), "; "));
-
-            final BundleContext bundleContext = 
mgmtContextReference.getBundle().getBundleContext();
-            ManagementContext mgmt = 
bundleContext.getService(mgmtContextReference);
-            CatalogBundleLoader bundleLoader = new CatalogBundleLoader(new 
BundlesAllowedToAddAddsFilter(), mgmt);
-
-            catalogBundleTracker = new CatalogBundleTracker(bundleContext, 
bundleLoader);
-            catalogBundleTracker.open();
-        }
-    }
-
-    public void unbind(ServiceReference<ManagementContext> 
mgmtContextReference) throws Exception {
-        if (isEnabled()) {
-            LOG.debug("Unbinding management context");
-            if (null != catalogBundleTracker) {
-                CatalogBundleTracker temp = catalogBundleTracker;
-                catalogBundleTracker = null;
-                temp.close();
-            }
-            
mgmtContextReference.getBundle().getBundleContext().ungetService(mgmtContextReference);
-        }
-    }
-
-    private boolean isEnabled() {
-        return 
BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_LOAD_BUNDLE_CATALOG_BOM);
-    }
-
-    public List<String> getWhiteList() {
-        return bundlesAllowedToAddAppsWhitelist;
-    }
-
-    public void setWhiteList(List<String> whiteList) {
-        this.bundlesAllowedToAddAppsWhitelist = whiteList;
-    }
-
-    public void setWhiteList(String whiteListText) {
-        LOG.debug("Setting whiteList to ", whiteListText);
-        this.bundlesAllowedToAddAppsWhitelist = 
Strings.parseCsv(whiteListText);
-    }
-
-    public List<String> getBlackList() {
-        return bundlesAllowedToAddAppsBlacklist;
-    }
-
-    public void setBlackList(List<String> blackList) {
-        this.bundlesAllowedToAddAppsBlacklist = blackList;
-    }
-
-    public void setBlackList(String blackListText) {
-        LOG.debug("Setting blackList to ", blackListText);
-        this.bundlesAllowedToAddAppsBlacklist = 
Strings.parseCsv(blackListText);
-    }
-
-    public class BundlesAllowedToAddAddsFilter implements Predicate<Bundle> {
-        @Override
-        public boolean apply(@Nullable Bundle input) {
-            return passesWhiteAndBlacklists(input);
-        }
-    }
-
-    private boolean passesWhiteAndBlacklists(Bundle bundle) {
-        return on(bundle, getWhiteList()) && !on(bundle, getBlackList());
-    }
-
-    private boolean on(Bundle bundle, List<String> list) {
-        for (String candidate : list) {
-            final String symbolicName = bundle.getSymbolicName();
-            if (symbolicName.matches(candidate.trim())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5868124a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleTracker.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleTracker.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleTracker.java
deleted file mode 100644
index 1ec4cd2..0000000
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleTracker.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.brooklyn.core.catalog.internal;
-
-import org.apache.brooklyn.util.osgi.VersionedName;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.util.tracker.BundleTracker;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-
-@Beta
-public class CatalogBundleTracker extends BundleTracker<Object> {
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(CatalogBundleTracker.class);
-
-    private CatalogBundleLoader catalogBundleLoader;
-
-    public CatalogBundleTracker(BundleContext bundleContext, 
CatalogBundleLoader catalogBundleLoader) {
-        super(bundleContext, Bundle.ACTIVE, null);
-        this.catalogBundleLoader = catalogBundleLoader;
-    }
-
-    /**
-     * Scans the bundle being added for a catalog.bom file and adds any 
entries in it to the catalog.
-     *
-     * @param bundle      The bundle being added to the bundle context.
-     * @param bundleEvent The event of the addition.
-     * @return null
-     * @throws RuntimeException if the catalog items failed to be added to the 
catalog
-     */
-    @Override
-    public Object addingBundle(Bundle bundle, BundleEvent bundleEvent) {
-        catalogBundleLoader.scanForCatalog(bundle, false, true);
-        return null;
-    }
-
-    /**
-     * Remove the given entries from the catalog, related to the given bundle.
-     *
-     * @param bundle      The bundle being removed to the bundle context.
-     * @param bundleEvent The event of the removal.
-     * @param callback    Ignored
-     * @throws RuntimeException if the catalog items failed to be added to the 
catalog
-     */
-    @Override
-    public void removedBundle(Bundle bundle, BundleEvent bundleEvent, Object 
callback) {
-        LOG.debug("Unloading catalog BOM entries from {} {} {}", 
CatalogUtils.bundleIds(bundle));
-        catalogBundleLoader.removeFromCatalog(new VersionedName(bundle));
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5868124a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/OsgiManager.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/OsgiManager.java 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/OsgiManager.java
index 9b92a8c..9d6587c 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/OsgiManager.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/OsgiManager.java
@@ -41,11 +41,9 @@ import org.apache.brooklyn.api.typereg.ManagedBundle;
 import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.BrooklynFeatureEnablement;
 import org.apache.brooklyn.core.BrooklynVersion;
 import org.apache.brooklyn.core.catalog.internal.CatalogBundleLoader;
 import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.core.server.BrooklynServerConfig;
 import org.apache.brooklyn.core.server.BrooklynServerPaths;
 import org.apache.brooklyn.core.typereg.RegisteredTypePredicates;
@@ -395,33 +393,29 @@ public class OsgiManager {
     
     private static Iterable<? extends CatalogItem<?, ?>> 
loadCatalogBomInternal(ManagementContext mgmt, Bundle bundle, boolean force, 
boolean validate, boolean legacy) {
         Iterable<? extends CatalogItem<?, ?>> catalogItems = MutableList.of();
-        if 
(!BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_LOAD_BUNDLE_CATALOG_BOM))
 {
-            // if the above feature is not enabled, let's do it manually (as a 
contract of this method)
-            try {
-                // TODO improve on this - it ignores the configuration of 
whitelists, see CatalogBomScanner.
-                // One way would be to add the CatalogBomScanner to the new 
Scratchpad area, then retrieving the singleton
-                // here to get back the predicate from it.
-                final Predicate<Bundle> applicationsPermitted = 
Predicates.<Bundle>alwaysTrue();
-
-                CatalogBundleLoader cl = new 
CatalogBundleLoader(applicationsPermitted, mgmt);
-                if (legacy) {
-                    catalogItems = cl.scanForCatalogLegacy(bundle, force);
-                } else {
-                    cl.scanForCatalog(bundle, force, validate);
-                    catalogItems = null;
-                }
-            } catch (RuntimeException ex) {
-                // TODO confirm -- as of May 2017 we no longer uninstall the 
bundle if install of catalog items fails;
-                // caller needs to upgrade, or uninstall then reinstall
-                // (this uninstall wouldn't have unmanaged it in brooklyn in 
any case)
+
+        try {
+            final Predicate<Bundle> applicationsPermitted = 
Predicates.<Bundle>alwaysTrue();
+
+            CatalogBundleLoader cl = new 
CatalogBundleLoader(applicationsPermitted, mgmt);
+            if (legacy) {
+                catalogItems = cl.scanForCatalogLegacy(bundle, force);
+            } else {
+                cl.scanForCatalog(bundle, force, validate);
+                catalogItems = null;
+            }
+        } catch (RuntimeException ex) {
+            // TODO confirm -- as of May 2017 we no longer uninstall the 
bundle if install of catalog items fails;
+            // caller needs to upgrade, or uninstall then reinstall
+            // (this uninstall wouldn't have unmanaged it in brooklyn in any 
case)
 //                try {
 //                    bundle.uninstall();
 //                } catch (BundleException e) {
 //                    log.error("Cannot uninstall bundle " + 
bundle.getSymbolicName() + ":" + bundle.getVersion()+" (after error installing 
catalog items)", e);
 //                }
-                throw new IllegalArgumentException("Error installing catalog 
items", ex);
-            }
+            throw new IllegalArgumentException("Error installing catalog 
items", ex);
         }
+            
         return catalogItems;
     }
     

Reply via email to