ncs.maapi Module
MAAPI high level module.
This module defines a high level interface to the low-level maapi functions.
The 'Maapi' class encapsulates a MAAPI connection which upon constructing, sets up a connection towards ConfD/NCS. An example of setting up a transaction and manipulating data:
import ncs
m = ncs.maapi.Maapi()
m.start_user_session('admin', 'test_context')
t = m.start_write_trans()
t.get_elem('/model/data{one}/str')
t.set_elem('testing', '/model/data{one}/str')
t.apply()Another way is to use context managers, which will handle all cleanup related to transactions, user sessions and socket connections:
with ncs.maapi.Maapi() as m:
with ncs.maapi.Session(m, 'admin', 'test_context'):
with m.start_write_trans() as t:
t.get_elem('/model/data{one}/str')
t.set_elem('testing', '/model/data{one}/str')
t.apply()Finally, a really compact way of doing this:
with ncs.maapi.single_write_trans('admin', 'test_context') as t:
t.get_elem('/model/data{one}/str')
t.set_elem('testing', '/model/data{one}/str')
t.apply()Functions
connect
Convenience function for connecting to ConfD/NCS.
The 'ip' and 'port' arguments are ignored if path is specified.
Arguments:
ip -- ConfD/NCS instance ip address (str)
port -- ConfD/NCS instance port (int)
path -- ConfD/NCS instance location path (str)
Returns:
socket (Python socket)
retry_on_conflict
Function/method decorator to retry a transaction in case of conflicts.
When executing multiple concurrent transactions against the NCS RUNNING datastore, read-write conflicts are resolved by rejecting transactions having potentially stale data with ERR_TRANSACTION_CONFLICT.
This decorator restarts a function, should it run into a conflict, giving it multiple attempts to apply. The decorated function must start its own transaction because a conflicting transaction must be thrown away entirely and a new one started.
Example usage:
Arguments:
retries -- number of times to retry (int)
log -- optional log object for logging conflict details
single_read_trans
Context manager for a single READ transaction.
This function connects to ConfD/NCS, starts a user session and finally starts a new READ transaction.
Function signature:
For argument db, flags see Maapi.start_trans(). For arguments user, context, groups, src_ip, src_port, proto, vendor, product, version and client_id see Maapi.start_user_session(). For arguments ip, port and path see connect(). For argument load_schemas see init().
Arguments:
user - username (str)
context - context for the session (str)
groups - groups (list)
db -- database (int)
ip -- ConfD/NCS instance ip address (str)
port -- ConfD/NCS instance port (int)
path -- ConfD/NCS instance location path (str)
src_ip - source ip address (str)
src_port - source port (int)
proto - protocol used by for connecting (i.e. ncs.PROTO_TCP)
vendor -- lock error information (str, optional)
product -- lock error information (str, optional)
version -- lock error information (str, optional)
client_id -- lock error information (str, optional)
load_schemas - passed on to Maapi.init()
flags -- additional transaction flags (int)
Returns:
read transaction object (maapi.Transaction)
single_write_trans
Context manager for a single READ/WRITE transaction.
This function connects to ConfD/NCS, starts a user session and finally starts a new READ/WRITE transaction.
Function signature:
For argument db, flags see Maapi.start_trans(). For arguments user, context, groups, src_ip, src_port, proto, vendor, product, version and client_id see Maapi.start_user_session(). For arguments ip, port and path see connect(). For argument load_schemas see init().
Arguments:
user - username (str)
context - context for the session (str)
groups - groups (list)
db -- database (int)
ip -- ConfD/NCS instance ip address (str)
port -- ConfD/NCS instance port (int)
path -- ConfD/NCS instance location path (str)
src_ip - source ip address (str)
src_port - source port (int)
proto - protocol used by the client for connecting (int)
vendor -- lock error information (str, optional)
product -- lock error information (str, optional)
version -- lock error information (str, optional)
client_id -- lock error information (str, optional)
load_schemas - passed on to Maapi.init()
flags -- additional transaction flags (int)
Returns:
write transaction object (maapi.Transaction)
Classes
class CommitParams
Class representing NSO commit parameters.
Start with creating an empty instance of this class and set commit parameters using helper methods.
Members:
class DryRunOutformat
Enumeration for dry run formats: XML = 1 CLI = 2 NATIVE = 3 CLI_C = 4
Members:
class Key
Key string encapsulation and helper.
Initialize a key.
'key' may be a string or a list of strings.
Members:
None
class Maapi
Class encapsulating a MAAPI connection.
Create a Maapi instance.
Arguments:
ip -- ConfD/NCS instance ip address (str, optional)
port -- ConfD/NCS instance port (int, optional)
path -- ConfD/NCS instance location path (str, optional)
msock -- already connected MAAPI socket (socket.socket, optional) (ip, port and path ignored)
load_schemas -- whether schemas should be loaded/reloaded or not LOAD_SCHEMAS_LOAD = load schemas unless already loaded LOAD_SCHEMAS_SKIP = do not load schemas LOAD_SCHEMAS_RELOAD = force reload of schemas
The option LOAD_SCHEMAS_RELOAD can be used to force a reload of schemas, for example when connecting to a different ConfD/NSO node. Note that previously constructed maagic objects will be invalid and using them will lead to undefined behavior. Use this option with care, for example in a small script querying a list of running nodes.
Members:
class NoOverwriteScope
Enumeration for no-overwrite scopes: WRITE_SET_ONLY = 1 WRITE_AND_FULL_READ_SET = 2 WRITE_AND_SERVICE_READ_SET = 3
Members:
class Session
Encapsulate a MAAPI user session.
Context manager for user sessions. This class makes it easy to use a single Maapi connection and switch user session along the way. For example:
Initialize a Session object via start_user_session().
Arguments:
maapi -- maapi object (maapi.Maapi)
for all other arguments see start_user_session()
Members:
class Transaction
Class that corresponds to a single MAAPI transaction.
Initialize a Transaction object.
When created one may access the maapi and th arguments like this:
An instance of this class is also a context manager:
When exiting the with statement, finish() will be called.
If 'th' is left out (or None) a new transaction is started using the 'db' and 'rw' arguments, otherwise 'db' and 'rw' are ignored.
Arguments:
maapi -- a Maapi object (maapi.Maapi)
th -- a transaction handle or None
rw -- Either READ or READ_WRITE flag (ncs)
db -- Either CANDIDATE, RUNNING or STARTUP flag (cdb)
vendor -- lock error information (optional)
product -- lock error information (optional)
version -- lock error information (optional)
client_id -- lock error information (optional)
Members:

