Blame SOURCES/bz1750596-fence_scsi-add-readonly-parameter.patch

91f48e
From f1f8fe7791d0bf439f7caf1365c371153f9819ff Mon Sep 17 00:00:00 2001
91f48e
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
91f48e
Date: Thu, 14 May 2020 15:41:52 +0200
91f48e
Subject: [PATCH] fence_scsi: add readonly parameter
91f48e
91f48e
---
91f48e
 agents/scsi/fence_scsi.py          | 21 ++++++++++++++++++---
91f48e
 tests/data/metadata/fence_scsi.xml |  5 +++++
91f48e
 2 files changed, 23 insertions(+), 3 deletions(-)
91f48e
91f48e
diff --git a/agents/scsi/fence_scsi.py b/agents/scsi/fence_scsi.py
91f48e
index 9b6af556..77817f35 100644
91f48e
--- a/agents/scsi/fence_scsi.py
91f48e
+++ b/agents/scsi/fence_scsi.py
91f48e
@@ -150,7 +150,10 @@ def reserve_dev(options, dev):
91f48e
 
91f48e
 def get_reservation_key(options, dev):
91f48e
 	reset_dev(options,dev)
91f48e
-	cmd = options["--sg_persist-path"] + " -n -i -r -d " + dev
91f48e
+	opts = ""
91f48e
+	if "--readonly" in options:
91f48e
+		opts = "-y "
91f48e
+	cmd = options["--sg_persist-path"] + " -n -i " + opts + "-r -d " + dev
91f48e
 	out = run_cmd(options, cmd)
91f48e
 	if out["err"]:
91f48e
 		fail_usage("Cannot get reservation key")
91f48e
@@ -161,7 +164,10 @@ def get_reservation_key(options, dev):
91f48e
 def get_registration_keys(options, dev, fail=True):
91f48e
 	reset_dev(options,dev)
91f48e
 	keys = []
91f48e
-	cmd = options["--sg_persist-path"] + " -n -i -k -d " + dev
91f48e
+	opts = ""
91f48e
+	if "--readonly" in options:
91f48e
+		opts = "-y "
91f48e
+	cmd = options["--sg_persist-path"] + " -n -i " + opts + "-k -d " + dev
91f48e
 	out = run_cmd(options, cmd)
91f48e
 	if out["err"]:
91f48e
 		fail_usage("Cannot get registration keys", fail)
91f48e
@@ -342,6 +348,14 @@ def define_new_opts():
91f48e
 		"shortdesc" : "Use the APTPL flag for registrations. This option is only used for the 'on' action.",
91f48e
 		"order": 1
91f48e
 	}
91f48e
+	all_opt["readonly"] = {
91f48e
+		"getopt" : "",
91f48e
+		"longopt" : "readonly",
91f48e
+		"help" : "--readonly                     Open DEVICE read-only. May be useful with PRIN commands if there are unwanted side effects with the default read-write open.",
91f48e
+		"required" : "0",
91f48e
+		"shortdesc" : "Open DEVICE read-only.",
91f48e
+		"order": 4
91f48e
+	}
91f48e
 	all_opt["logfile"] = {
91f48e
 		"getopt" : ":",
91f48e
 		"longopt" : "logfile",
91f48e
@@ -464,7 +478,8 @@ def main():
91f48e
 
91f48e
 	device_opt = ["no_login", "no_password", "devices", "nodename", "port",\
91f48e
 	"no_port", "key", "aptpl", "fabric_fencing", "on_target", "corosync_cmap_path",\
91f48e
-	"sg_persist_path", "sg_turs_path", "logfile", "vgs_path", "force_on", "key_value"]
91f48e
+	"sg_persist_path", "sg_turs_path", "readonly", "logfile", "vgs_path",\
91f48e
+	"force_on", "key_value"]
91f48e
 
91f48e
 	define_new_opts()
91f48e
 
91f48e
diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml
91f48e
index b840f3cf..d0818b0d 100644
91f48e
--- a/tests/data/metadata/fence_scsi.xml
91f48e
+++ b/tests/data/metadata/fence_scsi.xml
91f48e
@@ -36,6 +36,11 @@ When used as a watchdog device you can define e.g. retry=1, retry-sleep=2 and ve
91f48e
 		<content type="string"  />
91f48e
 		<shortdesc lang="en">Name of the node to be fenced. The node name is used to generate the key value used for the current operation. This option will be ignored when used with the -k option.</shortdesc>
91f48e
 	</parameter>
91f48e
+	<parameter name="readonly" unique="0" required="0">
91f48e
+		<getopt mixed="--readonly" />
91f48e
+		<content type="boolean"  />
91f48e
+		<shortdesc lang="en">Open DEVICE read-only.</shortdesc>
91f48e
+	</parameter>
91f48e
 	<parameter name="logfile" unique="0" required="0">
91f48e
 		<getopt mixed="-f, --logfile" />
91f48e
 		<content type="string"  />