<?xml version="1.0" encoding="UTF-8"?>
<!--

   Licensed 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.
-->
<features name="karaf-cellar-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">

    <repository>mvn:org.apache.jclouds.karaf/jclouds-karaf/${jclouds.version}/xml/features</repository>
    <repository>mvn:io.fabric8/karaf-features/${fabric8.version}/xml/features</repository>
    
    <feature name="cellar-core" description="Karaf clustering core" version="${project.version}">
        <feature>aries-proxy</feature>
        <feature>shell</feature>
        <configfile finalname="/etc/org.apache.karaf.cellar.groups.cfg">mvn:org.apache.karaf.cellar/apache-karaf-cellar/${project.version}/cfg/groups</configfile>
        <configfile finalname="/etc/org.apache.karaf.cellar.node.cfg">mvn:org.apache.karaf.cellar/apache-karaf-cellar/${project.version}/cfg/node</configfile>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.core/${project.version}</bundle>
    </feature>

    <feature name="hazelcast" description="In memory data grid" version="${hazelcast.version}">
        <configfile finalname="/etc/hazelcast.xml">mvn:org.apache.karaf.cellar/apache-karaf-cellar/${project.version}/xml/hazelcast</configfile>
        <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
        <bundle>mvn:com.eclipsesource.minimal-json/minimal-json/0.9.2</bundle>
        <bundle>mvn:com.hazelcast/hazelcast-all/${hazelcast.version}</bundle>
    </feature>

    <feature name="cellar-hazelcast" description="Cellar implementation based on Hazelcast" version="${project.version}">
        <feature version="${hazelcast.version}">hazelcast</feature>
        <feature version="${project.version}">cellar-core</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.hazelcast/${project.version}</bundle>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.utils/${project.version}</bundle>
    </feature>

    <feature name="cellar-config" description="ConfigAdmin cluster support" version="${project.version}">
        <feature>config</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.config/${project.version}</bundle>
    </feature>

    <feature name="cellar-features" description="Karaf features cluster support" version="${project.version}">
        <feature>feature</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.features/${project.version}</bundle>
    </feature>

    <feature name="cellar-bundle" description="Bundle cluster support" version="${project.version}">
        <feature>bundle</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.bundle/${project.version}</bundle>
    </feature>

    <feature name="cellar-shell" description="Cellar shell support" version="${project.version}">
        <feature>shell</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.shell/${project.version}</bundle>
    </feature>

    <feature name="cellar" description="Karaf clustering" version="${project.version}">
        <feature>cellar-hazelcast</feature>
        <feature>cellar-shell</feature>
        <feature>cellar-config</feature>
        <feature>cellar-bundle</feature>
        <feature>cellar-features</feature>
    </feature>

    <feature name="cellar-dosgi" description="DOSGi support" version="${project.version}">
        <feature>cellar-hazelcast</feature>
        <bundle start-level="40">mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.dosgi/${project.version}</bundle>
    </feature>

    <feature name="cellar-obr" description="OBR cluster support" version="${project.version}">
        <feature>obr</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.obr/${project.version}</bundle>
    </feature>

    <feature name="cellar-eventadmin" description="OSGi events broadcasting in clusters" version="${project.version}">
        <feature>eventadmin</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.event/${project.version}</bundle>
    </feature>

    <feature name="cellar-cloud" description="Cloud blobstore support in clusters" version="${project.version}">
        <feature>cellar-hazelcast</feature>
        <feature version="${jclouds.version}">jclouds</feature>
        <!-- Adding S3 as the default Blobstore -->
        <feature>jclouds-aws-s3</feature>
        <bundle>mvn:joda-time/joda-time/${joda-time.version}</bundle>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.cloud/${project.version}</bundle>
    </feature>

    <feature name="cellar-kubernetes" description="Cellar Kubernetes support" version="${project.version}">
        <feature>cellar-core</feature>
        <feature>fabric8-kubernetes-api</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.kubernetes/${project.version}</bundle>
    </feature>

    <feature name="cellar-dns" description="Cellar DNS support" version="${project.version}">
        <feature>cellar-core</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.dns/${project.version}</bundle>
    </feature>

    <feature name="cellar-etcd" description="Cellar Etcd discovery support" version="${project.version}">
        <feature>cellar-core</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.etcd/${project.version}</bundle>
    </feature>

    <feature name="cellar-webconsole" description="Cellar plugin for Karaf WebConsole" version="${project.version}">
        <feature>webconsole</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.webconsole/${project.version}</bundle>
    </feature>

    <feature name="cellar-http-balancer" description="Cellar HTTP request balancer" version="${project.version}">
        <feature>cellar-hazelcast</feature>
        <feature>http</feature>
        <feature>http-whiteboard</feature>
        <bundle>mvn:org.apache.karaf.cellar.http/org.apache.karaf.cellar.http.balancer/${project.version}</bundle>
    </feature>

    <feature name="cellar-log" description="Cellar central log support" version="${project.version}">
        <feature>log</feature>
        <feature>cellar-hazelcast</feature>
        <bundle>mvn:org.apache.karaf.cellar/org.apache.karaf.cellar.log/${project.version}</bundle>
    </feature>

</features>

