summaryrefslogtreecommitdiff
path: root/ncserver/module/nms_ifupdownng.py
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2020-12-08 19:02:46 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2020-12-08 19:02:46 -0600
commitd3d2efbf50a84a83c20a0bedc2b731b4c455c565 (patch)
treeb52b792903ff283e5d7c0318b066670fb37d4617 /ncserver/module/nms_ifupdownng.py
parent2be0c8d53e4ef74e37441189f7aaa8374f8d0dfd (diff)
downloadnetconfapk-d3d2efbf50a84a83c20a0bedc2b731b4c455c565.tar.gz
netconfapk-d3d2efbf50a84a83c20a0bedc2b731b4c455c565.tar.bz2
netconfapk-d3d2efbf50a84a83c20a0bedc2b731b4c455c565.tar.xz
netconfapk-d3d2efbf50a84a83c20a0bedc2b731b4c455c565.zip
NMSA: Add rollback() and transaction() methods
Diffstat (limited to 'ncserver/module/nms_ifupdownng.py')
-rw-r--r--ncserver/module/nms_ifupdownng.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/ncserver/module/nms_ifupdownng.py b/ncserver/module/nms_ifupdownng.py
index 8c92717..0c03fd9 100644
--- a/ncserver/module/nms_ifupdownng.py
+++ b/ncserver/module/nms_ifupdownng.py
@@ -10,6 +10,8 @@ with this source distribution for more information.
SPDX-License-Identifier: NCSA
"""
+from contextlib import contextmanager
+
import logging
import pathlib
import socket
@@ -573,6 +575,28 @@ def commit():
_TRANSACTION = False
+def rollback():
+ """Roll back outstanding operations."""
+ global _TRANSACTION # pylint: disable=W0603
+
+ _load_config()
+ _load_sysctl_cfg()
+
+ _TRANSACTION = False
+
+
+@contextmanager
+def transaction():
+ begin_transaction()
+ try:
+ yield None
+ except:
+ rollback()
+ raise
+ else:
+ commit()
+
+
def get_param(iface: str, parameter: str):
"""Retrieve the parameter for the specified interface."""
_load_config()