directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r1425693 - in /directory/site/trunk/content/apacheds/advanced-ug: ./ images/
Date Mon, 24 Dec 2012 23:58:54 GMT
Author: elecharny
Date: Mon Dec 24 23:58:54 2012
New Revision: 1425693

URL: http://svn.apache.org/viewvc?rev=1425693&view=rev
Log:
Committed the pages I completed this afternoon in the train

Added:
    directory/site/trunk/content/apacheds/advanced-ug/1.2-network.mdtext
      - copied, changed from r1425438, directory/site/trunk/content/apacheds/advanced-ug/1.2-frontend-protocols.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/1.3-directory-service.mdtext
      - copied, changed from r1425438, directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/1.4-interceptors.mdtext
      - copied, changed from r1425438, directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/1.5-backend.mdtext
      - copied, changed from r1425438, directory/site/trunk/content/apacheds/advanced-ug/1.4-backend.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/images/architecture.graphml
    directory/site/trunk/content/apacheds/advanced-ug/images/architecture.png   (with props)
Modified:
    directory/site/trunk/content/apacheds/advanced-ug/1-architecture.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext
    directory/site/trunk/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext

Modified: directory/site/trunk/content/apacheds/advanced-ug/1-architecture.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1-architecture.mdtext?rev=1425693&r1=1425692&r2=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1-architecture.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1-architecture.mdtext Mon Dec 24 23:58:54
2012
@@ -29,7 +29,7 @@ We will now describe the server architec
 ## Chapter content
 
 * [1.1 - Architectural Overview](1.1-architecture-overview.html)
-* [1.2 - Frontend, protocol provider](1.2-frontend-protocols.html)
-* [1.3 - Interceptors](1.3-interceptors.html)
-* [1.4 - Backend](1.4-backend.html)
-* [1.5 - SchemaManager](1.5-schema-manager.html)
+* [1.2 - Network Layer](1.2-network.html)
+* [1.3 - Directory-Service](1.3-directory-service.html)
+* [1.4 - Interceptors](1.4-interceptors.html)
+* [1.5 - Backend](1.5-backend.html)

Modified: directory/site/trunk/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext?rev=1425693&r1=1425692&r2=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext Mon
Dec 24 23:58:54 2012
@@ -3,8 +3,8 @@ NavPrev: 1-architecture.html
 NavPrevText: 1 - Architecture
 NavUp: 1-architecture.html
 NavUpText: 1 - Architecture
-NavNext: 1.2-frontend-protocols.html
-NavNextText: 1.2 - Frontend, protocol provider
+NavNext: 1.2-network.html
+NavNextText: 1.2 - Network Layer
 Notice: Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -24,4 +24,14 @@ Notice: Licensed to the Apache Software 
 
 # 1.1 - Architecture Overview
 
-Blah...
+The Apache Directory Server (aka *ApacheDS*) architecture has many different layers. The
following schema expose the most important ones :
+
+![ApacheDS architecture](images/architecture.png)
+
+As we can see, we distinguish four different layers :
+* The network
+* The Session
+* The PartitionNexus
+* The Backends
+
+We will describe in detail those layers in the following chapters.
\ No newline at end of file

Copied: directory/site/trunk/content/apacheds/advanced-ug/1.2-network.mdtext (from r1425438,
directory/site/trunk/content/apacheds/advanced-ug/1.2-frontend-protocols.mdtext)
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1.2-network.mdtext?p2=directory/site/trunk/content/apacheds/advanced-ug/1.2-network.mdtext&p1=directory/site/trunk/content/apacheds/advanced-ug/1.2-frontend-protocols.mdtext&r1=1425438&r2=1425693&rev=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1.2-frontend-protocols.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1.2-network.mdtext Mon Dec 24 23:58:54
2012
@@ -1,10 +1,10 @@
-Title: 1.2 - Frontend, protocol provider
+Title: 1.2 - Newtork Layer
 NavPrev: 1.1-architecture-overview.html
 NavPrevText: 1.1 - Architecture Overview
 NavUp: 1-architecture.html
 NavUpText: 1 - Architecture
-NavNext: 1.3-Interceptors.html
-NavNextText: 1.3 - Interceptors
+NavNext: 1.3-directory-service.html
+NavNextText: 1.3 - DirectoryService
 Notice: Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -22,6 +22,48 @@ Notice: Licensed to the Apache Software 
     specific language governing permissions and limitations
     under the License.
 
-# 1.2 - Frontend, protocol provider
+# 1.2 - Network Layer
+
+This layer is the part the user connects to when he wants to obtain some data from the server.
This is not a mandatory part ot the server : we don't need to use it when the server is embedded.
+
+We offer more than just LDAP protocol, the server also include various protocols :
+* Kerberos
+* NTP
+* DHCP
+* DNS
+* ChangePassword
+
+Not all of them are implemented in the current version, but at least the Kerberos server
is available. (The other protocols have been developped as a proof of concept : as they are
all dpeending on a storage database, we have used the LDAP server as a storage).
+
+It's perfectly possible to imagine more protocols being implemented in the near future...
+
+## Server startup
+
+This chapter title is a bit misleading. We don't start a server, we start a _DirectoryService_,
then we start various servers on top of it. The _DirectoryService_ is the part responsible
for the management f data (retrieval, storage, etc). All the servers can access this storage
if needed.
+
+So when the _DirectoryService_ has been started and is operational, we can start the various
servers, which will accept incoming requests from remote peers.
+
+### Transports
+
+We allow connection through the definition of _transports_. A _Transport_ is a **TCP** or
an **UDP** socket capable of absorbing a request and to send a response. Depending on the
type of server, we may declare one or more **TCP** _Transports_, or a **TCP** and a **UDP**
_Transports_, or an **UDP** _Transport_ only.
+
+### Ldap Server
+
+The LDAP server needs one or two **TCP** _Transport_. We have the standard *LDAP* port (defaulting
to *10389* for _ApacheDS_, but the well know port is usually 389), and one can also declare
the *LDAPS* port (defaulting to *10636* for _ApacheDS_, but the well know port is usually
636). 
+
+<DIV class="warning" markdown="1">
+Note that *LDAPS* is considered as deprecated.
+</DIV>
+
+### Kerberos Server
+
+The Kerberos Server uses one **TCP** _Transport_ (defaulting to *60088*, but the well know
port is 88 ) and one **UDP** _transport (same value for both ports). The idea is that the
communication starts on **TCP** and continues on **UDP**.
+
+### ChangePassword Server
+
+The ChangePassword Server uses one **TCP** _Transport_ and one **UDP** transport, too. The
default value is *60464*, but the well known port is *464*.
+
+### Http Server
+
+We have a HttpServer running too, it's used for management. The declared ports are both **TCP**
port, one is for HTTP and its default value is *8080*, the other one is for HTTPS and its
default value is *8443*.
 
-Blah...

Copied: directory/site/trunk/content/apacheds/advanced-ug/1.3-directory-service.mdtext (from
r1425438, directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext)
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1.3-directory-service.mdtext?p2=directory/site/trunk/content/apacheds/advanced-ug/1.3-directory-service.mdtext&p1=directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext&r1=1425438&r2=1425693&rev=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1.3-directory-service.mdtext Mon Dec
24 23:58:54 2012
@@ -1,10 +1,10 @@
-Title: 1.3 - Interceptors
-NavPrev: 1.2-frontend-protocols.html
-NavPrevText: 1.2 - Frontend, protocol provider
+Title: 1.3 - DirectoryService
+NavPrev: 1.2-network.html
+NavPrevText: 1.2 - Network Layer
 NavUp: 1-architecture.html
 NavUpText: 1 - Architecture
-NavNext: 1.4-backend.html
-NavNextText: 1.4 - Backend
+NavNext: 1.4-interceptors.html
+NavNextText: 1.4 - Interceptors
 Notice: Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -22,6 +22,21 @@ Notice: Licensed to the Apache Software 
     specific language governing permissions and limitations
     under the License.
 
-# 1.3 - Interceptors
+# 1.3 - DirectoryService
+
+The _DirectoryService_ is the core of the server. This is where we process incoming requests
and ask the backend for data. 
+
+It has an entry point, the _OperationManager_, which is in charge of pushing the requests
into the _Interceptors_ chain, and to protect the server against concurrent modifications.
+
+Then the request is going through every _Interceptor_ being registred for this operation.
When we have gone through all the _Interceptors_, we have reach the _PartitionNexus_, which
is the connection with the backends.
+
+We now just have to determinate which type of _Backend_ we should address, and this is done
using the _Dn_.The request is then transmitted to the _Backend_, which returns the result.
+
+The result bubble up through the _Interceptors_ as we unfold the stack stack, up the the
_OperationManager_ and the caller.
+
+## Environment
+
+The _DirectoryService_ knows about its execution environment : it has a _schemaManager_ instance,
it knows about the _Interceptors_ chain, it stores a map of all the pending requests (it's
necessary as one may abandon some request), it holds the existing _Sessions_.
+
+In other word, the _DirectoryService_ is not only the part of teh server executing the logic,
it also holds the current state of every clients.
 
-Blah...

Copied: directory/site/trunk/content/apacheds/advanced-ug/1.4-interceptors.mdtext (from r1425438,
directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext)
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1.4-interceptors.mdtext?p2=directory/site/trunk/content/apacheds/advanced-ug/1.4-interceptors.mdtext&p1=directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext&r1=1425438&r2=1425693&rev=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1.3-interceptors.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1.4-interceptors.mdtext Mon Dec 24 23:58:54
2012
@@ -1,10 +1,10 @@
-Title: 1.3 - Interceptors
-NavPrev: 1.2-frontend-protocols.html
-NavPrevText: 1.2 - Frontend, protocol provider
+Title: 1.4 - Interceptors
+NavPrev: 1.3-directory-service.html
+NavPrevText: 1.3 - DirectoryService
 NavUp: 1-architecture.html
 NavUpText: 1 - Architecture
-NavNext: 1.4-backend.html
-NavNextText: 1.4 - Backend
+NavNext: 1.5-backend.html
+NavNextText: 1.5 - Backend
 Notice: Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -22,6 +22,106 @@ Notice: Licensed to the Apache Software 
     specific language governing permissions and limitations
     under the License.
 
-# 1.3 - Interceptors
+# 1.4 - Interceptors
 
-Blah...
+_Interceptors_ are functional layers inside the _DirectoryService_. Ech one of them are responsible
for a specific task. They are ordered, and this order is not to be changed.
+
+Some _Interceptors_ can be disabled, some other can be enabled. It's also possible to add
some new one.
+
+All in all, they will handle operations from a specific functional aspect.
+
+## Handled operations
+
+Each _Interceptor_ handle a subset of the possible operations, among those listed in the
following table :
+
+| Operation | Description |
+|---|---|
+| Add | Add an entry in the backend |
+| Bind | Bind on the DirectoryService |
+| Compare | Compare the elements with the associated entry in the backend |
+| Delete | Delete the entry |
+| getRooDSE | Get back the RootDSE entry |
+| hasEntry | Tells if an entry exists |
+| Lookup | Fetch an entry |
+| Modify | Modify an entry |
+| Move | Move an entry |
+| MoveAndRename | Move and rename an entry |
+| Rename | Rename an entry |
+| Search | Search for entries |
+| Unbind | Unbind from the DirectoryService |
+
+It is important to understand that each operation wil go through each _Interceptor_ that
are declared to handle the operation, down to the backend.
+
+## Existing interceptors
+
+The following interceptors are already present in the server, even if they are not enabled.
In this table, we list all the operation each interceptor is handling, and if the _interceptor_
is enabled by default or not :
+
+| Interceptor | Enabled |add|bnd|cmp|del|DSE|has|lkp|mod|mov|m&r|ren|sea|ubd|
+|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+| AciAuthorizationInterceptor | yes | X | - | X  | X | - | X | X | X | X | X | X | X | -
|
+| AdministrativePointInterceptor | yes | X | - | -  | X | - | - | - | X | X | X | X | ? |
- |
+| AuthenticationInterceptor | yes | X | X | X | X | X | X | X | X | X | X | X | X | X |
+| ChangeLogInterceptor | yes || X | - | - | X | - | - | - | X | X | X | X | - | - |
+| CollectiveAttributeInterceptor | yes | X | - | - | - | - | - | X | X | - | - | - | X |
- |
+| DefaultAuthorizationInterceptor | yes | - | - | - | X | - | - | X | X | X | X | X | X |
- |
+| EventInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| ExceptionInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| JournalInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| KeyDerivationInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| NormalizationInterceptor | yes | X | X | X | X | - | X | X | X | X | X | X | X | - |
+| OperationalAttributeInterceptor | yes | X | - | - | X | - | - | X | X | X | X | X | X |
- |
+| PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| ReferralInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| SchemaInterceptor | yes | X | - | X | - | - | - | X | X | - | ? | X | X | - |
+| SubentryInterceptor | yes | X | - | - | X | - | - | ? | X | X | X | X | X | - |
+| TimerInterceptor | no | X | X | X | X | X | X | X | X | X | X | X | X | X |
+| TriggerInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+
+
+## Interceptors order
+
+As we already said, the _Intecreptors_ order is significant : why would we proceed an _Add_
operation through all the _Interceptors_ if the user is simply denied the right to add an
entry by the _AciAuthorizationInterceptor_ ?
+
+Currently, the following order is enforced :
+
+| Order | Interceptor |
+|---|---|
+| 1 | NormalizationInterceptor |
+| 2 | AuthenticationInterceptor |
+| 3 | ReferralInterceptor |
+| 4 | AciAuthorizationInterceptor |
+| 5 | DefaultAuthorizationInterceptor |
+| 6 | AdministrativePointInterceptor |
+| 7 | ExceptionInterceptor |
+| 8 | SchemaInterceptor |
+| 9 | OperationalAttributeInterceptor |
+| 10 | SubentryInterceptor |
+| 11 | EventInterceptor |
+| 12 | TriggerInterceptor |
+| 13 | ChangeLogInterceptor |
+| 14 | JournalInterceptor |
+
+## Example
+
+Let's consider the _search_ operation. It will be processed successuvly by the following
_Intecreptors_, as it can be deduced by the two previous tables :
+
+* NormalizationInterceptor
+* AuthenticationInterceptor
+* AciAuthorizationInterceptor
+* DefaultAuthorizationInterceptor
+* SchemaInterceptor
+* OperationalAttributeInterceptor
+* SubentryInterceptor
+
+
+We can do the same exercise for each operation.
+
+## Processing
+
+Basically, an _Interceptor_ receives a request for an operation, do some pre-processing,
call the next _Interceptor_ in the chain, do some post-processing, and return a result. 
+
+Calling the next _Interceptor_ is as simple as calling the _next(OperationContext)_ method,
which will compute the right _Interceptor_.
+
+The pre-processing and post-processing are standard Java code, there is nothing special there.

+
+Each operation is passed into an instance of a specific _OperationContext_, which contains
all what is needed about the operation and the environement.
\ No newline at end of file

Copied: directory/site/trunk/content/apacheds/advanced-ug/1.5-backend.mdtext (from r1425438,
directory/site/trunk/content/apacheds/advanced-ug/1.4-backend.mdtext)
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/1.5-backend.mdtext?p2=directory/site/trunk/content/apacheds/advanced-ug/1.5-backend.mdtext&p1=directory/site/trunk/content/apacheds/advanced-ug/1.4-backend.mdtext&r1=1425438&r2=1425693&rev=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/1.4-backend.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/1.5-backend.mdtext Mon Dec 24 23:58:54
2012
@@ -1,10 +1,10 @@
-Title: 1.4 - Backend
-NavPrev: 1.3-interceptors.html
-NavPrevText: 1.3 - Interceptors
+Title: 1.5 - Backend
+NavPrev: 1.4-interceptors.html
+NavPrevText: 1.4 - Interceptors
 NavUp: 1-architecture.html
 NavUpText: 1 - Architecture
-NavNext: 1.5-schemamanager.html
-NavNextText: 1.5 - SchemaManager
+NavNext: 2-server-config.html
+NavNextText: 2 - Server Configuration
 Notice: Licensed to the Apache Software Foundation (ASF) under one
     or more contributor license agreements.  See the NOTICE file
     distributed with this work for additional information
@@ -22,6 +22,78 @@ Notice: Licensed to the Apache Software 
     specific language governing permissions and limitations
     under the License.
 
-# 1.4 - Backend
+# 1.5 - Backend
 
-Blah...
+The _Backend_ is the part of the server responsible for storing data in a way we can easily
retrieve them. This storage does not necessarily have to be remanent : we can have a in-memory
_backend_.
+
+## Existing Backends
+
+We currently have 3 different backends :
+* JDBM
+* LDIF
+* In-Memory
+
+### JDBM Backend
+
+The **JDBM** backend is storing data on disk, using **BTrees**. It's fast when it comes to
retrieve data, slow when you have to add them.
+
+### In-Memory Backend
+
+This Backend loads in memory a full set of entries. ALl of them must be hold by the existig
memory, we don't write on disk anything nor we read anything from disk. If the server is stopped,
everything is lost.
+
+### LDIF Backend
+
+It come sin two forms : one single file, or many fles (one per entry). It's always backed
by a in-memory _Backend_, otherwise it would not be possible to retrieve the entries. 
+
+As we depend on a in-memory backend, which handles the indexes, we have to create those index
when this _Backend_ is read, which can be a costly operation. 
+
+### Future Backends
+
+We intend to add another in-memory backend, based on _Mavibot_, a **MVCC BTREE**. The biggest
advantage over the other systems is that it's fast, it allows concurrent reads without locks
when the other _Backend_ block the reads when some write operation is being processed. Also
it saves on disk it contents peridodically, and has a Journal so that we can recover fro a
crash.
+
+The only drawback is that all the entries and indexes must hold in memory. On the other hand,
we don't anymore need a cache.
+
+## How it works
+
+Basically, each _Backend_ instance inherit from the _AbstractBTreePartition_ class. We can
see that a _Backend_ **must** be a **Btree**.
+
+Data are stored into various tables. In fact, we have one table containing all the entries
- the **MasterTable** - and many indexes. 
+
+### MasterTable
+
+The _MasterTable_ coantins all the entries, serialized. 
+
+This table is a <Key, Value> **BTree**, where the key is the entry's **UUID**, and
the value the serialized entry.
+
+<DIV class="note" markdown="1">
+Theorically, we could be able to read it, and restore the whole database, indexes included,
assuming that we know which index we have to create. Sadly, it's not enough, as the entries
are stored without any information about their position in the **DIT**.
+</DIV>
+
+### Indexes
+
+Each index is also a <key, value> **BTree**, with some exceptions : as we may store
multi-valued elements, it's perfectly possible that the value will grow up to a point it's
extremely costly to store it serialized. For instance, the _ObjectClass_ index may have thousands
of entries for the _Person_ key.
+
+In this case, we use a sub-btree, which is a <key,key> **BTree** (as strange as it
sounds, it's an easy way to add a new key without having to rewrite the full value).
+
+The key can be a _String_, or a _ParentIdAndRdn_.
+
+We have 7 system indexes, which are created when the server is started :
+
+* ObjectClass : to easily find any entry associated with a give _ObjectClass_
+* EntryUUID : The entry unique ID index
+* EntryCsn : The Change Sequence Number index
+* ParentIdAndRdn : A special index containing a RDN and its parent
+* Presence : An index used when searching for the presence of an attributeType in an entry
+* Alias : An index used for aliases
+* OneAlias : An index used for children aliases 
+* SubAlias : An index used of descendant aliases
+
+The user may define many different index, dependening on his needs.
+
+### The ParentIdAndRdn index
+
+This index is special, as it's used to associate an entry to a position in the **DIT**. Assuming
that each entry has a _Dn_, and that this _Dn_ describes a hierarchie, the _ParentIdAndRdn_
index depicts this hierarchy.
+
+The _ParentId_ part refers to the _UUID_ of the parent for the current entry. The _Rdn_ part
is the entry _Rdn_. In order to rebuild the full _Dn_ for a given entry, we must get all the
_ParentIdAndRdn_ up to the root to grab all the needed _Rdn_.
+
+This index is also used to process one level and sub level indexes.

Modified: directory/site/trunk/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext?rev=1425693&r1=1425692&r2=1425693&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext
(original)
+++ directory/site/trunk/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext
Mon Dec 24 23:58:54 2012
@@ -24,12 +24,12 @@ Notice: Licensed to the Apache Software 
 
 # Operations
 There are six kind of operations we can have on an AdministrativePoint :
-- creating a new AP
-- removing an existing AP
-- modifying an existing AP by adding or removing a role
-- renaming an AP
-- moving an AP
-- renaming or moving an AP
+* creating a new AP
+* removing an existing AP
+* modifying an existing AP by adding or removing a role
+* renaming an AP
+* moving an AP
+* renaming or moving an AP
 
 Renaming an AP has no impact on the administrative model, as we don't point
 (internally) on the entry's DN, but on its UUID, so the last three

Added: directory/site/trunk/content/apacheds/advanced-ug/images/architecture.graphml
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/images/architecture.graphml?rev=1425693&view=auto
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/images/architecture.graphml (added)
+++ directory/site/trunk/content/apacheds/advanced-ug/images/architecture.graphml Mon Dec
24 23:58:54 2012
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yFiles for Java 2.9-->
+  <key for="graphml" id="d0" yfiles.type="resources"/>
+  <key for="port" id="d1" yfiles.type="portgraphics"/>
+  <key for="port" id="d2" yfiles.type="portgeometry"/>
+  <key for="port" id="d3" yfiles.type="portuserdata"/>
+  <key attr.name="url" attr.type="string" for="node" id="d4"/>
+  <key attr.name="description" attr.type="string" for="node" id="d5"/>
+  <key for="node" id="d6" yfiles.type="nodegraphics"/>
+  <key attr.name="Description" attr.type="string" for="graph" id="d7"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+  <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+  <graph edgedefault="directed" id="G">
+    <data key="d7"/>
+    <node id="n0">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="86.0" x="148.0" y="345.0"/>
+          <y:Fill color="#CCFFFF" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625"
modelName="custom" textColor="#000000" visible="true" width="52.375" x="16.8125" y="-1.1328125">Backend
+    X<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n1">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="86.0" x="239.0" y="345.0"/>
+          <y:Fill color="#CCFFFF" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625"
modelName="custom" textColor="#000000" visible="true" width="52.375" x="16.8125" y="-1.1328125">Backend
+    Y<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n2">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="86.0" x="330.0" y="345.0"/>
+          <y:Fill color="#CCFFFF" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="32.265625"
modelName="custom" textColor="#000000" visible="true" width="52.375" x="16.8125" y="-1.1328125">Backend
+    Z<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n3">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="230.0" width="268.0" x="148.0" y="105.0"/>
+          <y:Fill color="#FF9900" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="89.376953125"
x="89.3115234375" y="207.8671875">PartitionNexus</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n4">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="229.0" x="167.5" y="277.0"/>
+          <y:Fill color="#CCFFCC" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="68.142578125" x="80.4287109375"
y="5.93359375">Interceptor<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n5">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="229.0" x="167.5" y="237.0"/>
+          <y:Fill color="#CCFFCC" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="68.142578125" x="80.4287109375"
y="5.93359375">Interceptor<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n6">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="229.0" x="167.5" y="197.0"/>
+          <y:Fill color="#CCFFCC" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="15.390625" x="106.8046875" y="5.93359375">...<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n7">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="229.0" x="167.5" y="157.0"/>
+          <y:Fill color="#CCFFCC" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="68.142578125" x="80.4287109375"
y="5.93359375">Interceptor<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n8">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="229.0" x="167.5" y="117.0"/>
+          <y:Fill color="#CCFFCC" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="68.142578125" x="80.4287109375"
y="5.93359375">Interceptor<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n9">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="268.0" x="148.0" y="65.0"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="97.80859375" x="85.095703125"
y="5.93359375">DirectoryService<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n10">
+      <data key="d5"/>
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="136.0" x="148.0" y="25.0"/>
+          <y:Fill color="#FF9900" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog"
fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125"
modelName="custom" textColor="#000000" visible="true" width="52.580078125" x="41.7099609375"
y="5.93359375">Network<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0"
nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+  </graph>
+  <data key="d0">
+    <y:Resources/>
+  </data>
+</graphml>

Added: directory/site/trunk/content/apacheds/advanced-ug/images/architecture.png
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/images/architecture.png?rev=1425693&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/site/trunk/content/apacheds/advanced-ug/images/architecture.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



Mime
View raw message