summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2013-10-28 12:34:49 -0700
committerAndy Grover <agrover@redhat.com>2013-10-28 12:34:49 -0700
commitcc803f63bb06c8e38e8f44d7592fdba17477606e (patch)
tree155b1e610342d68e32ca816ec57f293a561ec49c /scripts
parenta0509f0fb8a0db6f0a7a77568f19dbeb65fef031 (diff)
downloadrtslib-fb-cc803f63bb06c8e38e8f44d7592fdba17477606e.tar.gz
Consolidate save/restore scripts into a single script
Eliminates some duplicate code and has a better name. Still not using configparser yet, hopefully we won't need it. Signed-off-by: Andy Grover <agrover@redhat.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rtslib-restoreconfig68
-rwxr-xr-xscripts/rtslib-saveconfig56
-rwxr-xr-xscripts/targetctl97
3 files changed, 97 insertions, 124 deletions
diff --git a/scripts/rtslib-restoreconfig b/scripts/rtslib-restoreconfig
deleted file mode 100755
index cc03fbd..0000000
--- a/scripts/rtslib-restoreconfig
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/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)
diff --git a/scripts/rtslib-saveconfig b/scripts/rtslib-saveconfig
deleted file mode 100755
index b8791d1..0000000
--- a/scripts/rtslib-saveconfig
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python
-'''
-rtslib-saveconfig
-
-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 save LIO configuration to a file in json format
-#
-
-from __future__ import print_function
-
-from rtslib import RTSRoot
-import os
-import sys
-import stat
-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_save_to]" % sys.argv[0], file=err)
- print(" default file is: %s" % default_save_file, file=err)
- sys.exit(-1)
-
-if len(sys.argv) == 2:
- save_file = os.path.expanduser(sys.argv[1])
-else:
- save_file = default_save_file
-
-with open(save_file+".temp", "w+") as f:
- os.fchmod(f.fileno(), stat.S_IRUSR | stat.S_IWUSR)
- f.write(json.dumps(RTSRoot().dump(), sort_keys=True, indent=2))
- f.write("\n")
- os.fsync(f.fileno())
-
-os.rename(save_file+".temp", save_file)
diff --git a/scripts/targetctl b/scripts/targetctl
new file mode 100755
index 0000000..2871ad8
--- /dev/null
+++ b/scripts/targetctl
@@ -0,0 +1,97 @@
+#!/usr/bin/python
+'''
+targetctl
+
+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 save/restore LIO configuration to/from a file in json format
+#
+
+from __future__ import print_function
+
+from rtslib import RTSRoot
+import os
+import sys
+import stat
+import json
+
+default_save_file = "/etc/target/saveconfig.json"
+err = sys.stderr
+
+def usage():
+ print("syntax: %s save [file_to_save_to]" % sys.argv[0], file=err)
+ print(" %s restore [file_to_restore_from]" % sys.argv[0], file=err)
+ print(" default file is: %s" % default_save_file, file=err)
+ sys.exit(-1)
+
+def save(to_file):
+ with open(to_file+".temp", "w+") as f:
+ os.fchmod(f.fileno(), stat.S_IRUSR | stat.S_IWUSR)
+ f.write(json.dumps(RTSRoot().dump(), sort_keys=True, indent=2))
+ f.write("\n")
+ os.fsync(f.fileno())
+
+ os.rename(to_file+".temp", to_file)
+
+def restore(from_file):
+ if not os.path.isfile(from_file):
+ print("Restore file %s not found" % from_file, file=err)
+ sys.exit(-1)
+
+ with open(from_file, "r") as f:
+ try:
+ config = json.loads(f.read())
+ except ValueError:
+ print("Error parsing savefile: %s" % from_file, 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)
+
+funcs = dict(save=save, restore=restore)
+
+def main():
+ if os.geteuid() != 0:
+ print("Must run as root", file=err)
+ sys.exit(-1)
+
+ if len(sys.argv) < 2 or len(sys.argv) > 3:
+ usage()
+
+ if sys.argv[1] == "--help":
+ usage()
+
+ if sys.argv[1] not in funcs.keys():
+ usage()
+
+ if len(sys.argv) == 3:
+ savefile = os.path.expanduser(sys.argv[1])
+ else:
+ savefile = default_save_file
+
+ funcs[sys.argv[1]](savefile)
+
+if __name__ == "__main__":
+ main()