File lio-utils-allow-clearing-discovery-auth.patch of Package lio-utils

From: Lee Duncan <lduncan@suse.com>
Subject: lio-utils: allow clearing discovery auth
References: bnc#893315

When setting a discovery auth atttribute to a NULL string,
we must actually write a NULL byte to reset that attribute.

Acked-by: Lee Duncan <lduncan@suse.com>
---
 lio-py/lio_node.py |   25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff -aurp lio-utils-4.1.orig/lio-py/lio_node.py lio-utils-4.1/lio-py/lio_node.py
--- lio-utils-4.1.orig/lio-py/lio_node.py	2014-08-26 14:59:01.535183056 -0700
+++ lio-utils-4.1/lio-py/lio_node.py	2014-08-26 18:26:35.674551572 -0700
@@ -694,6 +694,15 @@ def lio_target_set_chap_mutual_auth(opti
 	
 	return
 
+def write_to_file(fname, vstr):
+	if not os.path.isfile(fname):
+		return False
+	if not vstr:
+		vstr = "\0"
+	with open(fname, 'w', 0) as sysfile:
+		res = os.write(sysfile.fileno(), vstr)
+	return (res > 0)
+
 def lio_target_set_chap_discovery_auth(option, opt_str, value, parser):
 	user = str(value[0]);
 	password = str(value[1]);
@@ -702,14 +711,10 @@ def lio_target_set_chap_discovery_auth(o
         if not os.path.isdir(auth_dir):
                 lio_err("iSCSI Discovery Authentication directory " + auth_dir + " does not exist")
 
-        setuser_op = "echo -n " + user + " > " + auth_dir + "/userid"
-        ret = os.system(setuser_op)
-        if ret:
+	if not write_to_file(auth_dir + "/userid", user):
 		lio_err("Unable to set CHAP username for iSCSI  Discovery Authentication")
 
-        setpassword_op = "echo -n " + password + " > " + auth_dir + "/password"
-        ret = os.system(setpassword_op)
-        if ret:
+	if not write_to_file(auth_dir + "/password", password):
                 lio_err("Unable to set CHAP password for iSCSI Discovery Authentication")
         else:
                 lio_dbg("Successfully set CHAP authentication for iSCSI Discovery Authentication")
@@ -724,14 +729,10 @@ def lio_target_set_chap_mutual_discovery
 	if not os.path.isdir(auth_dir):
 		lio_err("iSCSI Discovery Authentication directory " + auth_dir + " does not exist")
 
-	setuser_op = "echo -n " + user_mutual + " > " + auth_dir + "/userid_mutual"
-	ret = os.system(setuser_op)
-	if ret:
+	if not write_to_file(auth_dir + "/userid_mutual", user_mutual):
 		lio_err("Unable to set mutual CHAP username for iSCSI Discovery Authentication")
 
-	setpassword_op = "echo -n " + password_mutual + " > " + auth_dir + "/password_mutual"
-	ret = os.system(setpassword_op)
-	if ret:
+	if not write_to_file(auth_dir + "/password_mutual", password_mutual):
 		lio_err("Unable to set mutual CHAP password for iSCSI Discovery Authentication")
 	else:
 		lio_dbg("Successfully set mutual CHAP authentication for iSCSI Discovery Authentication")