summaryrefslogtreecommitdiff
path: root/scripts/rtslib-restoreconfig
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rtslib-restoreconfig')
-rwxr-xr-xscripts/rtslib-restoreconfig68
1 files changed, 68 insertions, 0 deletions
diff --git a/scripts/rtslib-restoreconfig b/scripts/rtslib-restoreconfig
new file mode 100755
index 0000000..cc03fbd
--- /dev/null
+++ b/scripts/rtslib-restoreconfig
@@ -0,0 +1,68 @@
+#!/usr/bin/python
+'''
+rtslib-restoreconfig
+
+This file is part of RTSLib.
+Copyright (c) 2013 by Red Hat, Inc.
+
+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.
+'''
+
+#
+# A script to restore LIO configuration from a file in json format
+#
+
+from __future__ import print_function
+
+from rtslib import RTSRoot
+import os
+import sys
+import json
+
+default_save_file = "/etc/target/saveconfig.json"
+err = sys.stderr
+
+if os.geteuid() != 0:
+ print("Must run as root", file=err)
+ sys.exit(-1)
+
+if not len(sys.argv) <= 2 and sys.argv[1] == "--help":
+ print("syntax: %s [file_to_restore_from]" % sys.argv[0], file=err)
+ print(" default file is: %s" % default_save_file, file=err)
+ sys.exit(-1)
+
+if len(sys.argv) == 2:
+ savefile = os.path.expanduser(sys.argv[1])
+else:
+ savefile = default_save_file
+
+if not os.path.isfile(savefile):
+ print("Restore file %s not found" % savefile, file=err)
+ sys.exit(-1)
+
+with open(savefile, "r") as f:
+ try:
+ config = json.loads(f.read())
+ except ValueError:
+ print("Error parsing savefile: %s" % savefile, file=err)
+ sys.exit(-1)
+
+ errors = RTSRoot().restore(config, clear_existing=True)
+
+ if errors:
+ print("Restore failed, %d errors:" % len(errors), file=err)
+
+ for error in errors:
+ print(error, file=err)
+
+ sys.exit(-1)