
There may be some changes in attributes that cause previously correct values to return with -EINVAL. Report these via stderr but do not return -1, because this will cause systemd to count the entire service start as having failed. Signed-off-by: Andy Grover <agrover@redhat.com>
83 lines
2.1 KiB
Python
Executable File
83 lines
2.1 KiB
Python
Executable File
#!/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_fb import RTSRoot
|
|
import os
|
|
import sys
|
|
|
|
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(" %s clear" % sys.argv[0], file=err)
|
|
print(" default file is: %s" % default_save_file, file=err)
|
|
sys.exit(-1)
|
|
|
|
def save(to_file):
|
|
RTSRoot().save_to_file(save_file=to_file)
|
|
|
|
def restore(from_file):
|
|
|
|
try:
|
|
errors = RTSRoot().restore_from_file(restore_file=from_file)
|
|
except IOError:
|
|
# Not an error if the restore file is not present
|
|
print("No saved config file at %s, ok, exiting" % from_file)
|
|
sys.exit(0)
|
|
|
|
for error in errors:
|
|
print(error, file=err)
|
|
|
|
def clear(unused):
|
|
RTSRoot().clear_existing(confirm=True)
|
|
|
|
funcs = dict(save=save, restore=restore, clear=clear)
|
|
|
|
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()
|
|
|
|
savefile = default_save_file
|
|
if len(sys.argv) == 3:
|
|
savefile = os.path.expanduser(sys.argv[2])
|
|
|
|
funcs[sys.argv[1]](savefile)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|