diff options
Diffstat (limited to 'scripts/rtslib-restoreconfig')
-rwxr-xr-x | scripts/rtslib-restoreconfig | 68 |
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) |