Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Read a piece of yang modelled data via JSON-RPC

ArgumentsEntity, Datastore, Path
ReturnsJSON Data

Unfortunately, ODL does not support the notion of transactional read. You cannot perform a read on a half-finished and uncommited transaction sequence. You can only see committed data. This is the reason why read does not take a transaction id argument.

...

Check if data exists identified by Entity, Datastore, Path via JSON-RPC

ArgumentsEntity, Datastore, Path
Returnsboolean

Unfortunately, ODL does not support the notion of transactional exist. You cannot perform an exist on a half-finished and uncommited transaction sequence. You can only see committed data. This is the reason why exists does not take a transaction id argument.

...

Obtain an identifier to be used for a sequence of transactional operations.

ArgumentsNone
ReturnsString to uniquely identify a transaction for any of the transaction operations.

All existing implementations use the string representation of a type 4 UUID for this operation. This is not mandatory, any unique string will work and be accepted as ODL.

...

Obtain detailed error information (usually for a failed transaction).

ArgumentsTransaction ID - a string provided by the txid function to identify a transaction.
ReturnsList of detailed application specific error codes which provides information in addition to the normal JSON RPC error codes.

Transactional

put

Enqueue an unconditional creation of the supplied data element at the supplied path (and all necessary parent elements leading to it). If the element exists - enqueue an overwrite to it. Associate this request with this transaction. The actual operation is not performed until a commit is issued for this transaction.

ArgumentsTransaction ID, Entity, Datastore, Path, Data
ReturnsNothing

merge

Enqueue a modification of an element using the supplied data at the supplied path. If the element does not exists - fail. Associate this request with this transaction. The actual operation is not performed until a commit is issued for this transaction.

ArgumentsTransaction ID, Entity, Datastore, Path, Data
ReturnsNothing

delete

Enqueue a deletion of an element using the supplied data at the supplied path. Associate this request with this transaction. The actual operation is not performed until a commit is issued for this transaction.

ArgumentsTransaction ID, Entity, Datastore, Path
ReturnsNothing

commit

Commit all operations associated with this transaction.

ArgumentsTransaction ID
ReturnsTrue if successful, False if unsuccessful.

If unsuccessful, the server implementation is obliged to rollback and clean-up.

...

Cancel all operations associated with this transaction.

ArgumentsTransaction ID
ReturnsTrue if successful, False if unsuccessful.

The implementation is obliged to rollback and clean-up.

...

Caller may specify transport protocol which will be used to communicate data changes. When omitted, implementation will use same protocol as was used in this request.

ArgumentsEntity, Datastore, Path, Transport
ReturnsURi, DCN Name.

Notes:

  • A good choice for "DCN Notification Name" is a type 4 UUID in textual representation.
  • It is up to the server implementation to decide if it wants to reuse notification endpoints and service two different requesters which have requested the same path using the same notification URI + "DCN Notification Name"

...

Delete data change listener

ArgumentsURI, DCN Name
ReturnsTrue if successful, False otherwise.

Future

These operations are work in progress and are in fact proposals for future functionality

invoke_rpc

Invoke RPC method

ArgumentsMethod name, RPC input
ReturnsRPC output.

publish_notification

Publish notification

ArgumentsNotification name, Payload
ReturnsN/A.