Blame SOURCES/bz1376481-1-fence_lpar-fix-monitor-fails.patch

217e50
commit 2a56e0b3fd7ce168afb33b57685a6b1a59a0efe6
217e50
Author: Marek 'marx' Grac <mgrac@redhat.com>
217e50
Date:   Mon Sep 19 10:21:41 2016 +0200
217e50
217e50
    fence_lpar: Add support for IVM
217e50
217e50
diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py
217e50
index 31b0521..de8ce0d 100644
217e50
--- a/fence/agents/lpar/fence_lpar.py
217e50
+++ b/fence/agents/lpar/fence_lpar.py
217e50
@@ -32,7 +32,7 @@ def get_power_status(conn, options):
217e50
 					re.IGNORECASE | re.MULTILINE).search(conn.before).group(1)
217e50
 		except AttributeError:
217e50
 			fail(EC_STATUS_HMC)
217e50
-	elif options["--hmc-version"] == "4":
217e50
+	elif options["--hmc-version"] in ["4", "IVM"]:
217e50
 		conn.send("lssyscfg -r lpar -m "+ options["--managed"] +
217e50
 				" --filter 'lpar_names=" + options["--plug"] + "'\n")
217e50
 		conn.log_expect(options, options["--command-prompt"], int(options["--power-timeout"]))
217e50
@@ -56,7 +56,7 @@ def set_power_status(conn, options):
217e50
 		conn.send("chsysstate -o " + options["--action"] + " -r lpar -m " + options["--managed"]
217e50
 			+ " -n " + options["--plug"] + "\n")
217e50
 		conn.log_expect(options, options["--command-prompt"], int(options["--power-timeout"]))
217e50
-	elif options["--hmc-version"] == "4":
217e50
+	elif options["--hmc-version"] in ["4", "IVM"]:
217e50
 		if options["--action"] == "on":
217e50
 			conn.send("chsysstate -o on -r lpar -m " + options["--managed"] +
217e50
 				" -n " + options["--plug"] +
217e50
@@ -98,7 +98,29 @@ def get_lpar_list(conn, options):
217e50
 
217e50
 		lines = res.group(1).split("\n")
217e50
 		for outlet_line in lines:
217e50
-			(port, status) = outlet_line.split(":")
217e50
+		        try:
217e50
+				(port, status) = outlet_line.split(":")
217e50
+                        except ValueError:
217e50
+                                fail_usage('Output does not match expected HMC version, try different one');
217e50
+			outlets[port] = ("", status)
217e50
+	elif options["--hmc-version"] == "IVM":
217e50
+		conn.send("lssyscfg -r lpar -m " + options["--managed"] +
217e50
+			" -F name,state\n")
217e50
+		conn.log_expect(options, options["--command-prompt"], int(options["--power-timeout"]))
217e50
+
217e50
+		## We have to remove first line (command) and last line (part of new prompt)
217e50
+		####
217e50
+		res = re.search("^.+?\n(.*)\n.*$", conn.before, re.S)
217e50
+
217e50
+		if res == None:
217e50
+			fail_usage("Unable to parse output of list command")
217e50
+
217e50
+		lines = res.group(1).split("\n")
217e50
+		for outlet_line in lines:
217e50
+		        try:
217e50
+				(port, status) = outlet_line.split(",")
217e50
+                        except ValueError:
217e50
+                                fail_usage('Output does not match expected HMC version, try different one');
217e50
 			outlets[port] = ("", status)
217e50
 
217e50
 	return outlets
217e50
@@ -114,11 +136,11 @@ def define_new_opts():
217e50
 	all_opt["hmc_version"] = {
217e50
 		"getopt" : "H:",
217e50
 		"longopt" : "hmc-version",
217e50
-		"help" : "-H, --hmc-version=[version]    Force HMC version to use: 3, 4 (default)",
217e50
+		"help" : "-H, --hmc-version=[version]    Force HMC version to use: 3, 4 (default), ivm",
217e50
 		"required" : "0",
217e50
-		"shortdesc" : "Force HMC version to use (3 or 4)",
217e50
+		"shortdesc" : "Force HMC version to use (3, 4 or IVM)",
217e50
 		"default" : "4",
217e50
-		"choices" : ["3", "4"],
217e50
+		"choices" : ["3", "4", "ivm"],
217e50
 		"order" : 1}
217e50
 
217e50
 def main():
217e50
diff --git a/tests/data/metadata/fence_lpar.xml b/tests/data/metadata/fence_lpar.xml
217e50
index 8c82925..199ca4e 100644
217e50
--- a/tests/data/metadata/fence_lpar.xml
217e50
+++ b/tests/data/metadata/fence_lpar.xml
217e50
@@ -48,8 +48,9 @@
217e50
 		<content type="select" default="4"  >
217e50
 			<option value="3" />
217e50
 			<option value="4" />
217e50
+			<option value="ivm" />
217e50
 		</content>
217e50
-		<shortdesc lang="en">Force HMC version to use (3 or 4)</shortdesc>
217e50
+		<shortdesc lang="en">Force HMC version to use (3, 4 or IVM)</shortdesc>
217e50
 	</parameter>
217e50
 	<parameter name="inet4_only" unique="0" required="0">
217e50
 		<getopt mixed="-4, --inet4-only" />