You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/11/17 15:48:06 UTC

[brooklyn-server] branch master updated (1c68dc3 -> adae0d7)

This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git.


    from 1c68dc3  remove internal gson class; use guava's version instead
     new d766cfe  fix kubernetes osgi import, fix osgi package confusion, tidy features
     new 6e51004  remove YAML enrichers from core which are now added in policy bundle
     new adae0d7  use jakarta for ws.rs-api

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 camp/camp-brooklyn/pom.xml                  |   4 +-
 core/pom.xml                                |   5 +-
 core/src/main/resources/catalog.bom         |  14 +-
 karaf/features/src/main/feature/feature.xml | 273 ++++++++++++++++------------
 locations/container/pom.xml                 |   4 +-
 locations/jclouds/pom.xml                   |   4 +-
 pom.xml                                     |   8 +-
 rest/rest-api/pom.xml                       |   4 +-
 rest/rest-server/pom.xml                    |   4 +-
 utils/rest-swagger/pom.xml                  |   4 +-
 10 files changed, 173 insertions(+), 151 deletions(-)

[brooklyn-server] 02/03: remove YAML enrichers from core which are now added in policy bundle

Posted by he...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 6e510041e37202422a64f1e10f225f0ca0f3923a
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Wed Nov 17 12:58:07 2021 +0000

    remove YAML enrichers from core which are now added in policy bundle
---
 core/src/main/resources/catalog.bom | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/core/src/main/resources/catalog.bom b/core/src/main/resources/catalog.bom
index f5ad129..9b5ccd0 100644
--- a/core/src/main/resources/catalog.bom
+++ b/core/src/main/resources/catalog.bom
@@ -148,18 +148,6 @@ brooklyn.catalog:
         type: org.apache.brooklyn.enricher.stock.UpdatingMap
         name: Map Updater
         description: Updates an entry in a sensor Map
-    - id: org.apache.brooklyn.enricher.stock.YamlRollingTimeWindowMeanEnricher
-      itemType: enricher
-      item:
-        type: org.apache.brooklyn.enricher.stock.YamlRollingTimeWindowMeanEnricher
-        name: YAML Rolling Average
-        description: Transforms sensor data into a rolling average based on a time window.")
-    - id: org.apache.brooklyn.enricher.stock.YamlTimeWeightedDeltaEnricher
-      itemType: enricher
-      item:
-        type: org.apache.brooklyn.enricher.stock.YamlTimeWeightedDeltaEnricher
-        name: YAML Time-weighted Delta
-        description: Converts an absolute count sensor into a delta sensor
     - id: org.apache.brooklyn.enricher.stock.reducer.Reducer
       itemType: enricher
       item:
@@ -206,4 +194,4 @@ brooklyn.catalog:
       format: java-type-name
       itemType: bean
       item:
-        type: org.apache.brooklyn.core.effector.http.HttpCommandEffector
\ No newline at end of file
+        type: org.apache.brooklyn.core.effector.http.HttpCommandEffector

[brooklyn-server] 03/03: use jakarta for ws.rs-api

Posted by he...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit adae0d769d975a3d513729a2c3ac36ccc317fb01
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Wed Nov 17 15:03:57 2021 +0000

    use jakarta for ws.rs-api
    
    this has better osgi verisoning info
    (also is newer)
---
 camp/camp-brooklyn/pom.xml                  | 4 ++--
 karaf/features/src/main/feature/feature.xml | 9 +++++----
 locations/container/pom.xml                 | 4 ++--
 locations/jclouds/pom.xml                   | 4 ++--
 pom.xml                                     | 6 +++---
 rest/rest-api/pom.xml                       | 4 ++--
 rest/rest-server/pom.xml                    | 4 ++--
 utils/rest-swagger/pom.xml                  | 4 ++--
 8 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/camp/camp-brooklyn/pom.xml b/camp/camp-brooklyn/pom.xml
index 673e552..26e529e 100644
--- a/camp/camp-brooklyn/pom.xml
+++ b/camp/camp-brooklyn/pom.xml
@@ -152,8 +152,8 @@
         </dependency>
         <dependency>
             <!-- jsr311 excluded from jclouds; see jclouds module's pom for further comments. -->
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml
index 48fd9fa..24d981d 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -44,7 +44,8 @@
 
     <feature name="brooklyn-essential-deps" version="${project.version}" description="Brooklyn Essential Dependencies, to load early">
         <bundle>mvn:jakarta.annotation/jakarta.annotation-api/${jakarta.annotation-api.version}</bundle>
-        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>  <!-- complementary to above, but split packages; excluded by karaf.features.xml as not needed, confuses things -->
+        <bundle>mvn:jakarta.xml.bind/jakarta.xml.bind-api/${jakarta.xml.bind-api.version}</bundle>  <!-- preferred over servicemix jaxb (identical) -->
 
         <bundle>mvn:org.slf4j/jul-to-slf4j/${slf4j.version}</bundle>
         <bundle>mvn:ch.qos.logback/logback-classic/${logback.version}</bundle>
@@ -94,7 +95,7 @@
         <bundle>mvn:org.apache.brooklyn/brooklyn-utils-rest-swagger/${project.version}</bundle>
 
         <bundle>mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
-        <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${jax-rs-api.version}</bundle>
+        <bundle dependency="true">mvn:jakarta.ws.rs/jakarta.ws.rs-api/${jax-rs-api.version}</bundle>
 
         <bundle>wrap:mvn:javax.validation/validation-api/${validation-api.version}</bundle>
         <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>
@@ -235,7 +236,7 @@
 
         <!-- should be deps of jax-rs-2.0 rest-api project -->
         <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
-        <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${jax-rs-api.version}</bundle>
+        <bundle dependency="true">mvn:jakarta.ws.rs/jakarta.ws.rs-api/${jax-rs-api.version}</bundle>
 
         <config name="org.apache.cxf.osgi">
             org.apache.cxf.servlet.context = /v1
@@ -331,7 +332,7 @@
         <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/${jsch.agentproxy.bundle.version}</bundle>
 
         <!-- upstream dependencies, maybe not needed --> 
-        <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${jax-rs-api.version}</bundle>
+        <bundle dependency="true">mvn:jakarta.ws.rs/jakarta.ws.rs-api/${jax-rs-api.version}</bundle>  <!-- was javax; mapped to jakarta -->
         <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_1</bundle>
         <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0_5</bundle>
         <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oauth-commons/20100527_1</bundle>
diff --git a/locations/container/pom.xml b/locations/container/pom.xml
index 63589cd..b1d9b59 100644
--- a/locations/container/pom.xml
+++ b/locations/container/pom.xml
@@ -149,8 +149,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/locations/jclouds/pom.xml b/locations/jclouds/pom.xml
index 9602838..c2c7398 100644
--- a/locations/jclouds/pom.xml
+++ b/locations/jclouds/pom.xml
@@ -191,8 +191,8 @@
                 For tests running in the module still need to use a specific dependency - use JAX-RS 2.0 as
                 that's what is used in standard build.
             -->
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/pom.xml b/pom.xml
index 247d793..7d3550a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -169,7 +169,7 @@
         <aopalliance.version>1.0</aopalliance.version>
         <commons-configuration.version>1.7</commons-configuration.version>
         <commons-lang.version>2.4</commons-lang.version>
-        <jax-rs-api.version>2.1.1</jax-rs-api.version> <!-- differs from jclouds 2.2.0, which depends on v2.0.1 -->
+        <jax-rs-api.version>2.1.6</jax-rs-api.version> <!-- bumped from various; using jakarta now; this has better osgi signature; other maps to 2.1.99.b01 ? -->
         <maxmind.version>2.8.0-rc1</maxmind.version>
         <maxmind-db.version>1.2.1</maxmind-db.version>
         <winrm4j.version>0.12.3</winrm4j.version>  <!-- WINRM4J_VERSION -->
@@ -801,8 +801,8 @@
             <!-- JAX-RS dependencies-->
             <!--  JAX-RS 2.0 API -->
             <dependency>
-                <groupId>javax.ws.rs</groupId>
-                <artifactId>javax.ws.rs-api</artifactId>
+                <groupId>jakarta.ws.rs</groupId>
+                <artifactId>jakarta.ws.rs-api</artifactId>
                 <version>${jax-rs-api.version}</version>
             </dependency>
             <dependency>
diff --git a/rest/rest-api/pom.xml b/rest/rest-api/pom.xml
index 6a978d4..617f831 100644
--- a/rest/rest-api/pom.xml
+++ b/rest/rest-api/pom.xml
@@ -62,8 +62,8 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
         </dependency>
 
         <dependency>
diff --git a/rest/rest-server/pom.xml b/rest/rest-server/pom.xml
index 2cc4d60..60e26b5 100644
--- a/rest/rest-server/pom.xml
+++ b/rest/rest-server/pom.xml
@@ -105,8 +105,8 @@
             <artifactId>jetty-servlet</artifactId>
         </dependency>
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
diff --git a/utils/rest-swagger/pom.xml b/utils/rest-swagger/pom.xml
index 2213164..fd73dc6 100644
--- a/utils/rest-swagger/pom.xml
+++ b/utils/rest-swagger/pom.xml
@@ -37,8 +37,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>jakarta.ws.rs</groupId>
+            <artifactId>jakarta.ws.rs-api</artifactId>
         </dependency>
 
         <dependency>

[brooklyn-server] 01/03: fix kubernetes osgi import, fix osgi package confusion, tidy features

Posted by he...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit d766cfe59b1b121795f3036431c2352335f86c6d
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Wed Nov 17 12:30:39 2021 +0000

    fix kubernetes osgi import, fix osgi package confusion, tidy features
    
    declare fewer things as dependency=true to speed up startup and make things (eg guava) available when needed;
    some things still declared as dependency=true are needed to prevent confusion though
    
    also take care to minimize confusion of packages vis-a-vis javax.annotation, ws, and rs-api
    
    seems to be working!
---
 core/pom.xml                                |   5 +-
 karaf/features/src/main/feature/feature.xml | 266 ++++++++++++++++------------
 pom.xml                                     |   2 +-
 3 files changed, 153 insertions(+), 120 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 234746d..65cda35 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -58,6 +58,10 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId> <!-- for javax.annotation.Nullable etc; declare here, and a few places, to help bnd get the right package version -->
+        </dependency>
+        <dependency>
             <groupId>com.hierynomus</groupId>
             <artifactId>sshj</artifactId>
             <exclusions>
@@ -296,7 +300,6 @@
                         <Import-Package>
                             !org.apache.brooklyn.rt.felix,
                             !org.apache.felix.framework,
-                            javax.annotation;version="[1.2,2)",
                             *
                         </Import-Package>
                     </instructions>
diff --git a/karaf/features/src/main/feature/feature.xml b/karaf/features/src/main/feature/feature.xml
index 0466a82..48fd9fa 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -26,50 +26,52 @@
     <repository>mvn:io.fabric8.kubernetes/kubernetes-karaf/${kubernetes-client.version}/xml/features</repository>
 
     <feature name="swagger" version="${swagger.version}" description="Swagger Annotations+Core+JAXRS+Models">
-        <bundle dependency='true'>mvn:com.google.guava/guava/${guava-swagger.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.guava/failureaccess/${failureaccess.version}</bundle>
+        <bundle>mvn:com.google.guava/guava/${guava-swagger.version}</bundle>
+        <bundle>mvn:com.google.guava/failureaccess/${failureaccess.version}</bundle>
 
         <bundle>mvn:io.swagger/swagger-annotations/${swagger.version}</bundle>
         <bundle>wrap:mvn:io.swagger/swagger-core/${swagger.version}</bundle>
         <bundle>wrap:mvn:io.swagger/swagger-jaxrs/${swagger.version}</bundle>
         <bundle>mvn:io.swagger/swagger-models/${swagger.version}</bundle>
 
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle>
     </feature>
 
-    <feature name="brooklyn-essential-deps" version="${project.version}" description="Brooklyn Common Utils">
-        <bundle dependency="true">mvn:jakarta.annotation/jakarta.annotation-api/${jakarta.annotation-api.version}</bundle>
+    <feature name="brooklyn-essential-deps" version="${project.version}" description="Brooklyn Essential Dependencies, to load early">
+        <bundle>mvn:jakarta.annotation/jakarta.annotation-api/${jakarta.annotation-api.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>
 
-        <bundle dependency="true">mvn:org.slf4j/jul-to-slf4j/${slf4j.version}</bundle>
-        <bundle dependency="true">mvn:ch.qos.logback/logback-classic/${logback.version}</bundle>
-        <bundle dependency="true">mvn:ch.qos.logback/logback-core/${logback.version}</bundle>
+        <bundle>mvn:org.slf4j/jul-to-slf4j/${slf4j.version}</bundle>
+        <bundle>mvn:ch.qos.logback/logback-classic/${logback.version}</bundle>
+        <bundle>mvn:ch.qos.logback/logback-core/${logback.version}</bundle>
 
-        <bundle dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle>
-        <bundle dependency="true">mvn:org.codehaus.groovy/groovy-all/${groovy.version}</bundle>
-        <bundle dependency="true">mvn:commons-io/commons-io/${commons-io.version}</bundle>
-        <bundle dependency="true">mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>
-        <bundle dependency="true">mvn:org.yaml/snakeyaml/${snakeyaml.version}</bundle>
+        <bundle>mvn:com.google.guava/failureaccess/${failureaccess.version}</bundle>
+        <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
+        <bundle>mvn:org.codehaus.groovy/groovy-all/${groovy.version}</bundle>
+        <bundle>mvn:commons-io/commons-io/${commons-io.version}</bundle>
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>
+        <bundle>mvn:org.yaml/snakeyaml/${snakeyaml.version}</bundle>
 
-        <bundle dependency="true">mvn:org.apache.httpcomponents/httpcore-osgi/${httpcomponents.httpcore.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/${httpcomponents.httpclient.version}</bundle>
+        <bundle>mvn:org.apache.httpcomponents/httpcore-osgi/${httpcomponents.httpcore.version}</bundle>
+        <bundle>mvn:org.apache.httpcomponents/httpclient-osgi/${httpcomponents.httpclient.version}</bundle>
 
         <feature prerequisite="true">wrap</feature>
 
-        <bundle dependency="true">mvn:org.bouncycastle/bcprov-ext-jdk15on/${bouncycastle.version}</bundle>
-        <bundle dependency="true">mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib.version}</bundle>
+        <bundle>mvn:org.bouncycastle/bcprov-ext-jdk15on/${bouncycastle.version}</bundle>
+        <bundle>mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib.version}</bundle>
         <!-- wrapped to import and export eddsa.math subpackage which sshj seems to need to compare equality on the Curve class;
              i can't tell what magic made this work in the past; sshj in Ed25519PublicKey does a `xxx.getCurve().equals(yyy.getCurve())`,
              so doesn't need to import it, but with OSGi we get a NoClassDefFound if we don't export that package from eddsa then import it into sshj :( -->
-<!--        <bundle dependency="true">mvn:net.i2p.crypto/eddsa/${eddsa.version}</bundle>-->
-<!--        <bundle dependency="true">mvn:com.hierynomus/sshj/${sshj.version}</bundle>-->
-        <bundle dependency="true">wrap:mvn:net.i2p.crypto/eddsa/${eddsa.version}$overwrite=merge&amp;Bundle-SymbolicName=net.i2p.crypto.eddsa_wrapped&amp;Bundle-Version=${eddsa.version}&amp;Export-Package=*;version="${eddsa.version}"</bundle>
-        <bundle dependency="true">wrap:mvn:com.hierynomus/sshj/${sshj.version}$overwrite=merge&amp;Bundle-SymbolicName=com.hierynomus.sshj_wrapped&amp;Bundle-Version=${sshj.version}&amp;Import-Package=net.i2p.crypto.eddsa.math,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,net.i2p.crypto.eddsa;version="[0.2,1)",net.i2p.crypto.eddsa.spec;version="[0.2,1)",com.jcraft.jzlib;version="[1.1,2)";resolution:=optional,org.slf4j;version="[1.7,5)",org.bouncycastle.asn1;resolution:=optional; [...]
+<!--        <bundle>mvn:net.i2p.crypto/eddsa/${eddsa.version}</bundle>-->
+<!--        <bundle>mvn:com.hierynomus/sshj/${sshj.version}</bundle>-->
+        <bundle>wrap:mvn:net.i2p.crypto/eddsa/${eddsa.version}$overwrite=merge&amp;Bundle-SymbolicName=net.i2p.crypto.eddsa_wrapped&amp;Bundle-Version=${eddsa.version}&amp;Export-Package=*;version="${eddsa.version}"</bundle>
+        <bundle>wrap:mvn:com.hierynomus/sshj/${sshj.version}$overwrite=merge&amp;Bundle-SymbolicName=com.hierynomus.sshj_wrapped&amp;Bundle-Version=${sshj.version}&amp;Import-Package=net.i2p.crypto.eddsa.math,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,net.i2p.crypto.eddsa;version="[0.2,1)",net.i2p.crypto.eddsa.spec;version="[0.2,1)",com.jcraft.jzlib;version="[1.1,2)";resolution:=optional,org.slf4j;version="[1.7,5)",org.bouncycastle.asn1;resolution:=optional;version="[1.60,2)" [...]
 
     </feature>
 
@@ -91,12 +93,11 @@
 
         <bundle>mvn:org.apache.brooklyn/brooklyn-utils-rest-swagger/${project.version}</bundle>
 
-        <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
+        <bundle>mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
         <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${jax-rs-api.version}</bundle>
 
-        <!-- TODO: version 1.1.0.Final has OSGi manifest; check if upgrade doesn't get rid of wrap -->
-        <bundle dependency="true">wrap:mvn:javax.validation/validation-api/${validation-api.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>
+        <bundle>wrap:mvn:javax.validation/validation-api/${validation-api.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>
     </feature>
 
     <feature name="brooklyn-rest-api" version="${project.version}" description="Brooklyn REST API">
@@ -107,16 +108,16 @@
         <bundle>mvn:org.apache.brooklyn/brooklyn-rest-api/${project.version}</bundle>
 
         <bundle dependency="true">mvn:org.jvnet.mimepull/mimepull/1.9.3</bundle>
-        <bundle dependency="true">mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
+        <bundle>mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
 
         <!-- TODO: version 1.1.0.Final has OSGi manifest; check if upgrade doesn't get rid of wrap -->
         <bundle dependency="true">wrap:mvn:javax.validation/validation-api/${validation-api.version}</bundle>
 
-        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
-        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
-        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
 
-        <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
+        <bundle>mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
     </feature>
 
 <!--
@@ -126,7 +127,7 @@
 
         <bundle>mvn:org.apache.brooklyn/brooklyn-rest-client/${project.version}</bundle>
 
-        <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/${httpclient.version}</bundle>
+        <bundle dependency='true'>mvn:org.apache.httpcomponents/httpclient-osgi/${httpclient.version}</bundle>
         <bundle dependency='true'>mvn:commons-logging/commons-logging/${commons-logging.version}</bundle>
         <bundle dependency='true'>mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>
 
@@ -158,54 +159,55 @@
         <bundle>mvn:org.apache.brooklyn/brooklyn-core/${project.version}</bundle>
         <bundle>mvn:org.apache.brooklyn/brooklyn-utils-groovy/${project.version}</bundle>
 
-        <bundle dependency="true">mvn:com.google.code.gson/gson/${gson.version}</bundle>
-        <bundle dependency="true">mvn:com.jayway.jsonpath/json-path/${jsonPath.version}</bundle>
-        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${fasterxml.jackson.version}</bundle>
-        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
-        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.google.code.gson/gson/${gson.version}</bundle>
+        <bundle>mvn:com.jayway.jsonpath/json-path/${jsonPath.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${fasterxml.jackson.version}</bundle>
 
-        <bundle dependency="true">mvn:net.minidev/json-smart/${jsonSmart.version}</bundle>
-        <bundle dependency="true">mvn:net.minidev/accessors-smart/${minidev.accessors-smart.version}</bundle>
+        <bundle>mvn:net.minidev/json-smart/${jsonSmart.version}</bundle>
+        <bundle>mvn:net.minidev/accessors-smart/${minidev.accessors-smart.version}</bundle>
         <!-- we need a really old one for json-path; later ones are wanted by pax and aries -->
-        <bundle dependency="true">mvn:org.ow2.asm/asm/${ow2.asm.version.jsonpath}</bundle>
-        <bundle dependency="true">mvn:org.ow2.asm/asm-commons/${ow2.asm.version.jsonpath}</bundle>
-        <bundle dependency="true">mvn:org.ow2.asm/asm-tree/${ow2.asm.version.jsonpath}</bundle>
-        <bundle dependency="true">mvn:org.ow2.asm/asm-analysis/${ow2.asm.version.jsonpath}</bundle>
-        <bundle dependency="true">mvn:org.ow2.asm/asm-util/${ow2.asm.version.jsonpath}</bundle>
-
-        <bundle dependency="true">mvn:org.ops4j.pax.web/pax-web-spi/${pax-web.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata_2.0_spec.version}</bundle>
-        <bundle dependency="true">mvn:com.thoughtworks.xstream/xstream/${xstream.version}</bundle>
-        <bundle dependency="true">mvn:org.freemarker/freemarker/${freemarker.version}</bundle>
-
-        <bundle dependency="true">mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3.servicemix.version}</bundle> <!-- from com.thoughtworks.xstream/xstream -->
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kxml2/${kxml2.servicemix.version}</bundle>
+        <bundle>mvn:org.ow2.asm/asm/${ow2.asm.version.jsonpath}</bundle>
+        <bundle>mvn:org.ow2.asm/asm-commons/${ow2.asm.version.jsonpath}</bundle>
+        <bundle>mvn:org.ow2.asm/asm-tree/${ow2.asm.version.jsonpath}</bundle>
+        <bundle>mvn:org.ow2.asm/asm-analysis/${ow2.asm.version.jsonpath}</bundle>
+        <bundle>mvn:org.ow2.asm/asm-util/${ow2.asm.version.jsonpath}</bundle>
+
+        <bundle>mvn:org.ops4j.pax.web/pax-web-spi/${pax-web.version}</bundle>
+        <bundle>mvn:org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec/${geronimo-ws-metadata_2.0_spec.version}</bundle>
+        <bundle>mvn:com.thoughtworks.xstream/xstream/${xstream.version}</bundle>
+        <bundle>mvn:org.freemarker/freemarker/${freemarker.version}</bundle>
+
+        <bundle>mvn:commons-codec/commons-codec/${commons-codec.version}</bundle>
+        <bundle>mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3.servicemix.version}</bundle> <!-- from com.thoughtworks.xstream/xstream -->
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kxml2/${kxml2.servicemix.version}</bundle>
 
         <!-- TODO: don't use wrap -->
-        <bundle dependency="true">wrap:mvn:com.maxmind.geoip2/geoip2/${maxmind.version}</bundle> <!-- from geoip2 -->
-        <bundle dependency="true">wrap:mvn:com.maxmind.db/maxmind-db/${maxmind-db.version}</bundle>
+        <bundle>wrap:mvn:com.maxmind.geoip2/geoip2/${maxmind.version}</bundle> <!-- from geoip2 -->
+        <bundle>wrap:mvn:com.maxmind.db/maxmind-db/${maxmind-db.version}</bundle>
 
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.reflections/${reflections.bundle.version}</bundle>
     </feature>
 
     <feature name="brooklyn-camp-brooklyn" version="${project.version}" description="Brooklyn CAMP REST API">
-        <bundle>mvn:org.apache.brooklyn/brooklyn-camp/${project.version}</bundle>
+        <bundle>mvn:commons-beanutils/commons-beanutils/${commons-beanutils.version}</bundle>
+        <bundle>mvn:commons-collections/commons-collections/${commons-collections.version}</bundle>
 
         <feature>brooklyn-core</feature>
         <feature>brooklyn-camp-base</feature>
-        <bundle dependency="true">mvn:commons-beanutils/commons-beanutils/${commons-beanutils.version}</bundle>
-        <bundle dependency="true">mvn:commons-collections/commons-collections/${commons-collections.version}</bundle>
+
+        <bundle>mvn:org.apache.brooklyn/brooklyn-camp/${project.version}</bundle>
     </feature>
 
     <feature name="brooklyn-camp-base" version="${project.version}" description="Brooklyn CAMP Base">
         <bundle>mvn:org.apache.brooklyn.camp/camp-base/${project.version}</bundle>
 
         <feature>brooklyn-utils-common</feature>
-        <bundle dependency="true">mvn:org.apache.commons/commons-compress/${commons-compress.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
+        <bundle>mvn:org.apache.commons/commons-compress/${commons-compress.version}</bundle>
+        <bundle>mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
     </feature>
 
 <!--
@@ -229,7 +231,7 @@
         <bundle dependency="true">mvn:org.apache.cxf/cxf-rt-frontend-jaxrs/${cxf.version}</bundle>
         <bundle dependency="true">mvn:org.apache.cxf.karaf/cxf-karaf-commands/${cxf.version}</bundle>
 
-        <bundle dependency="true">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${fasterxml.jackson.version}</bundle>
 
         <!-- should be deps of jax-rs-2.0 rest-api project -->
         <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/${javax-servlet.version}</bundle>
@@ -254,15 +256,15 @@
     </feature>
 
     <feature name="brooklyn-commands"  version="${project.version}"  description="Brooklyn Shell Commands">
-        <bundle dependency="true">mvn:org.apache.brooklyn/brooklyn-launcher-common/${project.version}</bundle>
+        <bundle>mvn:org.apache.brooklyn/brooklyn-launcher-common/${project.version}</bundle>
         <bundle>mvn:org.apache.brooklyn/brooklyn-commands/${project.version}</bundle>
     </feature>
 
     <feature name="brooklyn-software-winrm" version="${project.version}" description="Brooklyn WinRM Software Entities">
         <bundle>mvn:org.apache.brooklyn/brooklyn-software-winrm/${project.version}</bundle>
         <feature>brooklyn-core</feature>
-        <bundle dependency="true">mvn:io.cloudsoft.windows/winrm4j/${winrm4j.version}</bundle>
-        <bundle dependency="true">mvn:io.cloudsoft.windows/winrm4j-client/${winrm4j.version}</bundle>
+        <bundle>mvn:io.cloudsoft.windows/winrm4j/${winrm4j.version}</bundle>
+        <bundle>mvn:io.cloudsoft.windows/winrm4j-client/${winrm4j.version}</bundle>
         <bundle>mvn:org.apache.brooklyn/brooklyn-karaf-httpcomponents-extension/${project.version}</bundle>
         <feature>cxf-jaxws</feature>
         <feature>cxf-http-async</feature>
@@ -275,8 +277,9 @@
     </feature>
 
     <feature name="brooklyn-software-base"  version="${project.version}"  description="Brooklyn Software Base">
+        <feature prerequisite="true">brooklyn-essential-deps</feature>
         <bundle>mvn:org.apache.brooklyn/brooklyn-software-base/${project.version}</bundle>
-        <bundle dependency="true">wrap:mvn:org.glassfish.external/opendmk_jmxremote_optional_jar/${opendmk_jmxremote_optional_jar.version}$Import-Package=javax.management.openmbean,*</bundle>
+        <bundle>wrap:mvn:org.glassfish.external/opendmk_jmxremote_optional_jar/${opendmk_jmxremote_optional_jar.version}$Import-Package=javax.management.openmbean,*</bundle>
         <feature>brooklyn-software-winrm</feature>
         <feature>brooklyn-policy</feature>
     </feature>
@@ -302,36 +305,38 @@
 
     <feature name="jclouds-feature-brooklyn" version="${project.version}" description="Jclouds and Dependencies">
         <!-- upstreams which seem needed -->
-        <bundle dependency='true'>wrap:mvn:com.squareup.okio/okio/1.15.0$Bundle-SymbolicName=squareup-okio&amp;Bundle-Version=1.15.0&amp;Export-Package=okio;version=1.15.0</bundle>
-        <!-- (3) -->
-        <bundle dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/3.12.6$Bundle-SymbolicName=squareup-okhttp3&amp;Bundle-Version=3.12.6&amp;Import-Package=okio;version=1.15,*;resolution:=optional</bundle>
-        <bundle dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/3.12.6$Bundle-SymbolicName=squareup-okhttp3-logging-interceptor&amp;Bundle-Version=3.12.6&amp;Import-Package=*;resolution:=mandatory</bundle>
+        <!-- prefer the wapped ones as the servicemix ones re-export too much; they need wrapping because they define bundle manifest version 1 -->
+        <!-- note fabric8/kubernetes pulls servicemix ones so need to be excluded; note servicemix okhttp includes logging interceptors -->
+        <bundle>wrap:mvn:com.squareup.okio/okio/1.15.0$Bundle-SymbolicName=squareup-okio&amp;Bundle-Version=1.15.0&amp;Export-Package=okio;version=1.15.0</bundle>
+        <!-- <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okio/1.15.0_1</bundle> -->
+        <bundle>wrap:mvn:com.squareup.okhttp3/okhttp/3.12.6$Bundle-SymbolicName=squareup-okhttp3&amp;Bundle-Version=3.12.6&amp;Import-Package=okio;version=1.15,*;resolution:=optional</bundle>
+        <bundle>wrap:mvn:com.squareup.okhttp3/logging-interceptor/3.12.6$Bundle-SymbolicName=squareup-okhttp3-logging-interceptor&amp;Bundle-Version=3.12.6&amp;Import-Package=*;resolution:=mandatory</bundle>
+        <!-- <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle> --> <!-- see note in dist; complements javax.annotation -->
+        <!-- <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp/3.12.1_1</bundle> --> <!-- note this is okhttp3 -->
 
         <!-- upstream dependencies, needed -->
-        <bundle dependency='true'>mvn:com.google.inject/guice/${guice.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.inject.extensions/guice-assistedinject/${guice.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.inject.extensions/guice-multibindings/${guice.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.code.gson/gson/${gson.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.guava/guava/${guava.version}</bundle>
-
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle>
-        <!-- <bundle dependency='true'>mvn:org.apache.jclouds.karaf.bundles/jsch-agentproxy-jsch/${project.version}</bundle> -->
-        <bundle dependency='true'>mvn:com.jcraft/jsch.agentproxy.core/${jsch.agentproxy.version}</bundle>
-        <bundle dependency='true'>mvn:com.jcraft/jsch.agentproxy.connector-factory/${jsch.agentproxy.version}</bundle>
-        <bundle dependency='true'>mvn:com.jcraft/jsch.agentproxy.usocket-nc/${jsch.agentproxy.version}</bundle>
-        <bundle dependency='true'>mvn:com.jcraft/jsch.agentproxy.sshagent/${jsch.agentproxy.version}</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib.version}</bundle>
-        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/${jsch.agentproxy.bundle.version}</bundle>
+        <bundle dependency="true">mvn:com.google.inject/guice/${guice.version}</bundle>
+        <bundle dependency="true">mvn:com.google.inject.extensions/guice-assistedinject/${guice.version}</bundle>
+        <bundle dependency="true">mvn:com.google.inject.extensions/guice-multibindings/${guice.version}</bundle>
+        <bundle>mvn:com.google.code.gson/gson/${gson.version}</bundle>
+        <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
+
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle>
+        <!-- <bundle>mvn:org.apache.jclouds.karaf.bundles/jsch-agentproxy-jsch/${project.version}</bundle> -->
+        <bundle>mvn:com.jcraft/jsch.agentproxy.core/${jsch.agentproxy.version}</bundle>
+        <bundle>mvn:com.jcraft/jsch.agentproxy.connector-factory/${jsch.agentproxy.version}</bundle>
+        <bundle>mvn:com.jcraft/jsch.agentproxy.usocket-nc/${jsch.agentproxy.version}</bundle>
+        <bundle>mvn:com.jcraft/jsch.agentproxy.sshagent/${jsch.agentproxy.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/${jsch.agentproxy.bundle.version}</bundle>
 
         <!-- upstream dependencies, maybe not needed --> 
         <bundle dependency="true">mvn:javax.ws.rs/javax.ws.rs-api/${jax-rs-api.version}</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_1</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0_5</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oauth-commons/20100527_1</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jersey-core/1.11_1</bundle>
-        <!-- jclouds uses this version; but probably not needed
-        <bundle dependency='true'>mvn:org.yaml/snakeyaml/${snakeyaml.jclouds.version}</bundle>
-         -->
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_1</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0_5</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oauth-commons/20100527_1</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jersey-core/1.11_1</bundle>
+        <bundle>mvn:org.yaml/snakeyaml/${snakeyaml.jclouds.version}</bundle>
 
         <!-- jclouds bundles -->
         <bundle>mvn:org.apache.jclouds.api/atmos/${jclouds.version}</bundle>
@@ -400,29 +405,54 @@
     <feature name="brooklyn-container-service" version="${project.version}" description="Brooklyn Container Service and Location Targets">
         <feature prerequisite="true">brooklyn-core</feature>
 
-        <!-- shared dependencies -->
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml.jackson.datatype/jackson-datatype-jsr310/${fasterxml.jackson.version}</bundle>
-        <bundle dependency='true'>mvn:com.google.guava/guava/${guava.version}</bundle>
+        <!-- shared dependencies - included for kubernetes-client 4.9.0; not sure if needed now -->
+        <bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.fasterxml.jackson.datatype/jackson-datatype-jsr310/${fasterxml.jackson.version}</bundle>
+        <bundle>mvn:com.google.guava/guava/${guava.version}</bundle>
 
-        <!-- new dependencies for this -->
-        <!-- note jsr305 provides javax.annotation.meta which is needed we think;
+<!-- old deps, for kubernetes-client 4.9.0; mostly seem still needed, but come from the feature now
+     - new dependencies for this -
+     - note jsr305 provides javax.annotation.meta which is needed we think;
              but also javax.annotation at 1.1 which confuses other things;
-             however it seems not to get installed at runtime now, even though it is listed as part of the feature which is installed -->
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.generex/1.0.2_1</bundle>
-        <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.automaton/1.11-8_1</bundle>
-        <!-- these need wrapped because they define Bundle-ManifestVersion: 1 -->
-        <bundle dependency='true'>wrap:mvn:com.squareup.okio/okio/1.15.0$Bundle-SymbolicName=squareup-okio&amp;Bundle-Version=1.15.0&amp;Export-Package=okio;version=1.15.0</bundle>
-        <bundle dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/3.12.6$Bundle-SymbolicName=squareup-okhttp3&amp;Bundle-Version=3.12.6&amp;Import-Package=okio;version=1.15,*;resolution:=optional</bundle>
-        <bundle dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/3.12.6$Bundle-SymbolicName=squareup-okhttp3-logging-interceptor&amp;Bundle-Version=3.12.6&amp;Import-Package=*;resolution:=mandatory</bundle>
-
-        <!-- these are the main required bundles for these features above -->
-        <bundle>mvn:io.fabric8/zjsonpatch/0.3.0</bundle>
+             however it seems not to get installed at runtime now, even though it is listed as part of the feature which is installed -
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/${jsr305.bundle.version}</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.generex/1.0.2_1</bundle>
+        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.automaton/1.11-8_1</bundle>
+     - these need wrapped because they define Bundle-ManifestVersion: 1 
+        <bundle>wrap:mvn:com.squareup.okio/okio/1.15.0$Bundle-SymbolicName=squareup-okio&amp;Bundle-Version=1.15.0&amp;Export-Package=okio;version=1.15.0</bundle>
+        <bundle>wrap:mvn:com.squareup.okhttp3/okhttp/3.12.6$Bundle-SymbolicName=squareup-okhttp3&amp;Bundle-Version=3.12.6&amp;Import-Package=okio;version=1.15,*;resolution:=optional</bundle>
+        <bundle>wrap:mvn:com.squareup.okhttp3/logging-interceptor/3.12.6$Bundle-SymbolicName=squareup-okhttp3-logging-interceptor&amp;Bundle-Version=3.12.6&amp;Import-Package=*;resolution:=mandatory</bundle>
         <bundle>mvn:io.fabric8/kubernetes-model/${kubernetes-client.version}</bundle>
         <bundle>mvn:io.fabric8/kubernetes-client/${kubernetes-client.version}/jar/bundle</bundle>
-        <bundle>mvn:io.fabric8/openshift-client/${kubernetes-client.version}/jar/bundle</bundle>
+    -->
+<!-- non-obvious bundles pulled in by kubernetes-client feature; need inspection to avoid duplication, might need exclusion in karaf definition
+    <bundle>mvn:com.google.code.findbugs/jsr305/3.0.2</bundle>
+    <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.11.2</bundle>
+    <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.11.2</bundle>
+    <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.11.2</bundle>
+    <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.11.2</bundle>
+    <bundle>mvn:com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.11.2</bundle>
+    <bundle>mvn:org.yaml/snakeyaml/1.26</bundle>
+    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.generex/1.0.1_1</bundle>
+    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.automaton/1.11-8_1</bundle>
+    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.conscrypt-openjdk/1.4.2_1</bundle>
+    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp/3.12.1_1</bundle>
+    <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okio/1.15.0_1</bundle>
+    <bundle>mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/1.3.0</bundle>
+    <bundle>mvn:org.ow2.asm/asm/8.0.1</bundle>
+    <bundle>mvn:org.ow2.asm/asm-analysis/8.0.1</bundle>
+    <bundle>mvn:org.ow2.asm/asm-commons/8.0.1</bundle>
+    <bundle>mvn:org.ow2.asm/asm-tree/8.0.1</bundle>
+    <bundle>mvn:org.ow2.asm/asm-util/8.0.1</bundle>
+    <bundle>mvn:io.fabric8/kubernetes-model-common/5.8.0</bundle>
+    <bundle>mvn:io.fabric8/zjsonpatch/0.3.0</bundle>
+
+    - pulled in by openshift-client
+        <feature>kubernetes-client</feature>
+-->
+
+        <feature>openshift-client</feature>
 
         <bundle start-level="85">mvn:org.apache.brooklyn/brooklyn-locations-container/${project.version}</bundle>
     </feature>
@@ -444,7 +474,7 @@
         <feature prerequisite="true">brooklyn-server-software-all</feature>
         <feature prerequisite="true">brooklyn-locations-jclouds</feature>
         <feature>brooklyn-container-service</feature>  <!-- install this after the above so servicemix jsr305 doesn't interfere -->
-        <bundle dependency="true">mvn:org.apache.brooklyn/brooklyn-launcher-common/${project.version}</bundle>
+        <bundle>mvn:org.apache.brooklyn/brooklyn-launcher-common/${project.version}</bundle>
         <bundle start-level="90">mvn:org.apache.brooklyn/brooklyn-karaf-init/${project.version}</bundle>
         <bundle start-level="90">mvn:org.apache.brooklyn/brooklyn-karaf-start/${project.version}</bundle>
     </feature>
diff --git a/pom.xml b/pom.xml
index 74ceb4f..247d793 100644
--- a/pom.xml
+++ b/pom.xml
@@ -182,7 +182,7 @@
         <jetty.version>9.4.39.v20210325</jetty.version> <!-- 9.4.31.v20200723 from Karaf 4.3.0 -->
         <commons-collections.version>3.2.2</commons-collections.version>
         <pax-web.version>7.3.9</pax-web.version>
-        <spifly.version>1.3.2</spifly.version> <!-- v1.3.2 from jetty feature; v1.2.4 from pax-jetty -->
+        <spifly.version>1.3.2</spifly.version> <!-- 1.3.0 from kubernetes; 1.2.4 from pax-jetty; v1.3.2 from erstwhile jetty feature; but 1.3.2 fixes an NPE bug in 1.3.0 so use it -->
         <felix.framework.version>6.0.3</felix.framework.version>
 
         <!-- Transitive dependencies, declared explicitly to avoid version mismatch -->