Merge "Adding security considerations file for review."
[docs.git] / manuals / developer-guide / src / main / asciidoc / controller / controller.adoc
1 == Controller
2
3 === Overview ===
4
5 OpenDaylight Controller is Java-based, model-driven controller using YANG
6 as its modeling language for various aspects of the system and applications
7 and with its components serves as a base platform for other OpenDaylight
8 applications.
9
10 The OpenDaylight Controller relies on the following technologies:
11
12 * *OSGI* - This framework is the back-end of OpenDaylight as it allows
13 dynamically loading of bundles and packages JAR files, and binding bundles
14 together for exchanging information.
15 * *Karaf* - Application container built on top of OSGI, which simplifies
16     operational aspects of packaging and installing applications.
17 * *YANG* - a data modeling language used to model configuration and
18    state data manipulated by the applications, remote procedure calls, and
19    notifications.
20
21 The OpenDaylight Controller provides following model-driven subsystems as a
22 foundation for Java applications:
23
24 * *<<_config_subsystem, Config Subsystem>>* - an activation, dependency-injection
25    and configuration framework, which allows two-phase commits of configuration
26    and dependency-injection, and allows for run-time rewiring.
27 * *<<_md_sal_overview,MD-SAL>>* - messaging and data storage functionality for data,
28    notifications and RPCs modeled by application developers. MD-SAL uses YANG
29    as the modeling for both interface and data definitions, and provides
30    a messaging and data-centric runtime for such services based on YANG modeling.
31 * *MD-SAL Clustering* - enables cluster support for core MD-SAL functionality
32    and provides location-transparent accesss to YANG-modeled data.
33
34 The OpenDaylight Controller supports external access to applications and data using
35 following model-driven protocols:
36
37 * *NETCONF* - XML-based RPC protocol, which provides abilities for client to
38    invoke YANG-modeled RPCs, receive notifications and to read, modify and
39    manipulate YANG modeled data.
40 * *RESTCONF* - HTTP-based protocol, which provides REST-like APIs to manipulate
41    YANG modeled data and invoke YANG modeled RPCs, using XML or JSON as payload
42    format.
43
44 include::md-sal-overview.adoc[MD-SAL]
45
46 include::md-sal-data-tx.adoc[]
47
48 include::md-sal-rpc-routing.adoc[MD-SAL Rpc Routing]
49
50 include::restconf.adoc[RESTCONF]
51
52 include::websocket-notifications.adoc[Websocket Notifications]
53
54 include::config.adoc[Config Subsystem]