fence-agents: master - [refactor] Function _update_metadata(..)

Marek GrĂ¡c marx at fedoraproject.org
Thu Dec 4 22:02:42 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=e51702932b482b8ded91a80d43f6f50e797a6373
Commit:        e51702932b482b8ded91a80d43f6f50e797a6373
Parent:        850888570f2d7093efcb73d3e4a6f8d22dcb38c5
Author:        Marek 'marx' Grac <mgrac at redhat.com>
AuthorDate:    Thu Dec 4 16:26:13 2014 +0100
Committer:     Marek 'marx' Grac <mgrac at redhat.com>
CommitterDate: Thu Dec 4 23:00:25 2014 +0100

[refactor] Function _update_metadata(..)

---
 fence/agents/lib/fencing.py.py |   75 +++++++++++++++++++--------------------
 1 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index caef822..370e42f 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -1070,49 +1070,41 @@ def _update_metadata(options):
 	else:
 		all_opt["login"]["required"] = "0"
 
+	available_actions = ["status", "reboot", "off", "on"]
 	if device_opt.count("fabric_fencing"):
+		available_actions.remove("reboot")
 		all_opt["action"]["default"] = "off"
-		if device_opt.count("no_status"):
-			all_opt["action"]["help"] = "-o, --action=[action]          Action: off (default) or on"
-		else:
-			all_opt["action"]["help"] = "-o, --action=[action]          Action: status, off (default) or on"
-	else:
-		if device_opt.count("no_status"):
-			all_opt["action"]["help"] = "-o, --action=[action]          Action: reboot (default), off or on"
+	if device_opt.count("no_status"):
+		available_actions.remove("status")
+	actions_with_default = \
+			[x if not x == all_opt["action"]["default"] else x + " (default)" for x in available_actions]
+	all_opt["action"]["help"] = \
+			"-o, --action=[action]          Action: %s" % (_join2(actions_with_default, last_separator=" or "))
 
 	if device_opt.count("ipport"):
-		if options.has_key("--ipport"):
-			all_opt["ipport"]["help"] = "-u, --ipport=[port]            " + \
-					"TCP/UDP port to use (default " + options["--ipport"] +")"
-		elif all_opt.has_key("ipport") and all_opt["ipport"].has_key("default"):
-			all_opt["ipport"]["help"] = "-u, --ipport=[port]            " + \
-					"TCP/UDP port to use (default " + all_opt["ipport"]["default"] +")"
-		elif device_opt.count("snmp_version"):
-			all_opt["ipport"]["default"] = "161"
-			all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default 161)"
-		elif options.has_key("--ssh") or \
-				(all_opt["secure"].has_key("default") and all_opt["secure"]["default"] == '1'):
-			all_opt["ipport"]["default"] = 22
-			all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default 22)"
-		elif options.has_key("--ssl") or options.has_key("--ssl-secure") or \
-				options.has_key("--ssl-insecure") or \
-				(all_opt["ssl"].has_key("default") and all_opt["ssl"]["default"] == '1'):
-			all_opt["ipport"]["default"] = 443
-			all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default 443)"
-		elif device_opt.count("web"):
-			all_opt["ipport"]["default"] = 80
-			if device_opt.count("ssl") == 0:
-				all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default 80)"
-			else:
-				all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use\n\
-                                        (default 80, 443 if --ssl option is used)"
+		default_value = None
+		default_string = None
+
+		if all_opt["ipport"].has_key("default"):
+			default_value = all_opt["ipport"]["default"]
+		elif device_opt.count("web") and device_opt.count("ssl"):
+			default_value = "80"
+			default_string = "(default 80, 443 if --ssl option is used)"
+		elif device_opt.count("telnet") and device_opt.count("secure"):
+			default_value = "23"
+			default_string = "(default 23, 22 if --ssh option is used)"
 		else:
-			all_opt["ipport"]["default"] = 23
-			if device_opt.count("secure") == 0:
-				all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default 23)"
-			else:
-				all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use\n\
-                                        (default 23, 22 if --ssh option is used)"
+			tcp_ports = {"snmp_version" : "161", "secure" : "22", "telnet" : "23", "web" : "80", "ssl" : "443"}
+			# all cases where next command returns multiple results are covered by previous blocks
+			protocol = [x for x in ["snmp_version", "secure", "ssl", "web", "telnet"] if device_opt.count(x)][0]
+			default_value = tcp_ports[protocol]
+
+		all_opt["ipport"]["default"] = default_value
+		if default_string is None:
+			all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use (default %s)" % \
+					(default_value)
+		else:
+			all_opt["ipport"]["help"] = "-u, --ipport=[port]            TCP/UDP port to use\n" + " "*40 + default_string
 
 def _set_default_values(options):
 	for opt in options["device_opt"]:
@@ -1236,3 +1228,10 @@ def _parse_input_cmdline(avail_opt):
 					opt["--" + all_opt[x]["longopt"]] = dict(entered_opt)[o]
 			opt[o] = dict(entered_opt)[o]
 	return opt
+
+# for ["John", "Mary", "Eli"] returns "John, Mary and Eli"
+def _join2(words, normal_separator=", ", last_separator=" and "):
+	if len(words) <= 1:
+		return "".join(words)
+	else:
+		return last_separator.join([normal_separator.join(words[:-1]), words[-1]])


More information about the cluster-commits mailing list