You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/12/10 18:15:10 UTC

[2/3] karaf-cellar git commit: KARAF-3679 - Migrate documentation to asciidoc, close #10

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/asciidoc/user-guide/nodes.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/nodes.adoc b/manual/src/main/asciidoc/user-guide/nodes.adoc
new file mode 100644
index 0000000..b59965b
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/nodes.adoc
@@ -0,0 +1,204 @@
+//
+// 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.
+//
+
+== Cellar nodes
+
+This chapter describes the Cellar nodes manipulation commands.
+
+=== Nodes identification
+
+When you installed the Cellar feature, your Karaf instance became automatically a Cellar cluster node,
+and hence tries to discover the others Cellar nodes.
+
+You can list the known Cellar nodes using the list-nodes command:
+
+----
+karaf@root()> cluster:node-list
+  | Id             | Host Name | Port
+-------------------------------------
+x | node2:5702     | node2 | 5702
+  | node1:5701     | node1 | 5701
+----
+
+The starting 'x' indicates that it's the Karaf instance on which you are logged on (the local node).
+
+NB: if you don't see the other nodes there (whereas they should be there), it's probably due to a network issue.
+By default, Cellar uses multicast to discover the nodes.
+If your network or network interface don't support multicast, you have to switch to tcp-ip instead of multicast.
+See link:hazelcast[Core Configuration section] for details.
+
+NB: in Cellar 2.3.x, Cellar used both multicast and tcp-ip by default. Due to a change in Hazelcast, it's no more possible to have both.
+Now, in Cellar 3.0.x, the default configuration is multicast enabled, tcp-ip disabled.
+See link:hazelcast[Core Configuration section] for details.
+
+=== Testing nodes
+
+You can ping a node to test it:
+
+----
+karaf@root()> cluster:node-ping node1:5701
+PING node1:5701
+from 1: req=node1:5701 time=11 ms
+from 2: req=node1:5701 time=12 ms
+from 3: req=node1:5701 time=13 ms
+from 4: req=node1:5701 time=7 ms
+from 5: req=node1:5701 time=12 ms
+----
+
+=== Node Components: listener, producer, handler, consume, and synchronizer
+
+A Cellar node is actually a set of components, each component is dedicated to a special purpose.
+
+The `etc/org.apache.karaf.cellar.node.cfg` configuration file is dedicated to the configuration of the local node.
+It's where you can control the status of the different components.
+
+=== Synchronizers and sync policy
+
+A synchronizer is invoked when you:
+
+* Cellar starts
+* a node joins a cluster group (see link:groups for details about cluster groups)
+* you explicitly call the `cluster:sync` command
+
+We have a synchronizer per resource: feature, bundle, config, eventadmin (optional), obr (optional).
+
+Cellar supports three sync policies:
+
+* *cluster* (default): if the node is the first one in the cluster, it pushes its local state to the cluster, else if it's
+not the first node in the cluster, the node will update its local state with the cluster one (meaning that the cluster
+is the master).
+* *node*: in this case, the node is the master, it means that the cluster state will be overwritten by the node state.
+* *disabled*: in this case, it means that the synchronizer is not used at all, meaning the node or the cluster are not
+updated at all (at sync time).
+
+You can configure the sync policy (for each resource, and each cluster group) in the `etc/org.apache.karaf.cellar.groups.cfg`
+configuration file:
+
+----
+default.bundle.sync = cluster
+default.config.sync = cluster
+default.feature.sync = cluster
+default.obr.urls.sync = cluster
+----
+
+The `cluster:sync` command allows you to "force" the sync:
+
+----
+karaf@node1()> cluster:sync
+Synchronizing cluster group default
+        bundle: done
+        config: done
+        feature: done
+        obr.urls: No synchronizer found for obr.urls
+----
+
+It's also possible to sync only a resource using:
+
+* `-b` (`--bundle`) for bundle
+* `-f` (`--feature`) for feature
+* `-c` (`--config`) for configuration
+* `-o` (`--obr`) for OBR URLs
+
+or a given cluster group using the `-g` (`--group`) option.
+
+=== Producer, consumer, and handlers
+
+To notify the other nodes in the cluster, Cellar produces a cluster event.
+
+For that, the local node uses a producer to create and send the cluster event.
+You can see the current status of the local producer using the `cluster:producer-status` command:
+
+----
+karaf@node1()> cluster:producer-status
+  | Node             | Status
+-----------------------------
+x | 172.17.42.1:5701 | ON
+----
+
+The `cluster:producer-stop` and `cluster:producer-start` commands allow you to stop or start the local cluster event
+producer:
+
+----
+karaf@node1()> cluster:producer-stop
+  | Node             | Status
+-----------------------------
+x | 172.17.42.1:5701 | OFF
+karaf@node1()> cluster:producer-start
+  | Node             | Status
+-----------------------------
+x | 172.17.42.1:5701 | ON
+----
+
+When the producer is off, it means that the node is "isolated" from the cluster as it doesn't send "outbound" cluster events
+to the other nodes.
+
+On the other hand, a node receives the cluster events on a consumer. Like for the producer, you can see and control the
+consumer using dedicated command:
+
+----
+karaf@node1()> cluster:consumer-status
+  | Node           | Status
+---------------------------
+x | localhost:5701 | ON
+karaf@node1()> cluster:consumer-stop
+  | Node           | Status
+---------------------------
+x | localhost:5701 | OFF
+karaf@node1()> cluster:consumer-start
+  | Node           | Status
+---------------------------
+x | localhost:5701 | ON
+----
+
+When the consumer is off, it means that node is "isolated" from the cluster as it doesn't receive "inbound" cluster events
+from the other nodes.
+
+Different cluster events are involved. For instance, we have cluster event for feature, for bundle, for configuration, for OBR, etc.
+When a consumer receives a cluster event, it delegates the handling of the cluster event to a specific handler, depending of the
+type of the cluster event.
+You can see the different handlers and their status using the cluster:handler-status command:
+
+----
+karaf@node1()> cluster:handler-status
+  | Node           | Status | Event Handler
+--------------------------------------------------------------------------------------
+x | localhost:5701 | ON     | org.apache.karaf.cellar.config.ConfigurationEventHandler
+x | localhost:5701 | ON     | org.apache.karaf.cellar.bundle.BundleEventHandler
+x | localhost:5701 | ON     | org.apache.karaf.cellar.features.FeaturesEventHandler
+----
+
+You can stop or start a specific handler using the `cluster:handler-stop` and `cluster:handler-start` commands.
+
+When a handler is stopped, it means that the node will receive the cluster event, but will not update the local resources
+dealt by the handler.
+
+=== Listeners
+
+The listeners are listening for local resource change.
+
+For instance, when you install a feature (with `feature:install`), the feature listener traps the change and broadcast this
+change as a cluster event to other nodes.
+
+To avoid some unexpected behaviors (especially when you stop a node), most of the listeners are switch off by default.
+
+The listeners status are configured in the `etc/org.apache.karaf.cellar.node.cfg` configuration file.
+
+NB: enabling listeners is at your own risk. We encourage you to use cluster dedicated commands and MBeans to manipulate
+the resources on the cluster.
+
+== Clustered resources
+
+Cellar provides dedicated commands and MBeans for clustered resources.
+
+Please, go into the link:groups[cluster groups] section for details.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/asciidoc/user-guide/obr.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/obr.adoc b/manual/src/main/asciidoc/user-guide/obr.adoc
new file mode 100644
index 0000000..1b072c4
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/obr.adoc
@@ -0,0 +1,99 @@
+//
+// 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.
+//
+
+== OBR Support
+
+Apache Karaf Cellar is able to "broadcast" OBR actions between cluster nodes of the same group.
+
+=== Enable OBR support
+
+To enable Cellar OBR support, the `cellar-obr` feature must first be installed:
+
+----
+karaf@root()> feature:install cellar-obr
+----
+
+The Cellar OBR feature will install the Karaf OBR feature which provides the OBR service (RepositoryAdmin).
+
+=== Register repository URL in a cluster
+
+The `cluster:obr-add-url` command registers an OBR repository URL (repository.xml) in a cluster group:
+
+----
+karaf@root()> cluster:obr-add-url group file:///path/to/repository.xml
+karaf@root()> cluster:obr-add-url group http://karaf.cave.host:9090/cave/repo-repository.xml
+----
+
+The OBR repository URLs are stored in a cluster distributed set. It allows new nodes to register the distributed URLs:
+
+----
+karaf@root()> cluster:obr-list-url group
+file://path/to/repository.xml
+http://karaf.cave.host:9090/cave/repo-repository.xml
+----
+
+When a repository is registered in the distributed OBR, Cave maintains a distributed set of bundles available on the
+OBR of a cluster group:
+
+----
+karaf@root()> cluster:obr-list group
+Name                                                                         | Symbolic Name                                                             | Version
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Apache Aries JMX Blueprint Core                                              | org.apache.aries.jmx.blueprint.core                                       | 1.1.1.SNAPSHOT
+Apache Karaf :: JAAS :: Command                                              | org.apache.karaf.jaas.command                                             | 2.3.6.SNAPSHOT
+Apache Aries Proxy Service                                                   | org.apache.aries.proxy.impl                                               | 1.0.3.SNAPSHOT
+Apache Karaf :: System :: Shell Commands                                     | org.apache.karaf.system.command                                           | 3.0.2.SNAPSHOT
+Apache Karaf :: JDBC :: Core                                                 | org.apache.karaf.jdbc.core                                                | 3.0.2.SNAPSHOT
+Apache Aries Example SPI Provider Bundle 1                                   | org.apache.aries.spifly.examples.provider1.bundle                         | 1.0.1.SNAPSHOT
+Apache Aries Transaction Manager                                             | org.apache.aries.transaction.manager                                      | 1.1.1.SNAPSHOT
+Apache Karaf :: Features :: Management                                       | org.apache.karaf.features.management                                      | 2.3.6.SNAPSHOT
+Apache Aries Blueprint Sample Fragment for Testing Annotation                | org.apache.aries.blueprint.sample-fragment                                | 1.0.1.SNAPSHOT
+Apache Karaf :: Management :: MBeans :: OBR                                  | org.apache.karaf.management.mbeans.obr                                    | 2.3.6.SNAPSHOT
+Apache Karaf :: JNDI :: Core                                                 | org.apache.karaf.jndi.core                                                | 2.3.6.SNAPSHOT
+Apache Karaf :: Shell :: SSH                                                 | org.apache.karaf.shell.ssh                                                | 3.0.2.SNAPSHOT
+Apache Aries Blueprint Web OSGI                                              | org.apache.aries.blueprint.webosgi                                        | 1.0.2.SNAPSHOT
+Apache Aries Blueprint JEXL evaluator                                        | org.apache.aries.blueprint.jexl.evaluator                                 | 1.0.1.SNAPSHOT
+Apache Karaf :: JDBC :: Command                                              | org.apache.karaf.jdbc.command                                             | 3.0.2.SNAPSHOT
+...
+----
+
+When you remove a repository URL from the distributed OBR, the bundles' distributed set is updated:
+
+----
+karaf@root()> cluster:obr-remove-url group http://karaf.cave.host:9090/cave/repo-repository.xml
+----
+
+=== Deploying bundles using the cluster OBR
+
+You can deploy a bundle (and that bundle's dependent bundles) using the OBR on a given cluster group:
+
+----
+karaf@root()> cluster:obr-deploy group bundleId
+----
+
+The bundle ID is the symbolic name, viewable using the `cluster:obr-list` command. If you don't provide the version, the OBR deploys the latest version
+available. To provide the version, use a comma after the symbolic name:
+
+----
+karaf@root()> cluster:obr-deploy group org.apache.servicemix.specs.java-persistence-api-1.1.1
+karaf@root()> cluster:obr-deploy group org.apache.camel.camel-jms,2.9.0.SNAPSHOT
+----
+
+The OBR will automatically install the bundles required to satisfy the bundle dependencies.
+
+The deploy command doesn't start bundles by default. To start the bundles just after deployment, you can use the `-s` option:
+
+----
+karaf@root()> cluster:obr-deploy -s group org.ops4j.pax.web.pax-web-runtime
+----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/asciidoc/user-guide/transport.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/transport.adoc b/manual/src/main/asciidoc/user-guide/transport.adoc
new file mode 100644
index 0000000..8c93e53
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/transport.adoc
@@ -0,0 +1,42 @@
+//
+// 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.
+//
+
+== DOSGi and Transport
+
+DOSGi (Distributed OSGi) enables the distribution of OSGi services across the Cellar nodes.
+
+The purpose of the Cellar DOSGi is to leverage the Cellar resources (Hazelcast instances, distributed map, etc), and
+to be very easy to use.
+
+DOSGi is provided by installing the optional feature `cellar-dosgi`.
+
+To be available and visible for the others nodes, the OSGi service should only have the service.exported.interfaces
+property:
+
+----
+<service ref="MyService" interface="my.interface">
+  <service-properties>
+    <entry key="service.exported.interfaces" value="*"/>
+  </service-properties>
+</service>
+----
+
+You can see all OSGi services "flagged" as distributed (available for the nodes) using the `cluster:list-service` command:
+
+----
+karaf@root()> cluster:service-list
+----
+
+A "client" bundle could use this service. If the service is not available locally, Cellar will "route" the service call
+to the remote remote containing the service.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/asciidoc/user-guide/user-index.adoc
----------------------------------------------------------------------
diff --git a/manual/src/main/asciidoc/user-guide/user-index.adoc b/manual/src/main/asciidoc/user-guide/user-index.adoc
new file mode 100644
index 0000000..25808d1
--- /dev/null
+++ b/manual/src/main/asciidoc/user-guide/user-index.adoc
@@ -0,0 +1,45 @@
+//
+// 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.
+//
+
+Apache Karaf Cellar 4.x - User Guide
+=====================================
+:toc: left
+:toclevels: 3
+:toc-position: left
+:toc-title: Apache Karaf Cellar 4.x - User Guide
+:numbered:
+
+include::user-guide/introduction.adoc[]
+
+include::user-guide/installation.adoc[]
+
+include::user-guide/deploy.adoc[]
+
+include::user-guide/hazelcast.adoc[]
+
+include::user-guide/nodes.adoc[]
+
+include::user-guide/groups.adoc[]
+
+include::user-guide/obr.adoc[]
+
+include::user-guide/event.adoc[]
+
+include::user-guide/http-balancer[]
+
+include::user-guide/http-session[]
+
+include::user-guide/transport[]
+
+include::user-guide/cloud[]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml b/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
deleted file mode 100644
index 5a2e236..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/default.scaml
+++ /dev/null
@@ -1,116 +0,0 @@
--#
--# Copyright (C) 2009-2010 the original author or authors.
--# See the notice.md file distributed with this work for additional
--# information regarding copyright ownership.
--#
--# 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.
--#
-
--@ var body: String
--@ var title : String = "Apache Karaf Cellar ${cellar.version} Guides"
-- response.setContentType("text/html")
-
--# Only include the console if it's available and the engine is in dev mode.
-- val include_console = engine.isDevelopmentMode && engine.resourceLoader.exists("/org/fusesource/scalate/console/console_head.scaml")
-
-!!! Basic
-%html(lang="en")
-  %head
-    %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
-    %meta(name="description" content="description goes here")
-    %meta(name="keywords" content="keywords,goes,here")
-    %meta(name="author" content="The Apache Karaf Team")
-
-    - if (include_console)
-      = include("/org/fusesource/scalate/console/console_head.scaml")
-
-    %link(href={uri("/css/style.css")} rel="stylesheet" type="text/css")
-    %link(href={uri("/css/pygmentize.css")} rel="stylesheet" type="text/css")
-
-    - if (include_console)
-      %link(href={uri("/css/scalate/console.css")} rel="stylesheet" type="text/css")
-
-    %title
-      = title
-  
-  %body
-    %table{:width => "100%", :cellpadding => "0", :cellspacing => "0"}
-      %tr{:width => "100%"}
-        %td#cell-0-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-0-1
-          &nbsp;
-        %td#cell-0-2{:colspan => "2"}
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-1-0
-          &nbsp;
-        %td#cell-1-1
-          &nbsp;
-        %td#cell-1-2
-          %div{:style => "padding: 5px;"}
-            #banner
-              = include("/_banner.ssp")
-            #top-menu
-              %table{:border => "0", :cellpadding => "1", :cellspacing => "0", :width => "100%"}
-                %tr
-                  %td
-                    %div{:align => "left"}
-                  %td
-                    %div{:align => "right"}
-                      = include("/_quicklinks.ssp")
-        %td#cell-1-3
-          &nbsp;
-        %td#cell-1-4
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-2-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-2-1
-          %table
-            %tr{:height => "100%", :valign => "top"}
-              %td{:height => "100%"}
-                #wrapper-menu-page-right
-                  #wrapper-menu-page-top
-                    #wrapper-menu-page-bottom
-                      #menu-page
-                        = include("/_navigation.conf")
-              %td{:height =>"100%", :width => "100%"}
-                .wiki-content
-                  !~~ body
-        %td#cell-2-2{:colspan => "2"}
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-3-0
-          &nbsp;
-        %td#cell-3-1
-          &nbsp;
-        %td#cell-3-2
-          #footer
-            #site-footer
-              &copy; 2008-2011 The Apache Software Foundation
-              %br
-              Apache Karaf, Karaf, Apache, the Apache feather logo, and the Apache Karaf project logo are trademarks of The Apache Software Foundation.
-        %td#cell-3-3
-          &nbsp;
-        %td#cell-3-4
-          &nbsp;
-      %tr{:width => "100%"}
-        %td#cell-4-0{:colspan => "2"}
-          &nbsp;
-        %td#cell-4-1
-          &nbsp;
-        %td#cell-4-2{:colspan => "2"}
-          &nbsp;
-    - if (include_console)
-      = include("/org/fusesource/scalate/console/console.scaml")

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp b/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
deleted file mode 100644
index 42202ba..0000000
--- a/manual/src/main/webapp/WEB-INF/scalate/layouts/print.ssp
+++ /dev/null
@@ -1,817 +0,0 @@
-<%--
-Copyright (C) 2009-2010 the original author or authors.
-See the notice.md file distributed with this work for additional
-information regarding copyright ownership.
-
-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.
---%>
-<%@ var body: String %>
-<%@ var title: String = "Apache Karaf Cellar ${cellar.version} Guides" %>
-<% escapeMarkup = false %>
-<!DOCTYPE html>
-<html>
-<head>
-  <style type="text/css">
-/*
-
-Copyright (c) 2005 Hakon Wium Lie and Bert Bos
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-html {
-  margin: 0; padding: 0;
-  font: 10pt/1.26 "Gill Sans", sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 {
-  font-family: "Gill Sans", sans-serif;
-  margin: 2em 0 0.5em 0;
-  page-break-after: avoid;
-}
-
-h1 {
-  font-size: 2.0em;
-  font-weight: 900;
-
-  margin: 0;
-  margin-left:-2cm;
-  margin-top:-1cm;
-  margin-bottom:1.5cm;
-  top: 0cm;
-  left: 0cm;
-  padding: 2cm;
-  padding-top: 0cm;
-  padding-bottom: 1cm;
-  background: #888;
-  border-bottom-right-radius: 2cm;
-  page-break-before: always;
-  page-break-inside: avoid;
-}
-
-@media screen, handheld {
-h1 {
-  margin-top:1cm;
-  background-image: url("chapter-rounded-bottom.png");
-  background-repeat: no-repeat;
-  background-position: bottom right;
-}
-div.page-reset > h1 {
-  margin-top:0cm;
-}
-}
-
-
-h2 {
-  font-size: 1.2em;
-  text-transform: uppercase;
-  font-weight: bold;
-}
-
-h3 {
-  font-size: 1em;
-  font-weight: bold;
-}
-
-q::before {
-  content: "\201C";
-}
-
-q::after {
-  content: "\201D";
-}
-
-p { margin: 0 }
-p + p { text-indent: 1.3em ; margin-top: 0.2em; }
-p.sidenote + p, p.caption, p.art { text-indent: 0 }
-
-p.author {
-  margin-top: 2em;
-  text-indent: 0;
-  text-align: right;
-}
-
-a { text-decoration: none; color: black }
-
-/* cross-references */
-
-a.pageref::after { content: " on page " target-counter(attr(href), page); }
-a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
-a.figref { content: " Figure " target-counter(attr(href), figure); }
-a.tableref { content: " Table " target-counter(attr(href), figure); }
-a.listingref { content: " Listing " target-counter(attr(href), listing); }
-
-/* sidenotes */
-
-.sidenote {
-  float: left;
-  clear: left;
-  margin: 0 0 1em -41%;
-  width: 37%;
-  font-size: 0.9em;
-  font-style: normal;
-  text-indent: 0;
-  text-align: right;
-  page-break-inside: avoid;
-}
-
-/* sidebars */
-
-div.sidebar {
-  float: top-next;
-  margin: 1.2em 0 1.2em 0;
-  border: thin solid;
-  background: #CCC;
-  padding: 0.5em 1em;
-  page-break-inside: avoid;
-  column-count: 2;
-  column-gap: 1.5em;
-}
-
-div.sidebar h2 {
-  margin-top: 0;
-}
-
-/* frontpage */
-
-.title p{
-	font-size:22pt;
-  	font-family: "Gill Sans", sans-serif;
-  	text-align: center;
-}
-
-.copyright-section {
-	text-align: center;
-	font-size: 9pt;
-	page-break-after: always;
-	margin-top: 50pt;
-	margin-bottom: 20pt;
-}
-
-.toc-title {
-	font-size:18pt;
-  	font-family: "Gill Sans", sans-serif;
-  	text-align: left;
-  	margin-left:20pt;
-  	margin-bottom: 40pt;
-
-}
-
-/* figures, tables, and listings */
-
-div.confluenceTableSmall th.confluenceTh {
-  font-size: 11px;
-}
-
-div.confluenceTableSmall td.confluenceTd {
-  font-size: 7px;
-}
-
-div.figure {
-  margin: 1em 0;
-  counter-increment: figure;
-}
-
-div.figure .caption, div.table .caption {
-  font-size: 0.9em;
-  font-style: italic;
-}
-
-div.figure .caption::before {
-  content: "Figure " counter(figure) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-
-div.table .caption::before {
-  content: "Table " counter(table) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-
-div.table {
-  margin: 1em 0;
-  counter-increment: table;
-}
-
-div.table th {
-  text-align: left;
-}
-
-table th, table td {
-  text-align: left;
-  padding-right: 1em;
-  page-break-inside: avoid;
-}
-
-table th {
-  border-top: thin solid;
-  border-bottom: thin solid;
-  padding-top: 0.2em;
-  padding-bottom: 0.2em;
-}
-table td {
-  border-top: none;
-  border-bottom: thin dotted;
-  padding-top: 0.2em;
-  padding-bottom: 0.2em;
-}
-
-div.Scrollbar {
-	display: none;
-}
-
-
-/* Weird div.codeHeader a b::before would be a better selection
-   but prince does not properly match it.. Firefox does. */
-div.codeHeader::before {
-  content: "Listing " counter(listing) ". ";
-  font-weight: bold;
-  font-style: normal;
-}
-div.codeHeader a b {
-  font-style: italic;
-  font-weight: normal;
-}
-div.codeHeader {
-  font-size: 0.9em;
-  counter-increment: listing;
-}
-div.code {
-	border: 1px dashed #c0c0c0;
-    font-size: 12px;
-	font-family: Courier;
-    margin: 5px;
-	line-height: 13px;
-	padding: 3px;
-	background-color: #f8f8f8;
-
-}
-
-
-@page {
-  margin: 2cm;
-  size: 7in 9.25in;
-
-  @footnotes {
-    border-top: thin solid black;
-    padding-top: 0.3em;
-    margin-top: 0.6em;
-  }
-}
-
-
-/* define default page and names pages: cover, blank, frontmatter */
-div.page-reset {
-    counter-reset: page 1;
-}
-
-@page :left {
-  @top-left-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-    visibility: hidden;
-  }
-  @top-left {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first);
-    visibility: hidden;
-  }
-  @bottom-left-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-  }
-  @bottom-left {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first);
-  }
-}
-
-@page :right {
-  @top-right-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: left;
-    margin-left: 1cm;
-    visibility: hidden;
-  }
-  @top-right {
-    font-weight: 900;
-    font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first)
-    visibility: hidden;
-  }
-  @bottom-right-corner {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    content: counter(page);
-    text-align: right;
-    margin-right: 1cm;
-  }
-  @bottom-right {
-    font-weight: 900; font: 9pt "Gill Sans", serif;
-    white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
-    content: string(header, first)
-  }
-}
-
-/*
-  In theory we should be able to use the :first selector so taht
-  we can put the page numbering on the bottom of the first page of the chapter
-  but have the rest of the pages number at the top.  But this does not seem
-  to work.  See http://www.princexml.com/doc/6.0/page-selectors/
-
-  So for now just always number at the bottom :(
-*/
-/*
-div.chapter { page: bottom-number; }
-@page bottom-number :first {
-  @top-left {
-    visibility: hidden;
-  }
-  @bottom-left {
-    visibility: visible;
-  }
-  @top-right {
-    visibility: hidden;
-  }
-  @bottom-right {
-    visibility: visible;
-  }
-}
-*/
-
-@page cover { margin: 0; }
-
-@page frontmatter :left {
-  @bottom-left-corner {
-    content: counter(page, lower-roman);
-  }
-  @bottom-left-corner {
-    content: counter(page, lower-roman);
-  }
-}
-
-@page frontmatter :right {
-  @bottom-right-corner {
-    content: counter(page, lower-roman);
-  }
-  @bottom-right-corner {
-    content: counter(page, lower-roman);
-  }
-}
-
-@page blank :left {
-  @top-left { visibility: hidden; }
-  @bottom-left { visibility: hidden; }
-  @top-left-corner { visibility: hidden; }
-  @bottom-left-corner { visibility: hidden; }
-}
-
-@page blank :right {
-  @top-right { visibility: hidden; }
-  @bottom-right { visibility: hidden; }
-  @top-right-corner { visibility: hidden; }
-  @bottom-right-corner { visibility: hidden; }
-}
-
-/* footnotes */
-.footnote {
-  display: none;                   /* default rule */
-
-  display: prince-footnote;        /* prince-specific rules */
-  position: footnote;
-  footnote-style-position: inside;
-
-  counter-increment: footnote;
-  margin-left: 1.4em;
-  font-size: 90%;
-  line-height: 1.4;
-}
-
-.footnote::footnote-call {
-  vertical-align: super;
-  font-size: 80%;
-}
-
-.footnote::footnote-marker {
-  vertical-align: super;
-  color: green;
-  padding-right: 0.4em;
-}
-
-/* Confluence contents to hide */
-#labels-section {
-	display: none;
-}
-#comments-section {
-	display: none;
-}
-#footer {
-	display: none;
-}
-.hidden {
-	display: none;
-}
-
-/*
-   A book consists of different types of sections. We propose to use
-   DIV elements with these class names:
-
-    frontcover
-    halftitlepage: contains the title of the book
-    titlepage: contains the title of the book, name of author(s) and publisher
-    imprint: left page with copyright, publisher, library printing information
-    dedication: right page with short dedication
-    foreword: written by someone other than the author(s)
-    toc: table of contents
-    preface: preface, including acknowledgements
-    chapter: each chapter is given its own DIV element
-    references: contains list of references
-    appendix: each appendix is given its own
-    bibliography
-    glossary
-    index
-    colophon: describes how the book was produced
-    backcover
-
-   A book will use several of the types listed above, but few books
-   will use all of them.
-*/
-
-/* which section uses which named page */
-
-div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
-div.foreword, div.toc, div.preface { page: frontmatter }
-
-
-/* page breaks */
-div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
-div.imprint { page-break-before: always; }
-div.chapter { page-break-before: always; }
-div.dedication, div.foreword, div.toc, div.preface, div.reference,
-div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
-  page-break-before: always
-}
-div.backcover { page-break-before: left }
-
-/* titlepage, halftitlepage */
-
-div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
-div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
-div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
-div.titlepage p, div.halftitlepage p {
-  font-size: 1.4em;
-  font-weight: bold;
-  margin: 0; padding: 0;
-}
-
-
-/* TOC */
-
-ul.toc, ul.toc ul {
-  list-style-type: none;
-  margin: 0; padding: 0;
-  margin-left: 3cm;
-}
-ul.toc ul {
-  margin-left: 1em;
-  font-weight: normal;
-}
-ul.toc > li {
-  font-weight: bold;
-  margin-bottom: 0.5em;
-}
-ul.toc a::after {
-  content: leader('.') target-counter(attr(href), page);
-  font-style: normal;
-}
-ul.toc > li.frontmatter a::after {
-  content: leader('.') target-counter(attr(href), page, lower-roman);
-  font-style: normal;
-}
-ul.toc > li.endmatter a::after {
-  content: leader('.') target-counter(attr(href), page);
-  font-style: normal;
-}
-ul.toc > li.chapter::before {
-  content: "Chapter " counter(toc-chapter, decimal);
-  display: block;
-  margin: 1em 0 0.1em -2.5cm;
-  font-weight: normal;
-  counter-increment: toc-chapter;
-  page-break-after: avoid;
-}
-
-/* chapter numbers */
-
-div.chapter { counter-increment: chapter; }
-div.chapter h1::before {
-  text-transform: uppercase;
-  letter-spacing: 0.15em;
-  content: "Chapter  " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
-  white-space: pre;
-  font-size: 50%;
-}
-
-div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
-  content: normal; /* that is, none */
-}
-
-h1 { string-set: header content();}
-div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
-
-/* index */
-
-ul.index {
-  list-style-type: none;
-  margin: 0; padding: 0;
-  column-count: 2;
-  column-gap: 1em;
-}
-
-ul.index a::after { content: ", " target-counter(attr(href), page); }
-
-
-span.element, span.attribute {
-  text-transform: uppercase;
-  font-weight: bold;
-  font-size: 80%;
-}
-span.property { font-weight: bold }
-code, span.css, span.value, span.declaration {
-  font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-
-@media screen, handheld {
-  html {font: 14px "Gill Sans", sans-serif; }
-  h1 { margin-bottom: 0.5em }
-  div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
-  div.dedication, div.foreword, div.toc, div.index { display: none }
-  body {
-      margin: 0cm;
-      margin-left: 2cm;
-      margin-right: 2cm;
-  }
-}
-
-/*
- * Enhancements to the take advantage of some of the style markup that
- * Confluence generates
- */
-a sup img { visibility: hidden; position: absolute;}
-
-img {
-  prince-image-resolution:150dpi;
-}
-
-table {
-  font: "Lucida Console", "Lucida Sans Typewriter", monospace;
-}
-
-table td {
-  font-size: 10pt;
-}
-
-pre {
-   white-space: pre-wrap;
-}
-
-.codeContent {
-  font-size: 80%;
-}
-.code {
-}
-.code-keyword {
-  color: #000091;
-  background-color: inherit;
-}
-
-.code-object {
-  color: #910091;
-  background-color: inherit;
-}
-
-.code-quote {
-  color: #009100;
-  background-color: inherit;
-}
-
-.code-comment {
-  color: #808080;
-  background-color: inherit;
-}
-
-
-.code-xml .code-keyword {
-  color: inherit;
-  font-weight: bold;
-}
-
-.code-tag {
-  color: #000091;
-  background-color: inherit;
-}
-
-.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
-.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
-.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
-.tipMacro { border-color: #090; background-color: #dfd;}
-.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
-  border: thin solid;
-  float: top-next;
-  margin: 1em 0 1.2em 0;
-  padding: 0.5em;
-  column-count: 2;
-  column-gap: 1.5em;
-  width: 100%;
-}
-table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
-    border: none;
-}
-table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
-    font-size:x-small;
-    margin-top: 1em;
-}
-  </style>
-  <style type="text/css">
-.syntax .hll { background-color: #ffffcc }
-.syntax  { background: #f0f0f0; }
-.syntax .c { color: #60a0b0; font-style: italic } /* Comment */
-.syntax .err { border: 1px solid #FF0000 } /* Error */
-.syntax .k { color: #007020; font-weight: bold } /* Keyword */
-.syntax .o { color: #666666 } /* Operator */
-.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
-.syntax .cp { color: #007020 } /* Comment.Preproc */
-.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
-.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
-.syntax .gd { color: #A00000 } /* Generic.Deleted */
-.syntax .ge { font-style: italic } /* Generic.Emph */
-.syntax .gr { color: #FF0000 } /* Generic.Error */
-.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.syntax .gi { color: #00A000 } /* Generic.Inserted */
-.syntax .go { color: #808080 } /* Generic.Output */
-.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.syntax .gs { font-weight: bold } /* Generic.Strong */
-.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.syntax .gt { color: #0040D0 } /* Generic.Traceback */
-.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.syntax .kp { color: #007020 } /* Keyword.Pseudo */
-.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.syntax .kt { color: #902000 } /* Keyword.Type */
-.syntax .m { color: #40a070 } /* Literal.Number */
-.syntax .s { color: #4070a0 } /* Literal.String */
-.syntax .na { color: #4070a0 } /* Name.Attribute */
-.syntax .nb { color: #007020 } /* Name.Builtin */
-.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.syntax .no { color: #60add5 } /* Name.Constant */
-.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.syntax .ne { color: #007020 } /* Name.Exception */
-.syntax .nf { color: #06287e } /* Name.Function */
-.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */
-.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.syntax .nv { color: #bb60d5 } /* Name.Variable */
-.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.syntax .w { color: #bbbbbb } /* Text.Whitespace */
-.syntax .mf { color: #40a070 } /* Literal.Number.Float */
-.syntax .mh { color: #40a070 } /* Literal.Number.Hex */
-.syntax .mi { color: #40a070 } /* Literal.Number.Integer */
-.syntax .mo { color: #40a070 } /* Literal.Number.Oct */
-.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */
-.syntax .sc { color: #4070a0 } /* Literal.String.Char */
-.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.syntax .s2 { color: #4070a0 } /* Literal.String.Double */
-.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.syntax .sx { color: #c65d09 } /* Literal.String.Other */
-.syntax .sr { color: #235388 } /* Literal.String.Regex */
-.syntax .s1 { color: #4070a0 } /* Literal.String.Single */
-.syntax .ss { color: #517918 } /* Literal.String.Symbol */
-.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */
-.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */
-.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */
-
-
-/* don't highlight errors */
-.syntax .err {
-  border: none;
-}
-
-.syntax {
-  font-size: .9em;
-  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
-  background-color: #F8F8FF;
-
-  overflow:auto;
-  -moz-background-clip:border;
-  -moz-background-inline-policy:continuous;
-  -moz-background-origin:padding;
-  margin: 1em 0 1em 0;
-  border:1px solid #DDDDDD;
-
-  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px;
-  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
-  border-style: solid;  border-width: 1px; border-color: #dedede !important;
-  padding: 1em;
-}
-.syntax .linenodiv  {
-  background-color:#ECECEC;
-  border-right:1px solid #DDDDDD;
-  color:#AAAAAA;
-  padding: .5em;
-  text-align:right;
-}
-.syntax .highlight  {
-}
-.syntax pre {
-  margin:0;
-}
-
-pre.syntax {
-  padding: .5em;
-  background-color: #F8F8FF; overflow:auto;
-}
-
-.syntax code {
-  font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
-  font-size: 10pt;
-}
-
-div.compare { width: 700px; }
-div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; }
-div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; }
-div.compare div h3 {
-  margin-left: 15px;
-  padding: 5px 15px;
-  display: inline;
-  font-size: .8em;
-  color: #666;
-
-  border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5;
-  border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5;
-  border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5;
-  border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px;  -moz-border-radius-topleft: 8px;
-  border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px;
-}
-div.compare div div {
-  margin: 5px 0px 0px 0px;
-}
-.clear {
-  clear:both;
-}
-.wide div.compare div.compare-left { float:none; width:700px; }
-.wide div.compare div.compare-right { float:none; width:700px; }
-
-  </style>
-
-  <title>${title}</title>
-</head>
-<body>
-  <div id="titlepage">
-    <div id="title">Apache Karaf Cellar</div>
-    <div id="subtitle">Version ${cellar.version}</div>
-  </div>
-  <div id="main">
-    <%= body %>
-  </div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/WEB-INF/web.xml b/manual/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 031c573..0000000
--- a/manual/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (C) 2009-2010 the original author or authors.
-    See the notice.md file distributed with this work for additional
-    information regarding copyright ownership.
-
-    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.
-
--->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-        version="2.5">
-
-  <display-name>Apache Karaf Cellar Documentation</display-name>
-
-  <description>
-    Apache Karaf Cellar Documentation
-  </description>
-
-  <filter>
-    <filter-name>TemplateEngineFilter</filter-name>
-    <filter-class>org.fusesource.scalate.servlet.TemplateEngineFilter</filter-class>
-  </filter>
-  <filter-mapping>
-    <filter-name>TemplateEngineFilter</filter-name>
-    <url-pattern>/*</url-pattern>
-  </filter-mapping>
-
-  <welcome-file-list>
-    <welcome-file>index.conf</welcome-file>
-  </welcome-file-list>
-
-  <error-page>
-    <error-code>500</error-code>
-    <location>/WEB-INF/scalate/errors/500.scaml</location>
-  </error-page>
-</web-app>

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/broadcasting_commands.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/broadcasting_commands.conf b/manual/src/main/webapp/architecture-guide/broadcasting_commands.conf
deleted file mode 100644
index d74f8a4..0000000
--- a/manual/src/main/webapp/architecture-guide/broadcasting_commands.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-h1. Broadcasting commands
-
-Commands are a special kind of event. They imply that when they are handled, a Result event will be fired
-containing the outcome of the command. For each command, we have one result per recipient. Each command
-contains an unique id (unique for all cluster nodes, created from Hazelcast). This id is used to correlate
-the request with the result. For each result successfully correlated the result is added to list of results
-on the command object. If the list gets full of if 10 seconds from the command execution have elapsed, the list
-is moved to a blocking queue from which the result can be retrieved.
-
-The following code snippet shows what happens when a command is sent for execution:
-
-{code}
-public Map<node,result> execute(Command command) throws Exception {  
-   if (command == null) {  
-      throw new Exception("Command store not found");  
-   } else {  
-      //store the command to correlate it with the result.  
-      commandStore.getPending().put(command.getId(), command);  
-      //I create a timeout task and schedule it  
-      TimeoutTask timeoutTask = new TimeoutTask(command, commandStore);  
-      ScheduledFuture timeoutFuture = timeoutScheduler.schedule(timeoutTask, command.getTimeout(), TimeUnit.MILLISECONDS);  
-   }  
-   if (producer != null) {  
-      //send the command to the topic  
-      producer.produce(command);  
-      //retrieve the result list from the blocking queue.  
-      return command.getResult();  
-   }  
-   throw new Exception("Command producer not found");  
-}  
-{code}

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/design.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/design.conf b/manual/src/main/webapp/architecture-guide/design.conf
deleted file mode 100644
index 1a42849..0000000
--- a/manual/src/main/webapp/architecture-guide/design.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-h1. Design
-
-The design works with the following entities:
-
-* *OSGi Listener* An interface which implements a listener for specific OSGi events (e.g. ConfigurationListener).
-* *Event* The object that contains all the required information required to describe the event (e.g. PID changed).
-* *Event Topic* The distributed topic used to broadcast events. It is common for all event types.
-* *Shared Map* The distributed collection that serves as shared resource. We use one per event type.
-* *Event Handler* The processor which processes remote events received through the topic.
-* *Event Dispatcher* The unit which decides which event should be processed by which event handlers.
-* *Command* A special type of event that is linked to a list of events that represent the outcome of the command.
-* *Result* A special type of event that represents the outcome of a command. Commands and results are correlated.
-
-!/images/event_flow.jpg!
-
-The OSGi specification uses the Events and Listener paradigm in many situations (e.g. ConfigurationChangeEvent
-and ConfigurationListener). By implementing such a Listener and exposing it as an OSGi service to the Service
-Registry, we can be sure that we are "listening" for the events that we are interested in.
-
-When the listener is notified of an event, it forwards the Event object to a Hazelcazst distributed topic. To
-keep things as simple as possible, we keep a single topic for all event types. Each node has a listener
-registered on that topic and gets/sends all events to the event dispatcher.
-
-When the Event Dispatcher receives an event, it looks up an internal registry (in our case the OSGi Service Registry)
-to find an Event Handler that can handle the received Event. The handler found receives the event and processes it.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/hazelcast.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/hazelcast.conf b/manual/src/main/webapp/architecture-guide/hazelcast.conf
deleted file mode 100644
index c10c52a..0000000
--- a/manual/src/main/webapp/architecture-guide/hazelcast.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-h1. The role of Hazelcast
-
-The idea behind the clustering engine is that for each unit that we want to replicate, we create an event,
-broadcast the event to the cluster and hold the unit state to a shared resource, so that the rest of the
-nodes can look up and retrieve the changes.
-
-!/images/shared_architecture.jpg!
-
-For instance, we want all nodes in our cluster to share configuration for PIDs a.b.c and x.y.z. On node
-"Karaf A" a change occurs on a.b.c. "Karaf A" updated the shared repository data for a.b.c and then notifies
-the rest of the nodes that a.b.c has changed. Each node looks up the shared repository and retrieves changes.
-
-The architecture as described so far could be implemented using a database/shared filesystem as a shared
-resource and polling instead of multicasting events. So why use Hazelcast ?
-
-Hazelcast fits in perfectly because it offers:
-
-* Auto discovery
-** Cluster nodes can discover each other automatically.
-** No configuration is required.
-* No single point of failure
-** No server or master is required for clustering
-** The shared resource is distributed, hence we introduce no single point of failure.
-* Provides distributed topics
-** Using in memory distributed topics allows us to broadcast events/commands which are valuable for management and monitoring.
-
-In other words, Hazelcast allows us to setup a cluster with zero configuration and no dependency to external
-systems such as a database or a shared file system.
-
-See the Hazelcast documentation at http://www.hazelcast.com/documentation.jsp for more information.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/index.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/index.conf b/manual/src/main/webapp/architecture-guide/index.conf
deleted file mode 100644
index 70ddd4b..0000000
--- a/manual/src/main/webapp/architecture-guide/index.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-h1. Karaf Cellar Architecture Guide
-
-* [Overview|/architecture-guide/overview]
-* [Supported Events|/architecture-guide/supported_events]
-* [Why Hazelcast ?|/architecture-guide/hazelcast]
-* [Cellar Design|/architecture-guide/design]
-* [Broadcasting Commands|/architecture-guide/broadcasting_commands]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/overview.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/overview.conf b/manual/src/main/webapp/architecture-guide/overview.conf
deleted file mode 100644
index 64044ec..0000000
--- a/manual/src/main/webapp/architecture-guide/overview.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-h1. Architecture Overview
-
-The core concept behind Karaf Cellar is that each node can be a part of one or more groups that
-provide the node distributed memory for keeping data (e.g. configuration, features information, other)
-and a topic which is used to exchange events with the rest of the group nodes.
-
-!/images/architecture.png!
-
-Each group comes with a configuration, which defines which events are to be broadcasted and which are
-not. Whenever a local change occurs to a node, the node will read the setup information of all the
-groups that it belongs to and broadcasts the event to the groups that are whitelisted to the specific event.
-
-The broadcast operation happens via a distributed topic provided by the group. For the groups
-that the broadcast reaches, the distributed configuration data will be updated so that nodes
-that join in the future can pickup the change.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/architecture-guide/supported_events.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/architecture-guide/supported_events.conf b/manual/src/main/webapp/architecture-guide/supported_events.conf
deleted file mode 100644
index 03ead71..0000000
--- a/manual/src/main/webapp/architecture-guide/supported_events.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-h1. Supported Events
-
-There are 3 types of events:
-
-* Configuration change event.
-* Features repository added/removed event.
-* Features installed/uninstalled event.
-
-Optionally (by installing the corresponding features), Cellar supports the following additional events:
-* EventAdmin
-* OBR
-
-For each of the event types above a group may be configured to enabled synchronization, and to provide
-a whitelist/blacklist of specific event IDs.
-
-For instance, the default group is configured to allow synchronization of configuration. This means that
-whenever a change occurs via the config admin to a specific PID, the change will pass to the distributed
-memory of the default group and will also be broadcasted to all other default group nodes using the topic.
-
-This happens for all PIDs but not for org.apache.karaf.cellar.node which is marked as blacklisted
-and will never be written or read from the distributed memory, nor will be broadcasted via the topic.
-
-The user can add/remove any PID he wishes to the whitelist/blacklist.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/images/architecture.jpg
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/images/architecture.jpg b/manual/src/main/webapp/images/architecture.jpg
deleted file mode 100644
index 96f38b5..0000000
Binary files a/manual/src/main/webapp/images/architecture.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/images/cross_topology.jpg
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/images/cross_topology.jpg b/manual/src/main/webapp/images/cross_topology.jpg
deleted file mode 100644
index ec6b017..0000000
Binary files a/manual/src/main/webapp/images/cross_topology.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/images/event_flow.jpg
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/images/event_flow.jpg b/manual/src/main/webapp/images/event_flow.jpg
deleted file mode 100644
index 42a9ec7..0000000
Binary files a/manual/src/main/webapp/images/event_flow.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/images/shared_architecture.jpg
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/images/shared_architecture.jpg b/manual/src/main/webapp/images/shared_architecture.jpg
deleted file mode 100644
index da733ca..0000000
Binary files a/manual/src/main/webapp/images/shared_architecture.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/images/star_topology.jpg
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/images/star_topology.jpg b/manual/src/main/webapp/images/star_topology.jpg
deleted file mode 100644
index 50693ff..0000000
Binary files a/manual/src/main/webapp/images/star_topology.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/index.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/index.conf b/manual/src/main/webapp/index.conf
deleted file mode 100644
index 0a276de..0000000
--- a/manual/src/main/webapp/index.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-h1. Apache Karaf Cellar
-
-This project contains documentation about Apache Karaf Cellar.
-
-* [Overview|overview]
-* [User Guide|user-guide/index]
-* [Architecture Guide|architecture-guide/index]

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/manual.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/manual.conf b/manual/src/main/webapp/manual.conf
deleted file mode 100644
index 3e3959d..0000000
--- a/manual/src/main/webapp/manual.conf
+++ /dev/null
@@ -1,49 +0,0 @@
-{attributes:layout=/WEB-INF/scalate/layouts/print.ssp}
-
-{div:class=title}
-\\
-\\
-\\
-\\
-Apache Karaf Cellar
-User Guide
-\\
-\\
-\\
-\\
-{div}
-
-{div:class=copyright-section}
-Copyright 2011 The Apache Software Foundation
-
-The PDF format of the Karaf Manual has been generated by Prince XML (http://www.princexml.com).
-{div}
-
-{div:class=toc-title}
-Table of contents
-{div}
-
-{toc:maxLevel=2}
-
-h1. Overview
-{include:overview.conf}
-
-h1. User Guide
-{include:user-guide/introduction.conf}
-{include:user-guide/installation.conf}
-{include:user-guide/deploy.conf}
-{include:user-guide/nodes.conf}
-{include:user-guide/groups.conf}
-{include:user-guide/obr.conf}
-{include:user-guide/event.conf}
-{include:user-guide/http-balancer.conf}
-{include:user-guide/http-session.conf}
-{include:user-guide/transport.conf}
-{include:user-guide/cloud.conf}
-
-h1. Architecture Guide
-{include:architecture-guide/overview.conf}
-{include:architecture-guide/supported_events.conf}
-{include:architecture-guide/hazelcast.conf}
-{include:architecture-guide/design.conf}
-{include:architecture-guide/broadcasting_commands.conf}

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/overview.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/overview.conf b/manual/src/main/webapp/overview.conf
deleted file mode 100644
index 687dda6..0000000
--- a/manual/src/main/webapp/overview.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-h1. Karaf Cellar Overview
-
-Apache Karaf Cellar is a Apache Karaf sub-project which provides clustering support between multiple Karaf instances.
-
-Cellar allows you to manage a cluster of several Karaf instances, providing synchronization between instances.
-Here is a short list of Cellar features:
-
-* *Discovery*: when you install Cellar into a Karaf instance, it automatically tries to join the cluster of other Cellar -running Karaf instances it discovers. There is no configuration required to join the cluster, the discovery is made behind the scenes, with multicast or unicast used for discovery.
-* *Cluster Group*: a Karaf node can be part of one or more cluster groups. In Cellar, you can define cluster groups per your requirements. Resources will be sync'ed between nodes of the same group.
-* *Distributed Configuration Admin*: Cellar distributes configuration data, both of Cellar-specific and Karaf etc/*.cfg configuration files. The distribution is event driven and filtered by group. You can tune the configuration replication using blacklists/whitelists on the configuration ID (PID).
-* *Distributed Features Service*: Cellar distributes features and features respository information, also an event-driven process.
-* *Provisioning*: Cellar provides shell commands for basic provisioning. It can also use an OBR backend or another provisioning tool such as Apache ACE.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/user-guide/cloud.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/cloud.conf b/manual/src/main/webapp/user-guide/cloud.conf
deleted file mode 100644
index f600532..0000000
--- a/manual/src/main/webapp/user-guide/cloud.conf
+++ /dev/null
@@ -1,110 +0,0 @@
-h1. Discovery Services
-
-The Discovery Services allow you to use third party libraries to discover the nodes member of the Cellar cluster.
-
-h2. jClouds
-
-Cellar relies on Hazelcast (http://www.hazelcast.com) in order to discover cluster nodes. This can happen either by using unicast, multicast  or specifying the ip address of each node.
-See the [Core Configuration|hazelcast] section for details.
-
-Unfortunately multicast is not allowed in most IaaS providers and the alternative of specifying all IP addresses creates maintenance difficulties, especially since in most cases the addresses are not known in advance.
-
-Cellar solves this problem using a cloud discovery service powered by jclouds (http://jclouds.apache.org).
-
-h3. Cloud discovery service
-
-Most cloud providers provide cloud storage among other services. Cellar uses the cloud storage via jclouds, in order to determine the IP addresses of each node so that Hazelcast can find them.
-
-This approach is also called blackboard and refers to the process where each node registers itself in a common storage are so that other nodes know its existence.
-
-h3. Installing Cellar cloud discovery service
-
-To install the cloud discovery service simply install the appropriate jclouds provider and then install cellar-cloud feature.
-Amazon S3 is being used here for this example, but the below applies to any provider supported by jclouds.
-
-{code}
-karaf@root()> feature:install jclouds-aws-s3
-karaf@root()> feature:install cellar-cloud
-{code}
-
-Once the feature is installed, you're required to create a configuration that contains credentials and the type of the cloud storage (aka blobstore).
-To do that add a configuration file under the etc folder with the name org.apache.karaf.cellar.cloud-<provider>.cfg and place the following information there:
-
-provider=aws-s3 (this varies according to the blobstore provider)
-identity=<the identity of the blobstore account>
-credential=<the credential/password of the blobstore account)
-container=<the name of the bucket>
-validity=<the amount of time an entry is considered valid, after that time the entry is removed>
-
-For instance, you can create _etc/org.apache.karaf.cellar.cloud-mycloud.cfg_ containing:
-
-{code}
-provider=aws-s3
-identity=username
-credential=password
-container=cellar
-validity=360000
-{code}
-
-NB: you can find the cloud providers supported by jclouds here http://repo1.maven.org/maven2/org/apache/jclouds/provider/.
-You have to install the corresponding jclouds feature for the provider.
-
-After creating the file the service will check for new nodes. If new nodes are found the Hazelcast instance configuration will be updated and the instance restarted.
-
-h2. Kubernetes & docker.io
-
-[Kubernetes|http://kubernetes.io] is an open source orchestration system for docker.io containers.
-It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches
-the users declared intentions.
-Using the concepts of "labels", "pods", "replicationControllers" and "services", it groups the containers which make up
-an application into logical units for easy management and discovery.
-Following the aforementioned concept will most likely change how you package and provision your Karaf based applications.
-For instance, you will eventually have to provide a Docker image with a pre-configured Karaf, KAR files in deployment
-folder, etc. so that your Kubernetes container may bootstrap everything on boot.
-
-The Cellar Kubernetes discovery service is a great complement to the Karaf docker.io feature (allowing you to easily
-create and manage docker.io images in and for Karaf).
-
-h3. Kubernetes discovery service
-
-In order to determine the IP address of each node, so that Hazelcast can connect to them, the Kubernetes discovery service queries
-the Kubernetes API for containers labeled with the _pod.label.key_ and _pod.label.key_ specified in _etc/org.apache.karaf.cellar.kubernetes-name.cfg_.
-The name in _etc/org.apache.karaf.cellar.kubernetes-name.cfg_ is a name of the choice. It allows you to create multiple Kubernetes discovery services.
-Thanks to that, the Cellar nodes can be discovered on different Kubernetes.
-
-So, you *must be sure* to label your containers (pods) accordingly.
-
-After a Cellar node starts up, Kubernetes discovery service will configure Hazelcast with currently running Cellar nodes.
-Since Hazelcast follows a peer-to-peer all-shared topology, whenever nodes come up and down, the cluster will remain up-to-date.
-
-h3. Installing Kubernetes discovery service
-
-To install the Kubernetes discovery service, simply install cellar-kubernetes feature.
-
-{code}
-karaf@root()> feature:install cellar-kubernetes
-{code}
-
-Once the cellar-kubernetes feature is installed, you have to create the Kubernetes provider configuration file.
-If you have multiple Kubernetes instances, you create one configuration file per instance.
-
-For instance, you can create _etc/org.apache.karaf.cellar.kubernetes-myfirstcluster.cfg_ containing:
-
-{code}
-host=localhost
-port=8080
-pod.label.key=name
-pod.label.value=cellar
-{code}
-
-and another one _etc/org.apache.karaf.cellar.kubernetes-mysecondcluster.cfg_ containing:
-
-{code}
-host=192.168.134.2
-port=8080
-pod.label.key=name
-pod.label.value=cellar
-{code}
-
-In case you change the file, the discovery service will check again for new nodes. If new nodes are found, Hazelcast configuration will be
-updated and the instance restarted.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/user-guide/deploy.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/deploy.conf b/manual/src/main/webapp/user-guide/deploy.conf
deleted file mode 100644
index 4a820c0..0000000
--- a/manual/src/main/webapp/user-guide/deploy.conf
+++ /dev/null
@@ -1,91 +0,0 @@
-h1. Deploy Cellar
-
-This chapter describes how to deploy and start Cellar into a running Apache Karaf instance. This chapter
-assumes that you already know Apache Karaf basics, especially the notion of features and shell usage.
-
-h2. Registering Cellar features
-
-Karaf Cellar is provided as a Karaf features XML descriptor.
-
-Simply register the Cellar feature URL in your Karaf instance:
-
-{code}
-karaf@root()> feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.1/xml/features
-Adding feature url mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.1/xml/features
-{code}
-
-Now you have Cellar features available in your Karaf instance:
-
-{code}
-karaf@root()> feature:list |grep -i cellar
-cellar-core                   | 3.0.1   |           | karaf-cellar-3.0.1 | Karaf clustering core
-hazelcast                     | 3.2.3   |           | karaf-cellar-3.0.1 | In memory data grid
-cellar-hazelcast              | 3.0.1   |           | karaf-cellar-3.0.1 | Cellar implementation based on Hazelcast
-cellar-config                 | 3.0.1   |           | karaf-cellar-3.0.1 | ConfigAdmin cluster support
-cellar-features               | 3.0.1   |           | karaf-cellar-3.0.1 | Karaf features cluster support
-cellar-bundle                 | 3.0.1   |           | karaf-cellar-3.0.1 | Bundle cluster support
-cellar-shell                  | 3.0.1   |           | karaf-cellar-3.0.1 | Cellar shell support
-cellar                        | 3.0.1   |           | karaf-cellar-3.0.1 | Karaf clustering
-cellar-dosgi                  | 3.0.1   |           | karaf-cellar-3.0.1 | DOSGi support
-cellar-obr                    | 3.0.1   |           | karaf-cellar-3.0.1 | OBR cluster support
-cellar-eventadmin             | 3.0.1   |           | karaf-cellar-3.0.1 | OSGi events broadcasting in clusters
-cellar-cloud                  | 3.0.1   |           | karaf-cellar-3.0.1 | Cloud blobstore support in clusters
-cellar-webconsole             | 3.0.1   |           | karaf-cellar-3.0.1 | Cellar plugin for Karaf WebConsole
-{code}
-
-h2. Starting Cellar
-
-To start Cellar in your Karaf instance, you only need to install the Cellar feature:
-
-{code}
-karaf@root()> feature:install cellar
-{code}
-
-You can now see the Cellar components (bundles) installed:
-
-{code}
-karaf@root()> la|grep -i cellar
-80 | Active   |  30 | 3.0.1        | Apache Karaf :: Cellar :: Core
-81 | Active   |  31 | 3.0.1        | Apache Karaf :: Cellar :: Utils
-82 | Active   |  33 | 3.0.1        | Apache Karaf :: Cellar :: Hazelcast
-83 | Active   |  40 | 3.0.1        | Apache Karaf :: Cellar :: Shell
-84 | Active   |  40 | 3.0.1        | Apache Karaf :: Cellar :: Config
-85 | Active   |  40 | 3.0.1        | Apache Karaf :: Cellar :: Bundle
-86 | Active   |  40 | 3.0.1        | Apache Karaf :: Cellar :: Features
-{code}
-
-And Cellar cluster commands are now available:
-
-{code}
-karaf@root()> cluster:<TAB>
-{code}
-
-h2. Optional features
-
-Optionally, you can install additional features.
-
-The cellar-event feature adds support of OSGi EventAdmin on the cluster:
-
-{code}
-karaf@root()> feature:install cellar-event
-{code}
-
-The cellar-obr feature adds support of OBR sync on the cluster:
-
-{code}
-karaf@root()> feature:install cellar-obr
-{code}
-
-The cellar-dosgi feature adds support of DOSGi (Distributed OSGi):
-
-{code}
-karaf@root()> feature:install cellar-dosgi
-{code}
-
-The cellar-cloud feature adds support of cloud blobstore, allowing to use instances located on a cloud provider:
-
-{code}
-karaf@root()> feature:install cellar-cloud
-{code}
-
-Please, see the sections dedicated to these features for details.

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/user-guide/event.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/event.conf b/manual/src/main/webapp/user-guide/event.conf
deleted file mode 100644
index c2c7a50..0000000
--- a/manual/src/main/webapp/user-guide/event.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-h1. OSGi Event Broadcasting support (eventadmin)
-
-Apache Karaf Cellar is able to listen all OSGi events on the cluster nodes, and broadcast each events to other nodes.
-
-h2. Enable OSGi Event Broadcasting support
-
-OSGi Event Broadcasting is an optional feature. To enable it, you have to install the cellar-eventadmin feature:
-
-{code}
-karaf@root()> feature:install cellar-eventadmin
-{code}
-
-h2. OSGi Event Broadcast in action
-
-As soon as the cellar-eventadmin feature is installed (on all nodes that should use the clustered eventadmin),
-Cellar listens all OSGi events, and broadcast these events to all nodes of the same cluster group.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/karaf-cellar/blob/812d3fc1/manual/src/main/webapp/user-guide/groups.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/user-guide/groups.conf b/manual/src/main/webapp/user-guide/groups.conf
deleted file mode 100644
index c48ce42..0000000
--- a/manual/src/main/webapp/user-guide/groups.conf
+++ /dev/null
@@ -1,316 +0,0 @@
-h1. Cellar groups
-
-You can define groups in Cellar. A group allows you to define specific nodes and resources that are to be
-working together. This permits some nodes (those outside the group) not to need to sync'ed with changes of
-a node within a group.
-
-By default, the Cellar nodes go into the default group:
-
-{code}
-karaf@root()> cluster:group-list
-  | Group   | Members
------------------------------------------------
-x | default | node2:5702 node1:5701(x)
-{code}
-
-The 'x' indicates a local group. A local group is a group containing the local node (where we are connected).
-
-h2. New group
-
-You can create a new group using the group-create command:
-
-{code}
-karaf@root()> cluster:group-create test
-{code}
-
-For now, the test group hasn't any nodes:
-
-{code}
-karaf@node1()> cluster:group-list
-  | Group   | Members
------------------------------------------------
-x | default | node2:5702 node1:5701(x)
-  | test    |
-{code}
-
-h2. Clustered Resources and Cluster Groups
-
-h3. Features
-
-Cellar can manipulate features and features repositories on cluster groups.
-
-You can use cluster:feature-* commands or the corresponding MBean for that.
-
-You can list the features repositories on a given cluster group:
-
-{code}
-karaf@node1()> cluster:feature-repo-list default
-Repository                  |    Located    | URL
--------------------------------------------------------------------------------------------------------------------------
-jclouds-1.8.1               | cluster/local | mvn:org.apache.jclouds.karaf/jclouds-karaf/1.8.1/xml/features
-karaf-cellar-3.0.1-SNAPSHOT | cluster/local | mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.1-SNAPSHOT/xml/features
-org.ops4j.pax.cdi-0.8.0     | cluster/local | mvn:org.ops4j.pax.cdi/pax-cdi-features/0.8.0/xml/features
-spring-3.0.2                | cluster/local | mvn:org.apache.karaf.features/spring/3.0.2/xml/features
-standard-3.0.2              | cluster/local | mvn:org.apache.karaf.features/standard/3.0.2/xml/features
-enterprise-3.0.2            | cluster/local | mvn:org.apache.karaf.features/enterprise/3.0.2/xml/features
-org.ops4j.pax.web-3.1.2     | cluster/local | mvn:org.ops4j.pax.web/pax-web-features/3.1.2/xml/features
-{code}
-
-You have the name of the repository, and the URL, like in the feature:repo-list command. However, the cluster:feature-repo-list command
-provides the location of the features repository:
-* cluster means that the repository is defined only on the cluster group
-* local means that the repository is defined only on the local node (not on the cluster)
-* cluster/local means that the repository is defined both on the local node, but also on the cluster group
-
-You can add a repository on a cluster group using the cluster:feature-repo-add command:
-
-{code}
-karaf@node1()> cluster:feature-repo-add default mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features
-{code}
-
-You can remove a repository from a cluster group using the cluster:feature-repo-remove command:
-
-{code}
-karaf@node1()> cluster:feature-repo-remove default mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features
-{code}
-
-You can list the features on a given cluster group:
-
-{code}
-karaf@node1()> cluster:feature-list default |more
-Name                                    | Version          | Installed | Located       | Blocked
-------------------------------------------------------------------------------------------------
-gemini-blueprint                        | 1.0.0.RELEASE    |           | cluster/local |
-package                                 | 3.0.2            | x         | cluster/local |
-jclouds-api-route53                     | 1.8.1            |           | cluster/local |
-jclouds-rackspace-clouddns-uk           | 1.8.1            |           | cluster/local |
-cellar-cloud                            | 3.0.1-SNAPSHOT   |           | local         | in/out
-webconsole                              | 3.0.2            |           | cluster/local |
-cellar-shell                            | 3.0.1-SNAPSHOT   | x         | local         | in/out
-jclouds-glesys                          | 1.8.1            |           | cluster/local |
-...
-{code}
-
-Like for the features repositories, you can note there the "Located" column containing where the feature is located (local
-to the node, or on the cluster group).
-You can also see the "Blocked" column indicating if the feature is blocked inbound or outbound (see the blocking policy).
-
-You can install a feature on a cluster group using the cluster:feature-install command:
-
-{code}
-karaf@node1()> cluster:feature-install default eventadmin
-{code}
-
-You can uninstall a feature from a cluster group, using the cluster:feature-uninstall command:
-
-{code}
-karaf@node1()> cluster:feature-uninstall default eventadmin
-{code}
-
-Cellar also provides a feature listener, disabled by default as you can see in etc/org.apache.karaf.cellar.node.cfg configuration
-file:
-
-{code}
-feature.listener = false
-{code}
-
-The listener listens for the following local feature changes:
-* add features repository
-* remove features repository
-* install feature
-* uninstall feature
-
-h3. Bundles
-
-Cellar can manipulate bundles on cluster groups.
-
-You can use cluster:bundle-* commands or the corresponding MBean for that.
-
-You can list the bundles in a cluster group using the cluster:bundle-list command:
-
-{code}
-karaf@node1()> cluster:bundle-list default |more
-Bundles in cluster group default
-ID | State    | Located       | Blocked | Version         | Name
---------------------------------------------------------------------------------------------------------------------
- 0 | Active   | cluster/local |         | 2.2.0           | OPS4J Pax Url - aether:
- 1 | Active   | cluster/local |         | 3.0.2           | Apache Karaf :: Deployer :: Blueprint
- 2 | Active   | cluster/local |         | 2.2.0           | OPS4J Pax Url - wrap:
- 3 | Active   | cluster/local |         | 1.8.0           | Apache Felix Configuration Admin Service
- 4 | Active   | cluster/local |         | 3.0.2           | Apache Karaf :: Region :: Core
- ...
-{code}
-
-Like for the features, you can see the "Located" and "Blocked" columns.
-
-You can install a bundle on a cluster group using the cluster:bundle-install command:
-
-{code}
-karaf@node1()> cluster:bundle-install default mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-lang/2.4_6
-{code}
-
-You can start a bundle in a cluster group using the cluster:bundle-start command:
-
-{code}
-karaf@node1()> cluster:bundle-start default commons-lang
-{code}
-
-You can stop a bundle in a cluster group using the cluster:bundle-stop command:
-
-{code}
-karaf@node1()> cluster:bundle-stop default commons-lang
-{code}
-
-You can uninstall a bundle from a cluster group using the cluster:bundle-uninstall command:
-
-{code}
-karaf@node1()> cluster:bundle-uninstall default commons-lang
-{code}
-
-Like for the feature, Cellar provides a bundle listener disabled by default in etc/org.apache.karaf.cellar.nodes.cfg:
-
-{code}
-bundle.listener = false
-{code}
-
-The bundle listener listens the following local bundle changes:
-* install bundle
-* start bundle
-* stop bundle
-* uninstall bundle
-
-h3. Configurations
-
-Cellar can manipulate configurations on cluster groups.
-
-You can use cluster:config-* commands or the corresponding MBean for that.
-
-You can list the configurations on a cluster group using the cluster:config-list command:
-
-{code}
-karaf@node1()> cluster:config-list default |more
-----------------------------------------------------------------
-Pid:            org.apache.karaf.command.acl.jaas
-Located:        cluster/local
-Blocked:
-Properties:
-   update = admin
-   service.pid = org.apache.karaf.command.acl.jaas
-----------------------------------------------------------------
-...
-{code}
-
-You can note the "Blocked" and "Located" attributes, like for features and bundles.
-
-YOu can list properties in a config using the cluster:config-property-list command:
-
-{code}
-karaf@node1()> cluster:config-property-list default org.apache.karaf.jaas
-Property list for configuration PID org.apache.karaf.jaas for cluster group default
-   encryption.prefix = {CRYPT}
-   encryption.name =
-   encryption.enabled = false
-   encryption.suffix = {CRYPT}
-   encryption.encoding = hexadecimal
-   service.pid = org.apache.karaf.jaas
-   encryption.algorithm = MD5
-{code}
-
-You can set or append a value to a config property using the cluster:config-property-set or cluster:config-property-append command:
-
-{code}
-karaf@node1()> cluster:config-property-set default my.config my.property my.value
-{code}
-
-You can delete a property in a config using the cluster:config-property-delete command:
-
-{code}
-karaf@node1()> cluster:config-property-delete default my.config my.property
-{code}
-
-You can delete the whole config using the cluster:config-delete command:
-
-{code}
-karaf@node1()> cluster:config-delete default my.config
-{code}
-
-Like for feature and bundle, Cellar provides a config listener disabled by default in etc/org.apache.karaf.cellar.nodes.cfg:
-
-{code}
-config.listener = false
-{code}
-
-The config listener listens the following local config changes:
-* create a config
-* add/delete/change a property
-* delete a config
-
-As some properties may be local to a node, Cellar excludes some property by default.
-You can see the current excluded properties using the cluster:config-property-excluded command:
-
-{code}
-karaf@node1()> cluster:config-property-excluded
-service.factoryPid, felix.fileinstall.filename, felix.fileinstall.dir, felix.fileinstall.tmpdir, org.ops4j.pax.url.mvn.defaultRepositories
-{code}
-
-You can modify this list using the same command, or by editing the etc/org.apache.karaf.cellar.node.cfg configuration file:
-
-{code}
-#
-# Excluded config properties from the sync
-# Some config properties can be considered as local to a node, and should not be sync on the cluster.
-#
-config.excluded.properties = service.factoryPid, felix.fileinstall.filename, felix.fileinstall.dir, felix.fileinstall.tmpdir, org.ops4j.pax.url.mvn.defaultRepositories
-{code}
-
-h3. OBR (optional)
-
-See the [OBR section|obr] for details.
-
-h3. EventAdmin (optiona)
-
-See the [EventAdmin section|event] for details.
-
-h2. Blocking policy
-
-You can define a policy to filter the cluster events exchanges by the nodes (inbound or outbound).
-
-It allows you to block or allow some resources on the cluster.
-
-By adding a resource id in a blacklist, you block the resource.
-By adding a resource id in a whitelist, you allow the resource.
-
-For instance, for feature, you can use the cluster:feature-block command to display or modify the current blocking policy for features:
-
-{code}
-karaf@node1()> cluster:feature-block default
-INBOUND:
-        whitelist: [*]
-        blacklist: [config, cellar*, hazelcast, management]
-OUTBOUND:
-        whitelist: [*]
-        blacklist: [config, cellar*, hazelcast, management]
-{code}
-
-NB: * is a wildcard.
-
-You have the equivalent command for bundle and config:
-
-{code}
-karaf@node1()> cluster:bundle-block default
-INBOUND:
-        whitelist: [*]
-        blacklist: [*.xml]
-OUTBOUND:
-        whitelist: [*]
-        blacklist: [*.xml]
-karaf@node1()> cluster:config-block default
-INBOUND:
-        whitelist: [*]
-        blacklist: [org.apache.karaf.cellar*, org.apache.karaf.shell, org.ops4j.pax.logging, org.ops4j.pax.web, org.apache.felix.fileinstall*, org.apache.karaf.management, org.apache.aries.transaction]
-OUTBOUND:
-        whitelist: [*]
-        blacklist: [org.apache.karaf.cellar*, org.apache.karaf.shell, org.ops4j.pax.logging, org.ops4j.pax.web, org.apache.felix.fileinstall*, org.apache.karaf.management, org.apache.aries.transaction]
-{code}
-
-Using those commands, you can also update the blacklist and whitelist for inbound or outbound cluster events.
\ No newline at end of file