Initial commit
[ta/config-manager.git] / cmframework / src / cmframework / utils / cmsnapshothandler.py
diff --git a/cmframework/src/cmframework/utils/cmsnapshothandler.py b/cmframework/src/cmframework/utils/cmsnapshothandler.py
new file mode 100644 (file)
index 0000000..32cd82c
--- /dev/null
@@ -0,0 +1,51 @@
+# Copyright 2019 Nokia
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from __future__ import print_function
+import logging
+import json
+
+from cmframework.utils.cmstatehandler import CMStateHandler
+
+
+class CMSnapshotHandler(CMStateHandler):
+    SNAPSHOTS_DOMAIN = 'cm.snapshots'
+
+    def get_data(self, snapshot_name):
+        logging.debug('get_data called for: %s', snapshot_name)
+
+        data_json = self.plugin.get(CMSnapshotHandler.SNAPSHOTS_DOMAIN, snapshot_name)
+
+        return json.loads(data_json)
+
+    def set_data(self, snapshot_name, data):
+        logging.debug('set_properties called for: %s with: %s', snapshot_name, data)
+
+        self.plugin.set(CMSnapshotHandler.SNAPSHOTS_DOMAIN, snapshot_name, json.dumps(data))
+
+    def snapshot_exists(self, snapshot_name):
+        logging.debug('snapshot_exists called for: %s', snapshot_name)
+
+        return self.plugin.get(CMSnapshotHandler.SNAPSHOTS_DOMAIN, snapshot_name) is not None
+
+    def list_snapshots(self):
+        logging.debug('list_snapshots called')
+
+        snapshots = self.plugin.get_domain(CMSnapshotHandler.SNAPSHOTS_DOMAIN)
+
+        return snapshots.keys()
+
+    def delete_snapshot(self, snapshot_name):
+        logging.debug('delete_snapshot called for: %s', snapshot_name)
+
+        self.plugin.delete(CMSnapshotHandler.SNAPSHOTS_DOMAIN, snapshot_name)