Migrate OCP Plugin dev docs to rst
[docs.git] / manuals / developer-guide / src / main / asciidoc / ocpplugin / ocp-developer-guide.adoc
index bebdb7e08b5fc56c9bf1f3a6b65d375e8f1943d4..5d1538fa50e534f45afa78d6272b8424a0796de5 100644 (file)
@@ -1,870 +1,3 @@
 == OCP Plugin Developer Guide
-This document is intended for both OCP (ORI [Open Radio Interface] C&M [Control and Management]
-Protocol) agent developers and OpenDaylight service/application developers.
-It describes essential information needed to implement an OCP agent that is capable of interoperating
-with the OCP plugin running in OpenDaylight, including the OCP connection establishment and
-state machines used on both ends of the connection. It also provides a detailed description of the
-northbound/southbound APIs that the OCP plugin exposes to allow automation and programmability.
 
-=== Overview
-OCP is an ETSI standard protocol for control and management of Remote Radio Head (RRH)
-equipment. The OCP Project addresses the need for a southbound plugin that allows
-applications and controller services to interact with RRHs using OCP. The OCP southbound
-plugin will allow applications acting as a Radio Equipment Control (REC) to interact
-with RRHs that support an OCP agent.
-
-.OCP southbound plugin
-image::ocpplugin/ocp-sb-plugin.jpg[OCP southbound plugin,width=500]
-
-=== Architecture
-OCP is a vendor-neutral standard communications interface defined to enable control and management
-between RE and REC of an ORI architecture. The OCP Plugin supports the implementation of the OCP
-specification; it is based on the Model Driven Service Abstraction Layer (MD-SAL) architecture.
-
-The OCP Plugin project consists of three main components: OCP southbound plugin, OCP protocol library
-and OCP service. For details on each of them, refer to the OCP Plugin User Guide.
-
-.Overall architecture
-image::ocpplugin/plugin-design.jpg[Overall architecture,width=500]
-
-=== Connection Establishment
-The OCP layer is transported over a TCP/IP connection established between the RE and the REC.
-OCP provides the following functions:
-
-* Control & Management of the RE by the REC
-* Transport of AISG/3GPP Iuant Layer 7 messages and alarms between REC and RE
-
-==== Hello Message
-Hello message is used by the OCP agent during connection setup. It is used for version negotiation.
-When the connection is established, the OCP agent immediately sends a Hello message with the version
-field set to highest OCP version supported by itself, along with the verdor ID and serial number of
-the radio head it is running on.
-
-The combinaiton of the verdor ID and serial number will be used by the OCP plugin to uniquely identify
-a managed radio head. When not receiving reply from the OCP plugin, the OCP agent can resend Hello
-message with pre-defined Hello timeout (THLO) and Hello resend times (NHLO).
-
-According to ORI spec, the default value of TCP Link Monitoring Timer (TTLM) is 50 seconds. The RE shall
-trigger an OCP layer restart while TTLM expires in RE or the RE detects a TCP link failure. So we may
-define NHLO * THLO = 50 seconds (e.g. NHLO = 10, THLO = 5 seconds).
-
-By nature the Hello message is a new type of indication, and it contains supported OCP version, vendor
-ID and serial number as shown below.
-
-.Hello message
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<msg xmlns="http://uri.etsi.org/ori/002-2/v4.1.1">
-  <header>
-    <msgType>IND</msgType>
-    <msgUID>0</msgUID>
-  </header>
-  <body>
-    <helloInd>
-      <version>4.1.1</version>
-      <vendorId>XYZ</vendorId>
-      <serialNumber>ABC123</serialNumber>
-    </helloInd>
-  </body>
-</msg>
-----
-
-==== Ack Message
-Hello from the OCP agent will always make the OCP plugin respond with ACK. In case everything is OK,
-it will be ACK(OK). In case something is wrong, it will be ACK(FAIL).
-
-If the OCP agent receives ACK(OK), it goes to Established state. If the OCP agent receives ACK(FAIL),
-it goes to Maintenance state. The failure code and reason of ACK(FAIL) are defined as below:
-
-* FAIL_OCP_VERSION (OCP version not supported)
-* FAIL_NO_MORE_CAPACITY (OCP plugin cannot control any more radio heads)
-
-The result inside Ack message indicates OK or FAIL with different reasons.
-
-.Ack message
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<msg xmlns="http://uri.etsi.org/ori/002-2/v4.1.1">
-  <header>
-    <msgType>ACK</msgType>
-    <msgUID>0</msgUID>
-  </header>
-  <body>
-    <helloAck>
-      <result>FAIL_OCP_VERSION</result>
-    </helloAck>
-  </body>
-</msg>
-----
-
-==== State Machines
-The following figures illustrate the Finite State Machine (FSM) of the OCP agent and OCP plugin
-for new connection procedure.
-
-.OCP agent state machine
-image::ocpplugin/ocpagent-state-machine.jpg[OCP agent state machine,width=500]
-
-.OCP plugin state machine
-image::ocpplugin/ocpplugin-state-machine.jpg[OCP plugin state machine,width=500]
-
-=== Northbound APIs
-There are ten exposed northbound APIs: health-check, set-time, re-reset, get-param,
-modify-param, create-obj, delete-obj, get-state, modify-state and get-fault
-
-==== health-check
-The Health Check procedure allows the application to verify that the OCP layer is functioning
-correctly at the RE.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:health-check-nb
-
-===== POST Input
-
-[options="header",cols="2,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| tcpLinkMonTimeout | unsignedShort | TCP Link Monitoring Timeout (unit: seconds) | 50 | Yes
-|=======
-
-.Example
-----
-{
-    "health-check-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "tcpLinkMonTimeout": "50"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| result | String, enumerated | Common default result codes
-|=======
-
-.Example
-----
-{
-    "output": {
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== set-time
-The Set Time procedure allows the application to set/update the absolute time reference that
-shall be used by the RE.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:set-time-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| newTime | dateTime | New datetime setting for radio head | 2016-04-26T10:23:00-05:00 | Yes
-|=======
-
-.Example
-----
-{
-    "set-time-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "newTime": "2016-04-26T10:23:00-05:00"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| result | String, enumerated | Common default result codes + FAIL_INVALID_TIMEDATA
-|=======
-
-.Example
-----
-{
-    "output": {
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== re-reset
-The RE Reset procedure allows the application to reset a specific RE.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:re-reset-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-|=======
-
-.Example
-----
-{
-    "re-reset-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| result | String, enumerated | Common default result codes
-|=======
-
-.Example
-----
-{
-    "output": {
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== get-param
-The Object Parameter Reporting procedure allows the application to retrieve the following information:
-
-. the defined object types and instances within the Resource Model of the RE
-. the values of the parameters of the objects
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:get-param-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RxSigPath_5G:1 | Yes
-| paramName | String | Parameter name | dataLink | Yes
-|=======
-
-.Example
-----
-{
-    "get-param-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objId": "RxSigPath_5G:1",
-            "paramName": "dataLink"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| id | String | Object ID
-| name | String | Object parameter name
-| value | String | Object parameter value
-| result | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT", "FAIL_UNKNOWN_PARAM"
-|=======
-
-.Example
-----
-{
-    "output": {
-        "obj": [
-            {
-                "id": "RxSigPath_5G:1",
-                "param": [
-                    {
-                        "name": "dataLink",
-                        "value": "dataLink:1"
-                    }
-                ]
-            }
-        ],
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== modify-param
-The Object Parameter Modification procedure allows the application to configure the values of the
-parameters of the objects identified by the Resource Model.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:modify-param-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RxSigPath_5G:1 | Yes
-| name | String | Object parameter name | dataLink | Yes
-| value | String | Object parameter value | dataLink:1 | Yes
-|=======
-
-.Example
-----
-{
-    "modify-param-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objId": "RxSigPath_5G:1",
-            "param": [
-                {
-                    "name": "dataLink",
-                    "value": "dataLink:1"
-                }
-            ]
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| objId | String | Object ID
-| globResult | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT", "FAIL_PARAMETER_FAIL",
-  "FAIL_NOSUCH_RESOURCE"
-| name | String | Object parameter name
-| result | String, enumerated | "SUCCESS", "FAIL_UNKNOWN_PARAM", "FAIL_PARAM_READONLY", "FAIL_PARAM_LOCKREQUIRED",
-  "FAIL_VALUE_OUTOF_RANGE", "FAIL_VALUE_TYPE_ERROR"
-|=======
-
-.Example
-----
-{
-    "output": {
-        "objId": "RxSigPath_5G:1",
-        "globResult": "SUCCESS",
-        "param": [
-            {
-                "name": "dataLink",
-                "result": "SUCCESS"
-            }
-        ]
-    }
-}
-----
-
-==== create-obj
-The Object Creation procedure allows the application to create and initialize a new instance
-of the given object type on the RE.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:create-obj-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objType | String | Object type | RxSigPath_5G | Yes
-| name | String | Object parameter name | dataLink | No
-| value | String | Object parameter value | dataLink:1 | No
-|=======
-
-.Example
-----
-{
-    "create-obj-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objType": "RxSigPath_5G",
-            "param": [
-                {
-                    "name": "dataLink",
-                    "value": "dataLink:1"
-                }
-            ]
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| objId | String | Object ID
-| globResult | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJTYPE", "FAIL_STATIC_OBJTYPE",
-  "FAIL_UNKNOWN_OBJECT", "FAIL_CHILD_NOTALLOWED", "FAIL_OUTOF_RESOURCES" "FAIL_PARAMETER_FAIL", "FAIL_NOSUCH_RESOURCE"
-| name | String | Object parameter name
-| result | String, enumerated | "SUCCESS", "FAIL_UNKNOWN_PARAM", "FAIL_PARAM_READONLY", "FAIL_PARAM_LOCKREQUIRED",
-  "FAIL_VALUE_OUTOF_RANGE", "FAIL_VALUE_TYPE_ERROR"
-|=======
-
-.Example
-----
-{
-    "output": {
-        "objId": "RxSigPath_5G:0",
-        "globResult": "SUCCESS",
-        "param": [
-            {
-                "name": "dataLink",
-                "result": "SUCCESS"
-            }
-        ]
-    }
-}
-----
-
-==== delete-obj
-The Object Deletion procedure allows the application to delete a given object instance and
-recursively its entire child objects on the RE.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:delete-obj-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RxSigPath_5G:1 | Yes
-|=======
-
-.Example
-----
-{
-    "delete-obj-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "obj-id": "RxSigPath_5G:0"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| result | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT",
-  "FAIL_STATIC_OBJTYPE", "FAIL_LOCKREQUIRED"
-|=======
-
-.Example
-----
-{
-    "output": {
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== get-state
-The Object State Reporting procedure allows the application to acquire the current state
-(for the requested state type) of one or more objects of the RE resource model, and
-additionally configure event-triggered reporting of the detected state changes for all
-state types of the indicated objects.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:get-state-nb
-
-===== POST Input
-
-[options="header",cols="2,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RxSigPath_5G:1 | Yes
-| stateType | String, enumerated | Valid values: "AST", "FST", "ALL" | ALL | Yes
-| eventDrivenReporting | Boolean | Event-triggered reporting of state change | true | Yes
-|=======
-
-.Example
-----
-{
-    "get-state-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objId": "antPort:0",
-            "stateType": "ALL",
-            "eventDrivenReporting": "true"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| id | String | Object ID
-| type | String, enumerated | State type. Valid values: "AST", "FST
-| value | String, enumerated | State value. Valid values: For state type = "AST": "LOCKED", "UNLOCKED".
-  For state type = "FST": "PRE_OPERATIONAL", "OPERATIONAL", "DEGRADED", "FAILED", "NOT_OPERATIONAL", "DISABLED"
-| result | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT", "FAIL_UNKNOWN_STATETYPE",
-  "FAIL_VALUE_OUTOF_RANGE"
-|=======
-
-.Example
-----
-{
-    "output": {
-        "obj": [
-            {
-                "id": "antPort:0",
-                "state": [
-                    {
-                        "type": "FST",
-                        "value": "DISABLED"
-                    },
-                    {
-                        "type": "AST",
-                        "value": "LOCKED"
-                    }
-                ]
-            }
-        ],
-        "result": "SUCCESS"
-    }
-}
-----
-
-==== modify-state
-The Object State Modification procedure allows the application to trigger a change in the
-state of an object of the RE Resource Model.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:modify-state-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RxSigPath_5G:1 | Yes
-| stateType | String, enumerated | Valid values: "AST", "FST", "ALL" | AST | Yes
-| stateValue | String, enumerated | Valid values: For state type = "AST": "LOCKED", "UNLOCKED".
-  For state type = "FST": "PRE_OPERATIONAL", "OPERATIONAL", "DEGRADED", "FAILED", "NOT_OPERATIONAL", "DISABLED" | LOCKED | Yes
-|=======
-
-.Example
-----
-{
-    "modify-state-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objId": "RxSigPath_5G:1",
-            "stateType": "AST",
-            "stateValue": "LOCKED"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| objId | String | Object ID
-| stateType | String, enumerated | State type. Valid values: "AST", "FST
-| stateValue | String, enumerated | State value. Valid values: For state type = "AST": "LOCKED", "UNLOCKED".
-  For state type = "FST": "PRE_OPERATIONAL", "OPERATIONAL", "DEGRADED", "FAILED", "NOT_OPERATIONAL", "DISABLED"
-| result | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT", "FAIL_UNKNOWN_STATETYPE",
-"FAIL_UNKNOWN_STATEVALUE", "FAIL_STATE_READONLY", "FAIL_RESOURCE_UNAVAILABLE", "FAIL_RESOURCE_INUSE",
-"FAIL_PARENT_CHILD_CONFLICT", "FAIL_PRECONDITION_NOTMET
-|=======
-
-.Example
-----
-{
-    "output": {
-        "objId": "RxSigPath_5G:1",
-        "stateType": "AST",
-        "stateValue": "LOCKED",
-        "result": "SUCCESS",
-    }
-}
-----
-
-==== get-fault
-The Fault Reporting procedure allows the application to acquire information about all current
-active faults associated with a primary object, as well as configure the RE to report when the
-fault status changes for any of faults associated with the indicated primary object.
-
-Default URL: http://localhost:8181/restconf/operations/ocp-service:get-fault-nb
-
-===== POST Input
-
-[options="header",cols="1,1,2,2,1"]
-|=======
-|Field Name | Type | Description | Example | Required?
-| nodeId | String | Inventory node reference for OCP radio head | ocp:MTI-101-200 | Yes
-| objId | String | Object ID | RE:0 | Yes
-| eventDrivenReporting | Boolean | Event-triggered reporting of fault | true | Yes
-|=======
-
-.Example
-----
-{
-    "get-fault-nb": {
-        "input": {
-            "nodeId": "ocp:MTI-101-200",
-            "objId": "RE:0",
-            "eventDrivenReporting": "true"
-        }
-    }
-}
-----
-
-===== POST Output
-
-[options="header",cols="1,1,2"]
-|=======
-|Field Name | Type | Description
-| result | String, enumerated | Common default result codes + "FAIL_UNKNOWN_OBJECT", "FAIL_VALUE_OUTOF_RANGE"
-| id (obj) | String | Object ID
-| id (fault) | String | Fault ID
-| severity | String | Fault severity
-| timestamp | dateTime | Time stamp
-| descr | String | Text description
-| affectedObj | String | Affected object
-|=======
-
-.Example
-----
-{
-    "output": {
-        "result": "SUCCESS",
-        "obj": [
-            {
-                "id": "RE:0",
-                "fault": [
-                    {
-                        "id": "FAULT_OVERTEMP",
-                        "severity": "DEGRADED",
-                        "timestamp": "2012-02-12T16:35:00",
-                        "descr": "PA temp too high; Pout reduced",
-                        "affectedObj": [
-                            "TxSigPath_EUTRA:0",
-                            "TxSigPath_EUTRA:1"
-                        ]
-                    },
-                    {
-                        "id": "FAULT_VSWR_OUTOF_RANGE",
-                        "severity": "WARNING",
-                        "timestamp": "2012-02-12T16:01:05",
-                    }
-                ]
-            }
-        ],
-    }
-}
-----
-
-NOTE:
-The northbound APIs described above wrap the southbound APIs to make them accessible to external applications
-via RESTCONF, as well as take care of synchronizing the RE resource model between radio heads and the controller's
-datastore. See applications/ocp-service/src/main/yang/ocp-resourcemodel.yang for the yang representation of the RE
-resource model.
-
-=== Java Interfaces (Southbound APIs)
-The southbound APIs provide concrete implementation of the following OCP elementary functions:  health-check,
-set-time, re-reset, get-param, modify-param, create-obj, delete-obj, get-state, modify-state and get-fault.
-Any OpenDaylight services/applications (of course, including OCP service) wanting to speak OCP to radio heads will
-need to use them.
-
-==== SalDeviceMgmtService
-Interface SalDeviceMgmtService defines three methods corresponding to health-check, set-time and re-reset.
-
-.SalDeviceMgmtService.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.device.mgmt.rev150811;
-
-public interface SalDeviceMgmtService
-    extends
-    RpcService
-{
-    Future<RpcResult<HealthCheckOutput>> healthCheck(HealthCheckInput input);
-
-    Future<RpcResult<SetTimeOutput>> setTime(SetTimeInput input);
-
-    Future<RpcResult<ReResetOutput>> reReset(ReResetInput input);
-
-}
-----
-
-==== SalConfigMgmtService
-Interface SalConfigMgmtService defines two methods corresponding to get-param and modify-param.
-
-.SalConfigMgmtService.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.config.mgmt.rev150811;
-
-public interface SalConfigMgmtService
-    extends
-    RpcService
-{
-
-    Future<RpcResult<GetParamOutput>> getParam(GetParamInput input);
-
-    Future<RpcResult<ModifyParamOutput>> modifyParam(ModifyParamInput input);
-
-}
-----
-
-==== SalObjectLifecycleService
-Interface SalObjectLifecycleService defines two methods corresponding to create-obj and delete-obj.
-
-.SalObjectLifecycleService.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.object.lifecycle.rev150811;
-
-public interface SalObjectLifecycleService
-    extends
-    RpcService
-{
-
-    Future<RpcResult<CreateObjOutput>> createObj(CreateObjInput input);
-
-    Future<RpcResult<DeleteObjOutput>> deleteObj(DeleteObjInput input);
-
-}
-----
-
-==== SalObjectStateMgmtService
-Interface SalObjectStateMgmtService defines two methods corresponding to get-state and modify-state.
-
-.SalObjectStateMgmtService.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.object.state.mgmt.rev150811;
-
-public interface SalObjectStateMgmtService
-    extends
-    RpcService
-{
-
-    Future<RpcResult<GetStateOutput>> getState(GetStateInput input);
-
-    Future<RpcResult<ModifyStateOutput>> modifyState(ModifyStateInput input);
-
-}
-----
-
-==== SalFaultMgmtService
-Interface SalFaultMgmtService defines only one method corresponding to get-fault.
-
-.SalFaultMgmtService.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.fault.mgmt.rev150811;
-
-public interface SalFaultMgmtService
-    extends
-    RpcService
-{
-
-    Future<RpcResult<GetFaultOutput>> getFault(GetFaultInput input);
-
-}
-----
-
-=== Notifications
-In addition to indication messages, the OCP southbound plugin will translate specific events
-(e.g., connect, disconnect) coming up from the OCP protocol library into MD-SAL Notification
-objects and then publish them to the MD-SAL. Also, the OCP service will notify the completion
-of certain operation via Notification as well.
-
-==== SalDeviceMgmtListener
-An onDeviceConnected Notification will be published to the MD-SAL as soon as a
-radio head is connected to the controller, and when that radio head is disconnected
-the OCP southbound plugin will publish an onDeviceDisconnected Notification in response
-to the disconnect event propagated from the OCP protocol library.
-
-.SalDeviceMgmtListener.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.device.mgmt.rev150811;
-
-public interface SalDeviceMgmtListener
-    extends
-    NotificationListener
-{
-
-    void onDeviceConnected(DeviceConnected notification);
-
-    void onDeviceDisconnected(DeviceDisconnected notification);
-
-}
-----
-
-==== OcpServiceListener
-The OCP service will publish an onAlignmentCompleted Notification to the MD-SAL once
-it has completed the OCP alignment procedure with the radio head.
-
-.OcpServiceListener.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ocp.applications.ocp.service.rev150811;
-
-public interface OcpServiceListener
-    extends
-    NotificationListener
-{
-
-    void onAlignmentCompleted(AlignmentCompleted notification);
-
-}
-----
-
-==== SalObjectStateMgmtListener
-When receiving a state change indication message, the OCP southbound plugin will propagate
-the indication message to upper layer services/applications by publishing a corresponding
-onStateChangeInd Notification to the MD-SAL.
-
-.SalObjectStateMgmtListener.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.object.state.mgmt.rev150811;
-
-public interface SalObjectStateMgmtListener
-    extends
-    NotificationListener
-{
-
-    void onStateChangeInd(StateChangeInd notification);
-
-}
-----
-
-==== SalFaultMgmtListener
-When receiving a fault indication message, the OCP southbound plugin will propagate
-the indication message to upper layer services/applications by publishing a corresponding
-onFaultInd Notification to the MD-SAL.
-
-.SalFaultMgmtListener.java
-----
-package org.opendaylight.yang.gen.v1.urn.opendaylight.ocp.fault.mgmt.rev150811;
-
-public interface SalFaultMgmtListener
-    extends
-    NotificationListener
-{
-
-    void onFaultInd(FaultInd notification);
-
-}
-----
+This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/ocp-plugin-developer-guide.html