Apache Karaf Cave can also act as a central Karaf Features gateway. For instance, you can have an unique Cave features gateway in your organization, providing a single features repository for your Karaf instances.
Your Karaf instances on your ecosystem can connect to this unique Cave features gateway URL.
Then, you manage your features repository on the "central" Cave Features Gateway, and the Karaf instances get the features (without knowing exactly where they come from).
By default, the gateway is expose on /cave/features-gateway-repository
. It means that, on Karaf instances, you can do:
karaf@root()> feature:repo-add http://host:8181/cave/features-gateway-repository
NB: the Karaf instances use a cache, so you have to flush the changes on the gateway using the feature:repo-refresh
command.
Installation
Once Karaf Cave features repository is registered in a running Karaf instance (using feature:repo-add cave
command for instance),
you can install the Cave Features Gateway with the cave-features-gateway
feature:
karaf@root()> feature:repo-add cave
karaf@root()> feature:install cave-features-gateway
Registering features repository in the gateway
You can register several features repositories in the gateway. The main generated features repository for the gateway gathers the registered features repositories. Thanks to that the gateway is able to "expose" features from several repositories.
cave:features-gateway-register
shell command
You can simply register a features repository in the gateway using cave:features-gateway-register
shell command. For instance,
you can register Apache Camel Karaf features repository in the gateway:
karaf@root()> cave:features-gateway-register mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features
REST API
You can also use the Cave Features Gateway REST API to register a features repository on /cave/features-gateway/api
.
The repository URL is provided as url
header.
For instance, using curl
, you can do:
curl -X POST -H "url: mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features" http://localhost:8181/cave/features-gateway/api
JMX MBean
The org.apache.karaf.cave:type=gateway
MBean provides the register(String url)
operation allowing you to register a features repository in the gateway.
Service
The org.apache.karaf.cave.gateway.FeaturesGatewayService
service provides the register(String url)
method allowing you to register a features repository in the gateway.
List registered features repositories in the gateway
You can list the features repositories registered in the gateway.
cave:features-gateway-list
shell command
The cave:features-gateway-list
shell command gives you the registered features repositories in the gateway:
karaf@root()> cave:features-gateway-list
mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features
REST API
You get list the features repositories registered on the Cave Features Gateway REST API, using /cave/features-gateway/api
(GET). For instance using curl
:
curl -X GET http://localhost:8181/cave/features-gateway/api
["mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features"]
JMX MBean
The repositories
attribute on the org.apache.karaf.cave:type=gateway
MBean provides a tabular data with all registered features repositories.
Service
The list()
method on the org.apache.karaf.cave.gateway.FeaturesGatewayService
service provides the list of all registered features repositories.
Remove a features repository from the gateway
You can remove a features repository from the gateway.
cave:features-gateway-remove
shell command
The cave:features-gateway-remove
shell command allows you to remove a features repository from the gateway:
karaf@root()> cave:features-gateway-remove mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features
REST API
You can remove a registered features repository from the gateway using the REST API on /cave/features-gateway/api
(DELETE). The features repository URL is passed via the url
header.
For instance, using curl
:
curl -X DELETE -H "url: mvn:org.apache.camel.karaf/apache-camel/2.24.1/xml/features" http://localhost:8181/cave/features-gateway/api